Questo è il primo (semplice) progetto realizzato con Arduino.
Come si nota dal video, è stato utilizzato un display (ad anodo comune) che conta da 0 fino a 9 e viceversa.
Al termine del conteggio, ossia quando si arriva a 9 oppure a 0, il puntino in basso a destra nel display (praticamente la virgola) viene fatto lampeggiare alcune volte.
Il pin corrispondente all’anodo comune dei led che formano il display è collegato al pin 5V della scheda Arduino, mentre gli altri 8 pin sono collegati ai vari pin settati come output digitali.
Tra i pin della scheda e quelli del display sono state aggiunte anche le opportune resistenze da 12Kohm.
Di seguito è illustrato il programma presente nel microcontrollore (ATMega 328).
int ledPin1=0;
int ledPin2=1;
int ledPin3=2;
int ledPin4=3;
int ledPin5=4;
int ledPin6=5;
int ledPin7=6;
int ledPin8=7;
void setup()
{
pinMode(ledPin1,OUTPUT);
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
pinMode(ledPin4,OUTPUT);
pinMode(ledPin5,OUTPUT);
pinMode(ledPin6,OUTPUT);
pinMode(ledPin7,OUTPUT);
pinMode(ledPin8,OUTPUT);
}
void outNumber(int n)
{
if (n==0)
{
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,HIGH);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,LOW);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
if (n==1)
{
digitalWrite(ledPin1,HIGH);
digitalWrite(ledPin2,HIGH);
digitalWrite(ledPin3,HIGH);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,HIGH);
digitalWrite(ledPin6,HIGH);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
if (n==2)
{
digitalWrite(ledPin1,HIGH);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,LOW);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,HIGH);
digitalWrite(ledPin8,HIGH);
}
if (n==3)
{
digitalWrite(ledPin1,HIGH);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,HIGH);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
if (n==4)
{
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,HIGH);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,HIGH);
digitalWrite(ledPin6,HIGH);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
if (n==5)
{
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,HIGH);
digitalWrite(ledPin5,HIGH);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
if (n==6)
{
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,HIGH);
digitalWrite(ledPin5,LOW);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
if (n==7)
{
digitalWrite(ledPin1,HIGH);
digitalWrite(ledPin2,HIGH);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,HIGH);
digitalWrite(ledPin6,HIGH);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
if (n==8)
{
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,LOW);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
if (n==9)
{
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,HIGH);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,HIGH);
}
}
void carica()
{
for(int i=0;i<4;i++){
digitalWrite(ledPin8,LOW);
delay(100);
digitalWrite(ledPin8,HIGH);
delay(100);
}
}
void loop()
{
carica();
int k=0;
for(k=0;k<=9;k++)
{
outNumber(k);
delay(200);
}
carica();
for(k=k;k>=0;k--)
{
outNumber(k);
delay(200);
}
}
La funzione carica() si occupa di far lampeggiare il punto in basso a destra nel display, mentre la funzione outNumber(int n) accetta come parametro un numero intero (in questo caso da 0 a 9) in base al quale verranno opportunamente modificate le uscite del microcontrollore per rappresentare il giusto valore nel display.










It‘s quite in here! Why not leave a response?