Arduino Dau

De Wiket
Salta a la navegació Salta a la cerca

Introducció

El projecte consisteix a programar amb Arduino un dau que doni numeros aleatoris entre l'1 i el 9.


Components

Placa Arduino

Botó

Led de 7 segments


Esquema

Aquest és el essquema del projecte:


Set.jpg


Video

https://www.youtube.com/watch?v=eovjYhnGAeE


Codi

int pausa = 50; // Variable que defineix l'interval

// De temps entre cada dígit

int numAle = 0;

void setup ()

{

   Serial.begin(9600);
   pinMode (6,INPUT);
   
   pinMode (7, OUTPUT); // Assignació de les sortides digitals
   pinMode (8, OUTPUT);
   pinMode (9, OUTPUT);
   pinMode (10, OUTPUT);
   pinMode (11, OUTPUT);
   pinMode (12, OUTPUT);
   pinMode (13, OUTPUT);

} void display (int a, int b, int c, int d, int e, int f, int g)

// Funció del display

{

 int i;
 for(i = 7; i <= 13; i++){
   digitalWrite(i, LOW);
 }
 delay(1);
 digitalWrite (7, a); // Es reben 7 variables i s'assignen
 digitalWrite (8, b); // A cadascuna de les sortides
 digitalWrite (9, c);
 digitalWrite (10, d);
 digitalWrite (11, e);
 digitalWrite (12, f);
 digitalWrite (13, g);

}

void contar(int aleato)

{

 if(aleato==1)
 {
    display (0,1,1,0,0,0,0); // Escriu 1
 }
 else if(aleato==2)
 {
    display (1,1,0,1,1,0,1); // Escriu 2
 }
 else if(aleato==3)
 {
    display (1,1,1,1,0,0,1); // Escriu 3
 }
 else if(aleato==4)
 {
    display (0,1,1,0,0,1,1); // Escriu 4
 }
 else if(aleato==5)
 {
    display (1,0,1,1,0,1,1); // Escriu 5
 }
 else if(aleato==6)
 {
     display (1,0,1,1,1,1,1); // Escriu 6
 }
 else if(aleato==7)
 {
     display (1,1,1,0,0,0,0); // Escriu 7
 }
 else if(aleato==8)
 {
     display (1,1,1,1,1,1,1); // Escriu 8
 }
 else if(aleato==9)
 {
     display (1,1,1,0,0,1,1); // Escriu 9
 }
 else if(aleato==0)
 {
   display (0,0,0,0,0,0,1); // Escriu 0       
   
 }

}

void loop () // Funció principal

// Depenent de cada dígit, s'envia a la funció display

// Els estats (0 i 1) a cada un dels segments

{

   randomSeed(analogRead(A0));
  if (digitalRead(6) == HIGH) {
     numAle=random(1, 10);
     contar(numAle);
     delay (pausa);
  }else
  {
    contar(numAle);
    
  }