venerdì 3 febbraio 2012

Dal 'blinking' al 'fading'

La volta scorsa abbiamo visto come fare lampeggiare (blinking) un led con arduino, acceso/spento (1/0) sono il fondamento della logica "binaria" o "digitale"; una uscita digitale può generare solo questi due livelli che nel caso di arduino corrispondono alle tensioni +3.3V e 0V (per approfondimenti sulle "famiglie logiche" e i vari livelli di tensioni vedere: http://it.wikipedia.org/wiki/Famiglia_logica ).

  Fornendo al led delle tensioni intermedie via via crescenti: 0V, 0.1V, 0.2V,... o decrescenti (3.3V, 3.2V, 3.1V,...) è possibile creare un effetto di accensione e spegnimento più "morbido" (fading).
  Per fare questo è necessario però utilizzare una uscita ANALOGICA, ossia capace di gestire i diversi livelli di tensione e non solo il livello logico di '1' (+3.3Volt) e di '0' (0 Volt).
  Arduino dispone di un certo numero di porte digitali che si possono comportare anche come uscite analogiche (utilizzando un sistema chiamato Pulse Width Modulation - http://it.wikipedia.org/wiki/Pulse-width_modulation) e sono identificate sulla scheda con la scritta: PWM oppure abbreviato con il simbolo '~'. Sulla mia scheda (arduino UNO) tali PIN sono: 3,5,6,9,10,11 per cui potrei decidere se usare tali porte come analogiche o digitali.

Utilizziamo questa volta un altro esempio già pronto nel menù del nostro ambiente di sviluppo: File->Examples->1.Basics->Fade


 Il codice che apparirà nell'editor è quello riportato qui sotto (ho numerato le righe così è più semplice indicarle quando le spiego):




  1. /*
  2.  Fade
  3.  
  4.  This example shows how to fade an LED on pin 9
  5.  using the analogWrite() function.
  6.  
  7.  This example code is in the public domain.
  8.  
  9.  */
  10. int brightness = 0;    // how bright the LED is
  11. int fadeAmount = 5;    // how many points to fade the LED by

  12. void setup()  { 
  13.   // declare pin 9 to be an output:
  14.   pinMode(9, OUTPUT);

  15. void loop()  { 
  16.   // set the brightness of pin 9:
  17.   analogWrite(9, brightness);    

  18.   // change the brightness for next time through the loop:
  19.   brightness = brightness + fadeAmount;

  20.   // reverse the direction of the fading at the ends of the fade: 
  21.   if (brightness == 0 || brightness == 255) {
  22.     fadeAmount = -fadeAmount ; 
  23.   }     
  24.   // wait for 30 milliseconds to see the dimming effect    
  25.   delay(30);                            
  26. }


nelle righe 10 e 11 vengono definite due variabili di tipo intero (due "contenitori" di numeri interi ognuno con un nome), brightness conterrà inizialmente il valore '0', mentre fadeAmount è stata inizializzata a 5.


   Nelle righe da 13 a 16 è definita la sezione (forse sarebbe più preciso chiamarla "funzione" ma lo vedremo la prossima volta) setup in cui viene impostato il pin 9 come uscita (nella riga 15)

   Successivamente, dalla 18 alla 31 è definita la funzione loop dove viene descritto il comportamento ciclico che la nostra scheda dovrà avere.
In particolare alla riga 20 troviamo una istruzione per "scrivere" un valore analogico sul PIN numero 9, il valore che verrà scritto inizialmente è il contenuto della variabile brightness ossia '0'.
   Alla riga 23 il valore di brightness contenuto viene cambiato incrementandolo della quantità fadeAmount che vale 5.
   Successivamente (righe 26-28) viene controllato se il valore della variabile che abbiamo appena modificato sia uguale al limite inferiore (0) o superiore (255) nel caso in cui si sia raggiunto uno dei due limiti la quantità di incremento (fadeAmount) viene cambiata di segno e quindi: nei primi cicli fadeAmount è +5, quando brightness raggiunge il valore di 255 fadeAmount
cambia di segno e diventa -5 e ogni volta che verrà eseguita la riga 23 toglierà 5 al valore di brightness fino a portarlo a '0' e a questo punto cambierà di nuovo di segno, e così via...
   Tra un ciclo e un altro è posta una pausa di 30 millisecondi alla riga 30.

Collegamento del DIODO-LED
Questa volta, poiché i fori della "massa" (GND) e del polo positivo (numero 9) sono relativamente distanti occorrerà piegare in maniera opportuna i piedini del componente...
 E infine potrà essere infilato nei fori adatti (mi raccomando, per vedere il LED accendersi la polarità dovrà essere rispettata)
A questo punto è possibile collegare la scheda al PC tramite il cavo USB e fare l'upload del programma su arduino.


È possibile fare un upload oltre che attraverso il pulsante sull'editor , visto la scorsa volta, anche attraverso il menù come in figura:


oppure utilizzando la scorciatoia: Ctrl+U.

A questo punto il nostro led si accende e si spegne in maniera più "soft" mostrandoci le varie intensità luminose...

A presto.

Nessun commento:

Posta un commento