Nota

Ciao, benvenuto nella Community SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara & Condividi: Scambia suggerimenti e tutorial per migliorare le tue abilità.

  • Anteprime Esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotti e anteprime.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni Festive e Omaggi: Partecipa a promozioni e omaggi durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!

5.6 Map

Se osservi attentamente, noterai che molti valori hanno intervalli diversi in programmazione. Ad esempio, l’intervallo di valori per gli ingressi analogici è (0~1023). L’intervallo di valori per l’uscita analogica è (0~255). L’angolo di uscita del servo è (0~180).

Questo significa che, se vogliamo utilizzare il potenziometro per controllare la luminosità del LED o l’angolo del servo, dobbiamo eseguire un’operazione di mappatura.

Ora vediamo come farlo.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un intero kit, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda SunFounder R3

ACQUISTA

Breadboard

ACQUISTA

Cavi di Collegamento

ACQUISTA

Servo

ACQUISTA

Potenziometro

ACQUISTA

Schema Elettrico

../_images/circuit_8.3_amp.png

Collegamenti

../_images/map_bb.jpg

Codice

Nota

  • Apri il file 5.6.map.ino nel percorso 3in1-kit\basic_project\5.6.map.

  • Oppure copia questo codice nell”Arduino IDE.

  • Oppure carica il codice tramite il Arduino Web Editor.

Dopo aver caricato correttamente il codice, puoi ruotare avanti e indietro il potenziometro, e l’albero di uscita del servo ruoterà avanti e indietro.

Come funziona?

map(value, fromLow, fromHigh, toLow, toHigh): Mappa un numero da un intervallo a un altro. Ovvero, un valore da fromLow viene mappato a toLow, e un valore da fromHigh viene mappato a toHigh.

Sintassi

map(value, fromLow, fromHigh, toLow, toHigh)

Parametri
  • value: il numero da mappare.

  • fromLow: il limite inferiore dell’intervallo corrente.

  • fromHigh: il limite superiore dell’intervallo corrente.

  • toLow: il limite inferiore dell’intervallo di destinazione.

  • toHigh: il limite superiore dell’intervallo di destinazione.

Se il potenziometro controlla il LED, puoi anche usare la mappatura per completare il compito.

int x = analogRead(knob);
int y = map(x,0,1023,0,255);
analogWrite(led,y);

Note e Avvertenze

  • Il «limite inferiore» di entrambi gli intervalli può essere maggiore o minore del «limite superiore», il che significa che la funzione map() può essere utilizzata per invertire un intervallo di numeri.

    y = map(x,0,180,180,0);
    
  • La mappatura funziona anche bene per i numeri negativi.

    y = map(x,0,1023,-90,90);
    
  • La mappatura utilizza numeri interi e le cifre decimali dei numeri a virgola mobile vengono scartate.