Caută cod

Lecția 14/31-4: Exemplu 1 cu funcția map() în programarea Arduino

Lecția 14/31-4: Exemplu 1 cu funcția map() în programarea Arduino

Acest tutorial face parte dintr-o serie despre programarea Arduino și se concentrează pe utilizarea practică a funcției map(). În această lecție, veți învăța cum să convertiți o valoare procentuală (0–100) într-o valoare PWM (Modulație pe Durată de Impuls) (0–255) pentru a controla luminozitatea unui LED. În loc să calculați manual că 60% înseamnă 153, funcția map() se ocupă de conversia liniară pentru dvs., făcând codul mai curat și mai intuitiv.

Această tehnică este esențială pentru multe aplicații din lumea reală, unde trebuie să traduceți citirile senzorilor sau intrările utilizatorului în intervale diferite. De exemplu, ați putea să o folosiți pentru a:

  • Controla viteza unui motor de curent continuu pe baza citirii unui potențiometru.
  • Afișa valoarea brută a unui senzor de temperatură pe o scară de 0-100%.
  • Mapa coordonatele unui joystick la unghiurile unui servomotor.
  • Regla luminozitatea LED-ului pe baza unui senzor de lumină ambientală.
  • Converti o citire analogică de 0-5V într-o valoare digitală de 0-1023 sau invers.

Hardware/Componente

Pentru a urma acest proiect, veți avea nevoie de următoarele componente:

  • Placă Arduino (Uno, Nano, etc.)
  • Un LED
  • Un rezistor de 220 ohmi
  • Fire de legătură (jumper wires)
  • O breadboard (opțional, dar recomandată)

Ghid de Cablare

În videoclip, instructorul demonstrează proiectul folosind o configurație de cablare dintr-o lecție anterioară despre estomparea LED-ului. Circuitul este simplu: conectați anodul (piciorul lung) al LED-ului la un rezistor de 220 ohmi și conectați celălalt capăt al rezistorului la pinul digital 3 de pe Arduino. Conectați catodul (piciorul scurt) al LED-ului direct la pinul de masă (GND) de pe Arduino.

Explicația Codului

Codul pentru acest exemplu este foarte concis, logica principală aflându-se în funcția setup(). Să descompunem părțile configurabile de utilizator.

int LEDpin = 3; //definește pinul pentru LED

Această linie definește pinul Arduino la care este conectat LED-ul dvs. În acest exemplu, este setat la pinul 3, care este un pin capabil de PWM, necesar pentru ieșirea analogică. Puteți schimba acest număr dacă conectați LED-ul la un alt pin PWM.

int b=8;//luminozitate 60%

Aceasta este variabila cheie pe care o veți modifica pentru a testa diferite niveluri de luminozitate. Reprezintă luminozitatea dorită ca procent. Comentariul din cod spune „60%”, dar valoarea este setată la 8 în scop demonstrativ în videoclip. Puteți schimba aceasta la orice număr întreg între 0 și 100. De exemplu, setarea b = 60 ar reprezenta un nivel de luminozitate de 60%.

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

Aceasta este inima lecției. Funcția map() ia valoarea procentuală (b) și o convertește din intervalul său original (0 la 100) într-un nou interval țintă (0 la 255). Rezultatul este stocat în variabila brightness, care este apoi folosită pentru a scrie o valoare analogică pe pinul LED-ului.

analogWrite(LEDpin, brightness);// aprinde LED-ul cu 60% luminozitate

În final, această linie trimite valoarea mapată către pinul LED-ului folosind analogWrite(). Aceasta setează ciclul de funcționare al LED-ului, controlând efectiv luminozitatea acestuia. Frumusețea acestei abordări este că trebuie doar să schimbați variabila b pentru a controla LED-ul, iar funcția map() se ocupă de toate calculele necesare.

Proiect/Demonstrație Live

În videoclip, instructorul încarcă codul și demonstrează efectul schimbării variabilei b. Când b este setat la 8, monitorul serial afișează valoarea mapată de 20, iar LED-ul este vizibil slab. Schimbarea lui b la 90 rezultă într-o valoare mapată de 229, făcând LED-ul mult mai luminos. Setarea lui b la 100 se mapează la 255, ceea ce reprezintă luminozitate maximă. Această demonstrație practică arată clar cum funcția map() simplifică procesul de control al ieșirilor analogice cu valori procentuale ușor de utilizat.

Proiecte conexe din acest videoclip

Capitole

  • [00:00] Introducere la cursul Arduino de Robojax
  • [01:19] Ce este millis() și de ce să îl folosiți
  • [05:46] Exemplul 1: Folosirea millis() pentru un eveniment temporizat
  • [08:29] Exemplul 2: Folosirea millis() cu un buton
  • [12:14] Exemplul 3: Detectarea unei a doua apăsări de buton după o întârziere
  • [17:20] Introducere la funcția map()
  • [19:47] Parcurgerea codului pentru exemplul map()
  • [20:41] Demonstrație live a funcției map()

Imagini

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Limba: 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() {

 
 }
 

Resurse și referințe

Fișiere📁

Manualul utilizatorului