Suchcode

Lektion 14/31-4: Arduino-Codierung map()-Beispiel 1

Lektion 14/31-4: Arduino-Codierung map()-Beispiel 1

Dieses Tutorial ist Teil einer Serie über Arduino-Programmierung und konzentriert sich auf die praktische Anwendung der map()-Funktion. In dieser Lektion lernen Sie, wie Sie einen Prozentwert (0–100) in einen PWM-Wert (Pulsweitenmodulation) (0–255) umwandeln, um die Helligkeit einer LED zu steuern. Anstatt manuell zu berechnen, dass 60 % gleich 153 sind, übernimmt die map()-Funktion die lineare Umrechnung für Sie, wodurch Ihr Code sauberer und intuitiver wird.

Diese Technik ist für viele reale Anwendungen unerlässlich, bei denen Sie Sensorwerte oder Benutzereingaben in andere Bereiche übersetzen müssen. Zum Beispiel könnten Sie sie verwenden, um:

  • Die Geschwindigkeit eines Gleichstrommotors basierend auf einem Potentiometerwert zu steuern.
  • Den Rohwert eines Temperatursensors auf einer 0-100%-Skala anzuzeigen.
  • Joystick-Koordinaten auf Servomotorwinkel abzubilden.
  • Die LED-Helligkeit basierend auf einem Umgebungslichtsensor anzupassen.
  • Einen 0-5V-Analogwert in einen 0-1023-Digitalwert umzuwandeln oder umgekehrt.

Hardware/Komponenten

Um dieses Projekt nachzuvollziehen, benötigen Sie die folgenden Komponenten:

  • Arduino-Board (Uno, Nano usw.)
  • Eine LED
  • Einen 220-Ohm-Widerstand
  • Jumper-Kabel
  • Ein Steckbrett (optional, aber empfohlen)

Verdrahtungsanleitung

Im Video demonstriert der Dozent das Projekt mit einem Verdrahtungsaufbau aus einer vorherigen Lektion zum LED-Dimmen. Die Schaltung ist einfach: Verbinden Sie die Anode (langes Bein) der LED mit einem 220-Ohm-Widerstand und verbinden Sie das andere Ende dieses Widerstands mit Digitalpin 3 am Arduino. Verbinden Sie die Kathode (kurzes Bein) der LED direkt mit dem Masse-Pin (GND) am Arduino.

Code-Erklärung

Der Code für dieses Beispiel ist sehr prägnant, wobei sich die Kernlogik in der setup()-Funktion befindet. Lassen Sie uns die benutzerkonfigurierbaren Teile aufschlüsseln.

int LEDpin = 3; //defind pin for LED

Diese Zeile definiert den Arduino-Pin, an den Ihre LED angeschlossen ist. In diesem Beispiel ist er auf Pin 3 gesetzt, einen PWM-fähigen Pin, der für den analogen Ausgang erforderlich ist. Sie können diese Zahl ändern, wenn Sie Ihre LED an einen anderen PWM-Pin anschließen.

int b=8;//60% brightness

Dies ist die wichtigste Variable, die Sie ändern, um verschiedene Helligkeitsstufen zu testen. Sie repräsentiert die gewünschte Helligkeit als Prozentsatz. Der Kommentar im Code sagt „60 %", aber der Wert ist für Demonstrationszwecke im Video auf 8 gesetzt. Sie können dies auf jede ganze Zahl zwischen 0 und 100 ändern. Zum Beispiel würde das Setzen von b = 60 eine Helligkeit von 60 % darstellen.

int brightness = map(b, 0, 100, 0,255);

Dies ist das Herzstück der Lektion. Die map()-Funktion nimmt Ihren Prozentwert (b) und wandelt ihn von seinem ursprünglichen Bereich (0 bis 100) in einen neuen Zielbereich (0 bis 255) um. Das Ergebnis wird in der Variablen brightness gespeichert, die dann verwendet wird, um einen analogen Wert an den LED-Pin zu schreiben.

analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness

Schließlich sendet diese Zeile den umgewandelten Wert mit analogWrite() an den LED-Pin. Dadurch wird das Tastverhältnis der LED eingestellt, wodurch effektiv ihre Helligkeit gesteuert wird. Das Schöne an diesem Ansatz ist, dass Sie nur die Variable b ändern müssen, um die LED zu steuern, und die map()-Funktion übernimmt alle notwendigen Berechnungen.

Live-Projekt/Demonstration

Im Video lädt der Dozent den Code hoch und demonstriert die Wirkung der Änderung der Variablen b. Wenn b auf 8 gesetzt ist, zeigt der serielle Monitor den umgewandelten Wert von 20 an, und die LED ist sichtbar dunkel. Das Ändern von b auf 90 ergibt einen umgewandelten Wert von 229, wodurch die LED viel heller wird. Das Setzen von b auf 100 wird auf 255 abgebildet, was voller Helligkeit entspricht. Diese praktische Demonstration zeigt deutlich, wie die map()-Funktion den Prozess der Steuerung analoger Ausgänge mit benutzerfreundlichen Prozentwerten vereinfacht.

Verwandte Projekte aus diesem Video

Kapitel

  • [00:00] Einführung in den Arduino-Kurs von Robojax
  • [01:19] Was ist millis() und warum es verwenden
  • [05:46] Beispiel 1: Verwendung von millis() für ein zeitgesteuertes Ereignis
  • [08:29] Beispiel 2: Verwendung von millis() mit einem Druckknopf
  • [12:14] Beispiel 3: Erkennen eines zweiten Tastendrucks nach einer Verzögerung
  • [17:20] Einführung in die map()-Funktion
  • [19:47] Code-Durchlauf für das map()-Beispiel
  • [20:41] Live-Demonstration der map()-Funktion

Bilder

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Sprache: C++
/*
Lesson 14/31: Arduino coding map( ) example-1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
int LEDpin = 3; //defind pin for LED
                   
 
 void setup() {
    Serial.begin(9600);//initialize serial monitor with 9600 baud
    pinMode(LEDpin, OUTPUT);//set pin as output
    int b=8;//60% brightness
    int brightness = map(b, 0, 100, 0,255);
    Serial.println(brightness);//print it on serial monitor
    analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness   
 }

 void loop() {

 
 }
 

Ressourcen & Referenzen

Dateien📁

|||Benutzerhandbuch