Cerca codice

Lezione 14/31-4: Esempio 1 di mappa() nella programmazione Arduino

Lezione 14/31-4: Esempio 1 di mappa() nella programmazione Arduino

Questo tutorial fa parte di una serie sulla programmazione Arduino e si concentra sull'uso pratico della funzione map(). In questa lezione imparerai come convertire un valore percentuale (0–100) in un valore PWM (Pulse Width Modulation) (0–255) per controllare la luminosità di un LED. Invece di calcolare manualmente che il 60% equivale a 153, la funzione map() gestisce la conversione lineare per te, rendendo il tuo codice più pulito e intuitivo.

Questa tecnica è essenziale per molte applicazioni reali in cui devi tradurre letture di sensori o input utente in intervalli diversi. Ad esempio, potresti usarla per:

  • Controllare la velocità di un motore DC in base alla lettura di un potenziometro.
  • Visualizzare il valore grezzo di un sensore di temperatura su una scala 0-100%.
  • Mappare le coordinate di un joystick sugli angoli di un servomotore.
  • Regolare la luminosità di un LED in base a un sensore di luce ambientale.
  • Convertire una lettura analogica 0-5V in un valore digitale 0-1023 o viceversa.

Hardware/Componenti

Per seguire questo progetto, avrai bisogno dei seguenti componenti:

  • Scheda Arduino (Uno, Nano, ecc.)
  • Un LED
  • Una resistenza da 220 ohm
  • Cavi jumper
  • Una breadboard (opzionale, ma consigliata)

Guida al Cablaggio

Nel video, l'istruttore dimostra il progetto utilizzando una configurazione di cablaggio da una lezione precedente sullo sbiadimento del LED. Il circuito è semplice: collega l'anodo (gamba lunga) del LED a una resistenza da 220 ohm e collega l'altra estremità di quella resistenza al pin digitale 3 su Arduino. Collega il catodo (gamba corta) del LED direttamente al pin di terra (GND) su Arduino.

Spiegazione del Codice

Il codice per questo esempio è molto conciso, con la logica principale che risiede nella funzione setup(). Analizziamo le parti configurabili dall'utente.

int LEDpin = 3; //definisce il pin per il LED

Questa riga definisce il pin Arduino a cui è collegato il tuo LED. In questo esempio, è impostato sul pin 3, che è un pin con capacità PWM, necessario per l'uscita analogica. Puoi cambiare questo numero se colleghi il tuo LED a un pin PWM diverso.

int b=8;//60% luminosità

Questa è la variabile chiave che modificherai per testare diversi livelli di luminosità. Rappresenta la luminosità desiderata come percentuale. Il commento nel codice dice "60%", ma il valore è impostato su 8 per scopi dimostrativi nel video. Puoi cambiarlo con qualsiasi numero intero tra 0 e 100. Ad esempio, impostare b = 60 rappresenterebbe un livello di luminosità del 60%.

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

Questo è il cuore della lezione. La funzione map() prende il tuo valore percentuale (b) e lo converte dal suo intervallo originale (0 a 100) a un nuovo intervallo target (0 a 255). Il risultato viene memorizzato nella variabile brightness, che viene poi utilizzata per scrivere un valore analogico al pin del LED.

analogWrite(LEDpin, brightness);// accende il LED con luminosità al 60%

Infine, questa riga invia il valore mappato al pin del LED usando analogWrite(). Questo imposta il ciclo di lavoro del LED, controllando efficacemente la sua luminosità. La bellezza di questo approccio è che devi solo cambiare la variabile b per controllare il LED, e la funzione map() gestisce tutti i calcoli necessari.

Progetto/Dimostrazione dal Vivo

Nel video, l'istruttore carica il codice e dimostra l'effetto del cambiamento della variabile b. Quando b è impostato su 8, il monitor seriale stampa il valore mappato di 20, e il LED è visibilmente spento. Cambiando b a 90 si ottiene un valore mappato di 229, rendendo il LED molto più luminoso. Impostando b a 100 si mappa a 255, che è la luminosità massima. Questa dimostrazione pratica mostra chiaramente come la funzione map() semplifichi il processo di controllo delle uscite analogiche con valori percentuali facili da usare.

Progetti correlati da questo video

Capitoli

  • [00:00] Introduzione al Corso Arduino di Robojax
  • [01:19] Cos'è millis() e perché usarlo
  • [05:46] Esempio 1: Usare millis() per un evento temporizzato
  • [08:29] Esempio 2: Usare millis() con un pulsante
  • [12:14] Esempio 3: Rilevare una seconda pressione del pulsante dopo un ritardo
  • [17:20] Introduzione alla funzione map()
  • [19:47] Analisi del codice per l'esempio map()
  • [20:41] Dimostrazione dal vivo della funzione map()

Immagini

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

 
 }
 

File📁

Manuale dell'utente