Paso 5: El código
Aquí es la lógica detrás del código: hay 2 "contador" variables, una para la detección de la blanco y para negro. Al principio, listo para "countmax", que aquí es de 10 segundos. Cada 10 milisegundos, el Arduino busca una detección alta o baja, y establece el contador para lo que encuentra a countmax, mientras que el otro contador se reduce por 10. Si cualquier contador cae por debajo de "countwarn" (2 segundos), el zumbador suena. Si cualquier contador cae por debajo de cero, se apaga el relé para la señal en el cable RCA está abierta y nada va a la TV.
Puede editar las variables para establecer los tiempos de atención y max. Hay un montón de Instructables aquí cerca subir un archivo .ino a Arduino. Estoy usando un Nano, pero la ONU o cualquier otro probablemente debería funcionar. Debe haber mejores formas de escribir el código, pero yo soy un ingeniero civil no un programador de computadoras.
Si lo he hecho bien, bikerelay.ino se une y que es el código que necesita (puede alguien ponerlo en github?). Aquí está la versión de texto feo si eso no funciona:
int ledpin = 13; luz de arduino se activa cuando hay una detección
int ledpin2 = 11; exterior LED o zumbador se activa cuando hay una detección int outputpin = 3; Pin el relé de control está conectado a int sensorpin = 12; Pin el detector está conectado a int warnpin = 4; PIN que se utiliza para activar el contador de advertencia LED o zumbador int = 0; cuenta atrás desde la última detección int counter2 = 0; cuenta regresiva desde últimos de detección no
cambie la configuración a continuación 2 para ajustar el temporizador intervalos int countmax = 10000; nivel máximo de temporizador de cuenta atrás. 1000 = 1 segundo countwarn int = 2000; el momento activar el pin de advertencia. 1000 = 1 segundo void setup() {pinMode (ledpin, salida); pinMode (ledpin2, salida); pinMode (outputpin, salida); pinMode (warnpin, salida); pinMode (sensorpin, entrada); contador = countmax; counter2 = countmax; //any línea con "serial" es para depurar y debe ser comentada si no porque retrasará el reloj / / Serial.begin(9600); //Serial.print ("cuenta:"); Serial.println(Counter); Serial.Print ("count2:"); Serial.println(counter2); } void loop() {si (digitalRead(sensorpin)) //what debe hacer cuando hay una no detección {digitalWrite (ledpin, LOW); digitalWrite (ledpin2, LOW); contador = contador - 10; counter2 = countmax;} //what otra cosa para hacer cuando hay una detección {digitalWrite(ledpin,HIGH); digitalWrite(ledpin2,HIGH); contador = countmax; counter2 = counter2 - 10;}
líneas de salida serie para la depuración //Serial.print ("cuenta:"); Serial.println(Counter); Serial.Print ("count2:"); Serial.println(counter2); Serial.println("---"); suena una advertencia si cualquier contador es superior a 0 pero en el nivel de "countwarn" si (contador > 0 & & contador < countwarn || counter2 > 0 & & counter2 < countwarn) {digitalWrite (warnpin, HIGH);} else {digitalWrite (warnpin, LOW);}
Apague la salida si cualquiera cae contador por debajo de 0 ajustes de //these es para un relé "activo bajo". Interruptor de "Alta" y baja para un activo alto rendimiento si (contador < 0) {digitalWrite (outputpin, HIGH); contador = 0;} else if (counter2 < 0) {digitalWrite (outputpin, HIGH); counter2 = 0;} else {digitalWrite (outputpin, LOW);}
Delay(10); esperar tiempo (milisegundos) antes de ir otra vez
}