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.

Bookmark and Share


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