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);
    
  }