Star Trek vägg Comm (8 / 10 steg)
Steg 8: Koden
Här är koden för Arduino. Denna kod kommer att göra arduino slumpmässigt välja ett nummer från 3 till 7, motsvarar utgångsstift som aktiverar en av fyra röst inspelning moduler. Detta kommer att ske efter en röst modul har lät med en båtsman vissling, kännetecken av denna prop. Koden gör dessutom att väggen Comm reagera på panelen sändaren genom att aktivera den arbetande delen av en walkie talkie, men bara när comm knappen aktiveras.
En svårighet i denna kod är den sigVal delen, eftersom det är verkligen svårt att veta när signalen har anlänt, därför måste du sitta ute på serial monitor medan någon är i det andra rummet trycka på knappen varje minut, men efter timmar sitter jag slutligen såg att det var 3.66v upprepas 3 gånger, det var vad som hände när sändaren aktiverades. När du hittar ditt nummer bland seriella bildskärmen, multiplicera det med 1023 och dela det med 5 att få sista numret som går i den "om (sigVal > = 748) {" linje, och beroende på de tider det upprepar sig du vill ändra den "om (säkerhet > = 3) {" linje.
Om denna kod nedan inte fungerar, prova att ladda ner den filen jag har lagt upp, här koden ger dig en "herrelösa" \"i programmet" fel ibland men den andra, som är samma men med mindre kommentarer, inte.
lång randNumber; Ställa in alla stiften
CONST int sigIn = A3;
int säkerhet = 0;
flyta sigVal = 0;
CONST int waltal = 8;
CONST int ABut = 9.
CONST int ALig = 10;
CONST int AKlax = 2;
void setup() {
pinMode(AKlax,OUTPUT); ställa in pin två för alert horn
ställa in 5 digitala stift att produktionen
pinMode(3,OUTPUT); för de andra inspelningen modulerna.
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(waltal,OUTPUT); att göra walkie-talkie pin en utgång
pinMode(ABut,INPUT); Och alert knappen input.
pinMode(ALig,OUTPUT); Ställa in röd alert ljuset till utgång
pinMode(13,OUTPUT);
randomSeed (analogRead(A1)); Att göra saker verkligen är slumpmässiga.
Serial.BEGIN(9600); Bara så jag kunde räkna ut när vi fick en signal.
}
void loop() {
digitalWrite(13,LOW);
sigVal = analogRead(sigIn); läsa och lagra informationen av pin A3
int ABV = digitalRead(ABut); Läst Alert tryckknappen.
Serial.Print ("Matningsspänning =");
Serial.Print(sigVal*5/1023);
Serial.println("");
randNumber = random(3,7); Att få ett slumptal för den
utgång röst modul pins, exept det
7. som kommer att spela varje gång
IF(ABV == High) {//Checking om knappen trycktes
digitalWrite(AKlax,HIGH); Så låter aviseringen
för (int jag = 0; jag < 6; i ++) {
digitalWrite(ALig,HIGH);
Delay(750);
digitalWrite(ALig,LOW);
Delay(750);
}
Delay(10000);
}
annat {//And om inte hålla ckecking för signalen.
om (sigVal > = 748) {
säkerhet ++;
}
annat {
säkerhet = 0;
}
om (säkerhet > = 3) {
digitalWrite(7,HIGH); Här spelar vi första larm
Delay(2000);
digitalWrite(7,LOW);
digitalWrite(randNumber,HIGH); Sen på eof fyra andra moduler.
Delay(7000);
digitalWrite(randNumber,LOW);
säkerhet = 0;
digitalWrite(waltal,HIGH);
Delay(30000);
digitalWrite(waltal,LOW);
Delay(10000);
}
annat {
}
}
}