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
- Lezione 14/31-1: Arduino Millis (no delay) e funzioni map | SunFounder Robojax
- Lezione 14/31-2: Codice Arduino millis() esempio 2 con evento
- Lezione 14/31-3: Codice Arduino millis() esempio 3 con pulsante
- Lezione 14/31-5: Codice Arduino map() esempio 2
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()
/*
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() {
}
Cose di cui potresti avere bisogno
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Risorse e riferimenti
-
DocumentazioneDocumentazione per il kit di apprendimento SunFounder 3 in 1 IoT/Smart Car.docs.sunfounder.com
-
Esterno
File📁
Manuale dell'utente
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB