Hola desde argentina!!
Bueno después de mucho tutorial y google , nuevo en arduino, viejo en edad logre mediante prueba ,error llegar 90% de un código, funciona sin problemas eléctricos ,aunque realizado sin multiplexar ,ni unos shif register ,ni 555, solo leds ,resistencias y un sensor de sonido
ky_037 ,muy simple para ustedes ,pero bastante trabajo me dio, paso al codigo
int pin[] = {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, A0, A1};
//int LED2[]={7,8,9,10,11};
//int LED3[]={12,13,14,16,17};
int LED4[] = {24, 26, 27, 28, 29, 30, 31, 32, 33, 34}; //led slave
int LED5[] = {35, 37, 38, 39, 40, 41, 42, 43, 44, 45}; //led slave
int LED6[] = {48, 49, 50, 51, 52, 53, 21, 20, 19, 18, 17, A0, A1}; //led slave
int cont = 1;
int cont1 = 1;
int cont2 = 1;
int mic = 1;
int i;
int son = 0;
int n = 0;
//arduino mega usando el total de las salidas digital y analogicas ,un sensor de sonido ky_037 y 69 led
void setup() {
for (i = 0; i <= 40; i++) {
pinMode(pin[i], OUTPUT);
digitalWrite(pin[i], HIGH);
}
pinMode(mic, INPUT);
randomSeed(analogRead(0));// funcion aleatoria para los leds esclavos
}
void efec_1() { // funciona ok.led patron encendido ,el microfono detecta un sonido led patron apago y se enciende aleatoriamente uno leds esclavo con un delay y apaga
int cont1 = 1; // obliga al led esclavo a no volver a encender
if (cont <= 1) { //obliga al led patron a no volver a encender
digitalWrite(47, LOW); //led patron efec_1
digitalWrite(36, LOW); // led patron efec_2
digitalWrite(25, LOW); // led patron_efec_ //faltan efec_4 y 5 con igual funcion
for (n = 0; n <= 12; n++) {
n = random(0, 12); // sorteo aleatorio led esclavo
son = digitalRead(mic);
if (son == HIGH) {
while (digitalRead(mic) == HIGH & digitalRead(47), LOW); // leo pin microfono
digitalWrite(47, HIGH); // se apaga led patron
cont = cont + 1; // este cont obliga a volver a encender el patron
if (cont1 <= 1) {
digitalWrite(LED6[n], LOW); //enciende led aleatorio esclavo
delay(1200);
digitalWrite(LED6[n], HIGH);
}
else
digitalWrite(LED6[n], HIGH); //apaga led esclavo
cont1 = cont1 + 1; //
return;
}
}
}
}
void efec_2() { // igual que efec;1 pero apagando el patron led 2
int cont3 = 1;
if (cont1 <= 1) {
digitalWrite(36, LOW);
digitalWrite(47, HIGH);
digitalWrite(25, LOW);
for (n = 0; n <= 9; n++) {
n = random(0, 9);
son = digitalRead(mic);
if (son == HIGH) {
while (digitalRead(mic) == HIGH & digitalRead(36), LOW);
digitalWrite(36, HIGH); //apago la caja
cont1 = cont1 + 1; //apago la caja
if (cont3 <= 1) { //apago la helice
digitalWrite(LED5[n], LOW);
delay(1200);
digitalWrite(LED5[n], HIGH);
}
else
digitalWrite(LED5[n], HIGH);
cont3 = cont3 + 1; //
return;
}
}
}
}
void efec_3() { //igual que los efec_1 y 2 apagandose el led patron 3
int cont4 = 1;
if (cont2 <= 1) {
digitalWrite(25, LOW);
digitalWrite(47, HIGH);
digitalWrite(36, HIGH);
for (n = 0; n <= 9; n++) {
n = random(0, 9);
son = digitalRead(mic);
if (son == HIGH) {
while (digitalRead(mic) == HIGH & digitalRead(25), LOW);
digitalWrite(25, HIGH); //apago la caja
cont2 = cont2 + 1; //apago la caja
if (cont4 <= 1) { //apago la helice
digitalWrite(LED4[n], LOW);
delay(1200);
digitalWrite(LED4[n], HIGH);
}
else
digitalWrite(LED4[n], HIGH);
cont4 = cont4 + 1; //apagp la helice
return;
}
}
}
}
//resumen funciona ok porque comienza con 3 led encendidos (faltan dos efec_) apagandolo el led patron y encendiendo el esclavo
// sin repetir el efec
void primero() { //
efec_1();
efec_2();
efec_3();
//efec_4//
//efec_5//
}
void egundo() { // aca ya no funciona ,porque busco que sea aleatorio el efect
//t
// efec_5
efec_2();
efec_1();
//efec_3();
//efec_4();
}
void loop() {
primero();
egundo();
}
Simulacro cancha tiro escopeta:
tirador en pedana frente a 5 maquinas al pedir una cualquiera se activa (enciende o apaga) un foco (led patron) con en fin de dirigir la escopeta y sale objetivo (led esclavo) una vez disparada la maquina no vuelve a cargarse, el tirador pide tres veses
el tirador siguiente recive otro sorteo de tres diferentes