Buenos dias!
Este es mi primer post y llevo tiempo trasteando de manera intermitente con arduino.
Os presento mi problema.
El otro dia me plante hacer una bomba dummy al estilo Counter Strike. He copiado un codigo pre-existente y lo he modificado.
Al arrancar el proyecto, se inicia una secuencia y una cuenta atras.Al mantener pulsado el boton y cuando haga internamente una cuenta de 5 ejecuta otra parte del codigo que la desactiva.
El proyecto esta montado sobre un arduino UNO con 3 LEDS, 1 Speaker, y 1 Boton montado en PULL-DOWN, montado todo sobre una protptype shield v5
El problema es que la entrada del boton da falsos estados, aun cuando esta desconectado y no se por que sucede.
He probado a forzar el estado "LOW" para el boton, pero aun desconectando todos los pins me da falso "HIGH".
#define red 8
#define Speaker 12
#define blue 9
#define Green 10
float times;
float delays = 1000;
float delays2 = 500;
float X;
void setup() {
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(Speaker, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(6, INPUT);
myfunction();
}
void myfunction() {
delays2 = delays2/2.0;
digitalWrite(Green, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(Green, LOW);
delay(delays2);
digitalWrite(Green, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(Green, LOW);
delay(delays2);
digitalWrite(Green, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(Green, LOW);
delay(delays2);
digitalWrite(Green, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(Green, LOW);
delay(delays2);
}
void loop() {
Serial.println(digitalRead(6));
delays = delays/1.03;
if (times < 1200){
times += 1;
tone(Speaker, 4000, delays);
digitalWrite(red, HIGH);
delay(delays);
digitalWrite(red, LOW);
digitalWrite(Speaker, LOW);
delay(delays);
}
if (times == 1200){
tone(Speaker, 500, 3000);
digitalWrite(blue, HIGH);
delay(19999999);
}
if (digitalRead (6) == HIGH){
X +=1;
digitalWrite(blue, HIGH);
tone(Speaker, 3600, delays);
delay(1000);
digitalWrite(blue, LOW);
digitalWrite(Speaker, LOW);
delay(1000);
}
if (X == 4 ){
times = 1230;
defuse();
}
}
void defuse() {
digitalWrite(Green, HIGH);
tone(Speaker, 2000, 100);
delay(100);
digitalWrite(Green, LOW);
digitalWrite(blue, HIGH);
tone(Speaker, 1000, 100);
delay(100);
digitalWrite(blue, LOW);
digitalWrite(red, HIGH);
tone(Speaker, 2000, 100);
delay(100);
digitalWrite(red, LOW);
delay(100);
digitalWrite(Green, HIGH);
delay(1999999);
}
Muchas gracias!