const int p0 = 33;
const int p1 = 32;
const int p2 = 25;
const int p3 = 26;
const int led1 = 23;
const int led2 = 22;
const int led3 = 21;
const int led4 = 19;
const int led5 = 18;
const int led6 = 5;
const int led7 = 17;
const int led8 = 16;
int leds[]={led1,led2,led3,led4,led5,led6,led7,led8};
int numero_binario = 0;
bool vp0 = false;
bool vp1 = false;
bool vp2 = false;
bool vp3 = false;
void setup() {
Serial.begin(115200);
pinMode(p0, INPUT_PULLUP);
pinMode(p1, INPUT_PULLUP);
pinMode(p2, INPUT_PULLUP);
pinMode(p3, INPUT_PULLUP);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
}
void loop(){
vp0 = digitalRead(p0);
vp1 = digitalRead(p1);
vp2 = digitalRead(p2);
vp3 = digitalRead(p3);
bool num[]={vp0,vp1,vp2,vp3};
bool valor[4];
unsigned int numero_binario = 0;
for (int i=3;i>=0;i--){
valor[i]= !num[i];
numero_binario = (numero_binario << 1) | valor[i]; // volver el arreglo a un numero binario
}
delay(10);
int lectura = numero_binario;
Serial.println(lectura);
int op = 3;
switch(lectura){
case 1:
secuencia1();
break;
case 2:
secuencia2();
break;
case 3:
secuencia3();
break;
case 4:
secuencia4();
break;
case 5:
secuencia5();
break;
case 6:
secuencia6();
break;
case 7:
secuencia7();
break;
case 8:
secuencia8();
break;
case 9:
secuencia9();
break;
default:
Serial.println("Opción no reconocida");
delay(3000);
break;
}
}
void secuencia1 (){
for (int i=0;i<=7;i++){
digitalWrite(leds[i], HIGH);
delay(100);
digitalWrite(leds[i], LOW);
delay(100);
}
for (int i=6;i>0;i--){
digitalWrite(leds[i], HIGH);
delay(100);
digitalWrite(leds[i], LOW);
delay(100);
}
}
void secuencia2 (){
delay(200);
digitalWrite(leds[7], HIGH);
digitalWrite(leds[6], HIGH);
digitalWrite(leds[5], HIGH);
digitalWrite(leds[4], HIGH);
delay(300);
digitalWrite(leds[7], LOW);
digitalWrite(leds[6], LOW);
digitalWrite(leds[5], LOW);
digitalWrite(leds[4], LOW);
delay(200);
digitalWrite(leds[3], HIGH);
digitalWrite(leds[2], HIGH);
digitalWrite(leds[1], HIGH);
digitalWrite(leds[0], HIGH);
delay(300);
digitalWrite(leds[3], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[1], LOW);
digitalWrite(leds[0], LOW);
}
void secuencia3 (){
delay(200);
digitalWrite(leds[7], HIGH);
digitalWrite(leds[5], HIGH);
digitalWrite(leds[3], HIGH);
digitalWrite(leds[1], HIGH);
delay(500);
digitalWrite(leds[7], LOW);
digitalWrite(leds[5], LOW);
digitalWrite(leds[3], LOW);
digitalWrite(leds[1], LOW);
delay(200);
digitalWrite(leds[6], HIGH);
digitalWrite(leds[4], HIGH);
digitalWrite(leds[2], HIGH);
digitalWrite(leds[0], HIGH);
delay(500);
digitalWrite(leds[6], LOW);
digitalWrite(leds[4], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[0], LOW);
}
void secuencia4 (){
for (int i=0;i<=7;i++){
leds[i] |= (1>>i);
digitalWrite(leds[i],HIGH);
delay(100);
}
for (int i=7;i>0;i--){
leds[i] &= ~(1>>i);
digitalWrite(leds[i],LOW);
delay(100);
}
}
void secuencia5 (){
for (int i=4;i<=7;i++){
digitalWrite(leds[i], HIGH);
delay(100);
}
for (int i=3;i>=0;i--){
digitalWrite(leds[i], HIGH);
delay(100);
}
for (int i=4;i<=7;i++){
digitalWrite(leds[i], LOW);
delay(70);
}
for (int i=3;i>=0;i--){
digitalWrite(leds[i], LOW);
delay(70);
}
}
void secuencia6 (){
delay(100);
for (int i=7;i>=0;i--){
digitalWrite(leds[i], HIGH);
delay(80);
}
for (int i=7;i>=0;i--){
digitalWrite(leds[i], LOW);
delay(10);
}
for (int i=0;i<=7;i++){
digitalWrite(leds[i], HIGH);
delay(80);
}
for (int i=7;i>=0;i--){
digitalWrite(leds[i], LOW);
delay(10);
}
}
void secuencia7 (){
delay(200);
digitalWrite(leds[7], HIGH);
digitalWrite(leds[0], HIGH);
delay(200);
digitalWrite(leds[6], HIGH);
digitalWrite(leds[1], HIGH);
delay(200);
digitalWrite(leds[5], HIGH);
digitalWrite(leds[2], HIGH);
delay(200);
digitalWrite(leds[4], HIGH);
digitalWrite(leds[3], HIGH);
delay(200);
for (int i=7;i>=0;i--){
digitalWrite(leds[i], LOW);
delay(10);
}
}
void secuencia8 (){
delay(200);
digitalWrite(leds[4], HIGH);
digitalWrite(leds[3], HIGH);
delay(200);
digitalWrite(leds[5], HIGH);
digitalWrite(leds[2], HIGH);
delay(200);
digitalWrite(leds[6], HIGH);
digitalWrite(leds[1], HIGH);
delay(200);
digitalWrite(leds[7], HIGH);
digitalWrite(leds[0], HIGH);
delay(200);
for (int i=7;i>=0;i--){
digitalWrite(leds[i], LOW);
delay(10);
}
}
void secuencia9 (){
delay(100);
for (int i=0;i<8;i+=2){
digitalWrite(leds[i], HIGH);
delay(200);
}
for (int i=7;i>=1;i-=2){
digitalWrite(leds[i], HIGH);
delay(200);
}
for (int i=7;i>=0;i--){
digitalWrite(leds[i], LOW);
delay(10);
}
}