Paso 7: Programación Arduino
Con la electrónica y sonido set, cargado el software de arduino. Aquí debajo está el código completo que utiliza.
La cabeza enojada se queja de ruido y movimiento (general havoc) en cualquier momento se activa el sensor de PIR. Programé un chill-out para evitar accionar demasiado a menudo.
La terca cabecita también le grita airadamente si cualquier luz perturba su sueño sagrado. El sensor de luz detecta niveles de luz de 0 a 256 niveles, por lo que he probado depurar los niveles de luz para fijar el umbral adecuado para las quejas.
He creado 5 sonidos de estragos y otro 5 luces, por lo que el pobre culpable atrapado por esa bestia enojada sabrá por qué los ladridos.
/**********************************
Portas Digitais 2, 3, 4, 6 Analogica A0
Fuente 9V
***********************************/
#include
int resetPin = 2; El número de pin del pin de reset.
clockPin int = 3; El número de pin del pin de reloj.
dataPin int = 4; El número de pin del pin de datos.
int busyPin = 5; El número de pin del pin busy.
int detectou_Atividade = 0; Indica se PIR 800 detectou atividade
int detectou_Luz = 0; Se indica luz foi añadida
int modo_Busca_ON = 0;
int valor_Luz = 100;
int som_Movimento = 0; de 0 a 4
int som_Luz = 5; de 5 a 9
agora_mili largo, fim_mili;
hora_final_ping largo, hora_atual_ping;
int intervalo_min_ping = 100;
#define pin_Presenca 6
#define pin_LeituraLuz 0
Wtv020sd16p(resetPin,clockPin,dataPin,busyPin) de Wtv020sd16p;
void setup() {}
Serie de Belkin para depuración
Serial.Begin(9600);
Reseta modulo de som WTV020
wtv020sd16p.Reset();
Inicia PIR800 - presenca
pinMode (pin_Presenca, entrada);
int calibrationTime = 20;
dar el sensor de tiempo para calibrar
Serial.Print ("Calibrando sensor de presença");
para (int i = 0; i < calibrationTime; i ++) {}
Serial.Print(".");
Delay(1000); }
Serial.println ("hecho");
Serial.println ("SENSOR activo");
Delay(50);
} //Setup
void loop() {}
Checa sensor presenca se houver movimento ativa deteccao
int valPresenca;
Si (modo_Busca_ON == 0) {valPresenca = digitalRead(pin_Presenca); delay(50);}
Si ((valPresenca == LOW) & & (modo_Busca_ON == 0)) {delay(450);}
Si ((valPresenca == HIGH) & & (modo_Busca_ON == 0)) {}
detectou_Atividade = 1;
modo_Busca_ON = 1; valPresenca = bajo;
Serial.println ("Detectou Atividade!!"); }
Teste luz int leituraLuz;
leituraLuz = analogRead(pin_LeituraLuz);
Serial.Print ("LUZ--->"); Serial.println(leituraLuz);
Si ((leituraLuz > valor_Luz) & & (modo_Busca_ON == 0))
{/ / Acenderam a Luz! detectou_Luz = 1; modo_Busca_ON = 1;}
atualiza_estados();
} / / Lazo principal
void atualiza_estados() {}
Atualiza estados de todos os componentes
Si ((modo_Busca_ON == 1) & & (detectou_Atividade == 1)) {}
Achou alguem se mexendo
Toca som de algu estoy mexendo se
Serial.println ("Vai tocar musica 0");
wtv020sd16p.playVoice(som_Movimento);
Si (som_Movimento == 4) {som_Movimento = 0;} else {som_Movimento ++;}
Delay(8000);
Serial.Print ("Acabou Musica - Movimento -");
Serial.println(som_Movimento);
modo_Busca_ON = 0;
detectou_Atividade = 0; }
Si ((modo_Busca_ON == 1) & & (detectou_Luz == 1)) {}
Acenderam una luz
Serial.println ("Vai tocar musica 0 por conta da luz");
wtv020sd16p.playVoice(som_Luz);
Si (som_Luz == 9) {som_Luz = 5;} else {som_Luz ++;}
Delay(8000);
Serial.Print ("Acabou Musica - luz -");
Serial.println(som_Luz);
modo_Busca_ON = 0;
detectou_Luz = 0;
}
} / / Atualiza Estados
}