Diferència entre revisions de la pàgina «Arduino Dau»
Salta a la navegació
Salta a la cerca
(→Video) |
|||
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:
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); }