Diferència entre revisions de la pàgina «Arduino Dau»

De Wiket
Salta a la navegació Salta a la cerca
Línia 25: Línia 25:
  
 
https://www.youtube.com/watch?v=eovjYhnGAeE
 
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);
 +
   
 +
  }

Revisió del 12:00, 1 juny 2016

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