Es mas conveniente utilizar la función randomSeed() que la función random(), ya que si en la función randomSeed() implementamos una semilla diferente realmente nos va a generar números al azar. Como ejercicio haremos un dado electrónico doble y explicaremos el código.
Aquí pueden descargar el código y modificarlo a su gusto:
Suscríbete a mi canal y de esta manera apoyas mi trabajo. http://www.youtube.com/subscription_center?add_user=cmarinv2005
// Juego de Memoria dados electronicos
// Recuerden por favor apoyar mi canal de Youtube
// Modificado por: Robotica, impresion 3D y algo mas...
#define d1_1 2
#define d1_2 3
#define d1_3 4
#define d1_4 5
#define d1_5 6
#define d1_6 7
#define d1_7 8
#define d2_1 A2
#define d2_2 A3
#define d2_3 A4
#define d2_4 A5
#define d2_5 9
#define d2_6 10
#define d2_7 11
#define pulsador 12
int varpulsador=0;
long randomNumber1=0.0;
long randomNumber2=0.0;
void setup(){
Serial.begin(9600);
pinMode(pulsador, INPUT);
pinMode(d1_1, OUTPUT);
pinMode(d1_2, OUTPUT);
pinMode(d1_3, OUTPUT);
pinMode(d1_4, OUTPUT);
pinMode(d1_5, OUTPUT);
pinMode(d1_6, OUTPUT);
pinMode(d1_7, OUTPUT);
pinMode(d2_1, OUTPUT);
pinMode(d2_2, OUTPUT);
pinMode(d2_3, OUTPUT);
pinMode(d2_4, OUTPUT);
pinMode(d2_5, OUTPUT);
pinMode(d2_6, OUTPUT);
pinMode(d2_7, OUTPUT);
Apagar_dado1();
Apagar_dado2();
}
void loop(){
varpulsador=digitalRead(pulsador);
if(varpulsador==HIGH){
for(int i=0;i<=8;i++){
randomSeed(analogRead(A0));
randomNumber1=random(1,6);
randomSeed(analogRead(A1));
randomNumber2=random(1,6);
Apagar_dado1();
Apagar_dado2();
delay(150);
Encender_dado1();
Encender_dado2();
delay(150);
}
randomSeed(analogRead(A0));
randomNumber1=random(1,6);
Serial.println(randomNumber1);
Apagar_dado1();
Encender_dado1();
randomSeed(analogRead(A1));
randomNumber2=random(1,6);
Serial.println(randomNumber2);
Apagar_dado2();
Encender_dado2();
if(randomNumber1==randomNumber2)
{
for(int i=0;i<=4;i++){
Apagar_dado1();
Apagar_dado2();
delay(250);
Encender_dado1();
Encender_dado2();
delay(250);
}
}
delay(250);
}
}
void Apagar_dado1(){
digitalWrite(d1_1,LOW);
digitalWrite(d1_2,LOW);
digitalWrite(d1_3,LOW);
digitalWrite(d1_4,LOW);
digitalWrite(d1_5,LOW);
digitalWrite(d1_6,LOW);
digitalWrite(d1_7,LOW);
}
void Apagar_dado2(){
digitalWrite(d2_1,LOW);
digitalWrite(d2_2,LOW);
digitalWrite(d2_3,LOW);
digitalWrite(d2_4,LOW);
digitalWrite(d2_5,LOW);
digitalWrite(d2_6,LOW);
digitalWrite(d2_7,LOW);
}
void Encender_dado1(){
if (randomNumber1==1){
digitalWrite(d1_4,HIGH);
}
if (randomNumber1==2){
digitalWrite(d1_1,HIGH);
digitalWrite(d1_7,HIGH);
}
if (randomNumber1==3){
digitalWrite(d1_1,HIGH);
digitalWrite(d1_4,HIGH);
digitalWrite(d1_7,HIGH);
}
if (randomNumber1==4){
digitalWrite(d1_1,HIGH);
digitalWrite(d1_3,HIGH);
digitalWrite(d1_5,HIGH);
digitalWrite(d1_7,HIGH);
}
if (randomNumber1==5){
digitalWrite(d1_1,HIGH);
digitalWrite(d1_3,HIGH);
digitalWrite(d1_4,HIGH);
digitalWrite(d1_5,HIGH);
digitalWrite(d1_7,HIGH);
}
if (randomNumber1==6){
digitalWrite(d1_1,HIGH);
digitalWrite(d1_2,HIGH);
digitalWrite(d1_3,HIGH);
digitalWrite(d1_5,HIGH);
digitalWrite(d1_6,HIGH);
digitalWrite(d1_7,HIGH);
}
}
void Encender_dado2(){
if (randomNumber2==1){
digitalWrite(d2_4,HIGH);
}
if (randomNumber2==2){
digitalWrite(d2_1,HIGH);
digitalWrite(d2_7,HIGH);
}
if (randomNumber2==3){
digitalWrite(d2_1,HIGH);
digitalWrite(d2_4,HIGH);
digitalWrite(d2_7,HIGH);
}
if (randomNumber2==4){
digitalWrite(d2_1,HIGH);
digitalWrite(d2_3,HIGH);
digitalWrite(d2_5,HIGH);
digitalWrite(d2_7,HIGH);
}
if (randomNumber2==5){
digitalWrite(d2_1,HIGH);
digitalWrite(d2_3,HIGH);
digitalWrite(d2_4,HIGH);
digitalWrite(d2_5,HIGH);
digitalWrite(d2_7,HIGH);
}
if (randomNumber2==6){
digitalWrite(d2_1,HIGH);
digitalWrite(d2_2,HIGH);
digitalWrite(d2_3,HIGH);
digitalWrite(d2_5,HIGH);
digitalWrite(d2_6,HIGH);
digitalWrite(d2_7,HIGH);
}
}
Comments