Hola. espero estar preguntando en el lugar correcto. Paso a explicar, estoy queriendo hacer para mis chicos un juego de esos de arma laser con chalecos.
Viendo y recopilando info por varias paginas y tutoriales logre hacer un código, no es lo esperado pero para una primer versión me conformo.
Cabe aclarar que es la primera vez que hago esto, siempre fue ver y copiar algunos proyectos de los miles que hay en Internet.
Bueno el código en una primer etapa es el arma, la cual tiene un led IR o Laser de disparo y 9 leds que representan las municiones.
Al pulsador le puse antirrebote para que solo cuente cuando suelto el pulsador, pero esto causa que el led laser quede encendido.
Lo ideal seria que por mas pulsado el botón el led con un delay de un segundo e apague. Oh la otra opción es que si mantienes apretado el pulsador gaste municiones.
int irled = 12;
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;
int led7 = 8;
int led8 = 9;
int led9 = 10;
int tiro = 0;
int contador = 0;
int estadoCero = 0;
int boton = 0;
void setup() {
Serial.begin(9600);
pinMode(irled, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(boton, INPUT);
}
void loop() {
tiro = digitalRead(0);
if (tiro == HIGH) {
digitalWrite (irled, HIGH);
}
else {
digitalWrite(irled, LOW);
}
int pl = digitalRead(boton);
if (pl != estadoCero) {
if (pl == HIGH)
{
contador++;
Serial.println(contador);
}
}
estadoCero = pl;
if (contador == 1) {
digitalWrite(led1, HIGH);
}
if (contador == 2) {
digitalWrite(led2, HIGH);
}
if (contador == 3) {
digitalWrite(led3, HIGH);
}
if (contador == 4) {
digitalWrite(led4, HIGH);
}
if (contador == 5) {
digitalWrite(led5, HIGH);
}
if (contador == 6) {
digitalWrite(led6, HIGH);
}
if (contador == 7) {
digitalWrite(led7, HIGH);
}
if (contador == 8) {
digitalWrite(led8, HIGH);
}
if (contador == 9) {
digitalWrite(led9, HIGH);
}
if (contador == 10) {
digitalWrite(irled, LOW);
delay(1000);
digitalWrite(led9, LOW);
delay(200);
digitalWrite(led8, LOW);
delay(300);
digitalWrite(led7, LOW);
delay(400);
digitalWrite(led6, LOW);
delay(500);
digitalWrite(led5, LOW);
delay(600);
digitalWrite(led4, LOW);
delay(800);
digitalWrite(led3, LOW);
delay(900);
digitalWrite(led2, LOW);
delay(950);
digitalWrite(led1, LOW);
delay(900);
contador = 0;
}
}