RyujiAndy Inviato 24 Novembre 2012 Condividi Inviato 24 Novembre 2012 (modificato) Regolare l'intensità di un LED tramite un potenziometro Abbiamo già visto in precedenza come gestire un segnale PWM per regolare l'intensità di un LED, ora vorrei introdurre i pin analogici per regolare manualmente questo segnale. Costruendo il seguente circuito: http://www.nonsologaming.com/vd/arduino_led_potv1.png notiamo che ho collegato un potenziometro al pin A0, questo perchè arduino è in grado di misurare la differenza di potenziale tra 0V e 5V e restituisce come verdremo in seguito un valore compreso tra 0 e 1023. Ora per comodità definiamo le variabili che tengono conto dei pin dove abbiamo collegato il LED ed il nostro potenziometro: int pinpot = 0; int pinled = 9; Ora ci servono altre due variabili dove andremo a memorizzare lo stato del potenziometro ed il relativo valore del segnale PWM per regolare l'intensità del led: int valpot = 0; int valled = 0; Come sempre dobbiamo inizializzare i pin tramite la funzione "void setup": void setup() { pinMode(pinled, OUTPUT); } Il pin A0 non è necessario definire perchè è già un input analogico. tramite a funzione "analogRead" possiamo leggere la differenza di potenziale presente tra il cursore e la massa. Se guardiamo il simbolo elettrico del potenziometro è come se avessimo due resistenze che variano a seconda della posizione del cursore e quindi la differenza di potenziale di R2 cambia. Dobbiamo tenere in considerazione una proporzione tra il valore del segnale PWM che è compreso tra 0 e 255 e il valore restituito dal pin analogico, compreso tra 0 e 1024, quest'ultimo è 4 volte superiore al primo e quindi possiamo scrivere il nostro loop: void loop() { valpot = analogRead(pinpot); valled = valpot / 4; analogWrite(pinled, valled); delay(10); } Ora vorrei introdurre una nuova funzione: il rimappamento. Questa serve per scalare un valore tenendo conto di 2 margini differenti: restituzione = map(valore, da minimo, da massimo, a minimo, a massimo); ora applichiamolo al nostro programma: int pinpot = 0; int pinled = 9; int valpot = 0; int valled = 0; void setup() { pinMode(pinled, OUTPUT); } void loop() { valpot = analogRead(pinpot); valled = map(valpot, 0, 1023, 0, 255); analogWrite(pinled, valled); delay(10); } Schema elettrico: http://www.nonsologaming.com/vd/arduino_led_potv2.png Modificato 27 Novembre 2012 da RyujiAndy Link al commento Condividi su altri siti Altre opzioni di condivisione...
ManuelX Inviato 24 Novembre 2012 Condividi Inviato 24 Novembre 2012 Yes Grande Andy! Ormai son costretto a prenderlo per poter provare tutti questi Link al commento Condividi su altri siti Altre opzioni di condivisione...
joker1989 Inviato 27 Novembre 2012 Condividi Inviato 27 Novembre 2012 ryu potresti fare un articolo su come poter utilizzare per esempio un buzzer e lo schermo lcd ? fare tipo un timer che allo schadere del tempo suona il buzzer ed eventualmente un led? Link al commento Condividi su altri siti Altre opzioni di condivisione...
tizio45 Inviato 27 Novembre 2012 Condividi Inviato 27 Novembre 2012 io ne so fare uno per una rele con keypad, cioè un relè che si eccita solo se è premuto un codice esatto ma non riesco a inserire un cicalino Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Crea un account o accedi per lasciare un commento
Devi essere un membro per lasciare un commento
Crea un account
Iscriviti per un nuovo account nella nostra community. È facile!
Registra un nuovo accountAccedi
Sei già registrato? Accedi qui.
Accedi Ora