Stap 6: Programmeren van de Arduino
Dit volgende deel is ook zeer belangrijk. Nogmaals, heeft ASCAS een uitstekende uitleg gegeven. Ik heb geplakt het hieronder (maar controleer zijn pagina):
Inzicht in de App
Voordat u de arduino programmeert, moet u eerst leren hoe de app werkt. Het werk van de app van het herkennen van uw stem commando, het zal dan tonen de woorden die u heb gesproken dan het verzenden van gegevens / snaren aan de arduino via bluetooth. Wat is een string? Een tekenreeks als een woord is, kunt u voorwaardelijke instructies uit het [ex: als (stem == "* computer op") {/ / Pin #2 inschakelen}]. The "voice" is uw tekenreeks, "==" is uw conditie (betekent gelijk aan), "* computer op" is uw opdracht en de code binnen de accolades "{}" zijn de codes die moeten worden uitgevoerd zodra uw tekenreeks overeenkomt met de voorwaarde van de opdracht.
Wat is de indeling van de tekenreeks? Hoe weet het wanneer de volgende opdracht schopt? Hoe het een aantal woorden onderscheiden van een nieuwe opdracht? De app stuurt tekenreeksen in dit formaat * opdracht #, het sterretje (*) geeft aan het begin van een nieuwe opdracht en de hash-tag (#) geeft het einde van een opdracht. Ik was in staat om de hash-tag (#) na elk woord in de voorwaardelijke instructie kon niet het sterretje (*) te verwijderen. U zult moeten om te beginnen met uw opdracht conditie met een sterretje anders die de schets zal niet werken.
Hoe kan ik de opdrachten wijzigen?
U kunt zien dat de "* TV op" uit de afbeelding hierboven is gemarkeerd. Wilt u de opdracht wijzigt, humm laten we zeggen "open garagedeur", kunt u vervangen door de "* TV op" met "* open garagedeur". Altijd onthouden om de opdracht beginnen met een sterretje.
DE CODE
Voice Activated Arduino (Bluetooth + Android) gecodeerd door:
Angelo Casimiro (4/27/14)
Aangepast door: Chloe-Shih (8/25/14)
PROJECT SUITE BROS
Voel je vrij om het te wijzigen maar vergeet niet om krediet te geven
Tekenreeks stem;
String voice2;
int
LED1 = 2, //Connect LED 1 naar Pin #2
LED2 = 3, //Connect LED 2 naar Pin #3
LED3 = 4, //Connect LED 3 Pin #4
LED4 = 5, //Connect LED 4 tot Pin #5
LED5 = 6, //Connect LED 5 tot Pin #6
LED6 = 7, //Connect LED 6 tot Pin #7
LED7 = 8, //Connect LED 7 tot Pin #8 (pinnen hier beginnen onder)
led8 = 9, //Connect LED 8 tot Pin #9
led9 = 10, //Connect LED 9 tot Pin #10
led10 = 11, //Connect LED 10 t/m Pin #11
led11 = 12, //Connect LED 11 tot Pin #12
led12 = 13; LED 12 verbinden met Pin #13
//--------------------------Call A Function-------------------------------//
ongeldig allon() {}
digitalWrite (led1, hoge); Kevin
digitalWrite (led2, hoge); Brit
digitalWrite (led3, hoge); Chloe
digitalWrite (led4, hoge); Kevin's kleur
digitalWrite (led5, hoge); Brit van kleur
digitalWrite (led6, hoge); Chloe's kleur
digitalWrite (led7, hoge); gele midden
digitalWrite (led8, hoge); groene midden
digitalWrite (led9, hoge); blauwe kant
digitalWrite (led10, hoge); rode kant
digitalWrite (led11, hoge); witte onderkant
digitalWrite (led12, hoge); gele onderkant
}
ongeldig alloff() {}
digitalWrite (led1, laag); Kevin
digitalWrite (led2, laag); Brit
digitalWrite (led3, laag); Chloe
digitalWrite (led4, laag); Kevin's kleur
digitalWrite (led5, laag); Brit van kleur
digitalWrite (led6, laag); Chloe's kleur
digitalWrite (led7, laag); gele midden
digitalWrite (led8, laag); groene midden
digitalWrite (led9, laag); blauwe kant
digitalWrite (led10, laag); rode kant
digitalWrite (led11, laag); witte onderkant
digitalWrite (led12, laag); gele onderkant
}
ongeldig partyloop() {}
terwijl (stem == "* partij op") {}
digitalWrite (led4, hoge); de LED inschakelen (HIGH is het spanningsniveau)
digitalWrite (led5, hoge);
digitalWrite (led12, hoge); onder geel
digitalWrite (led6, hoge);
digitalWrite (led7, hoge);
digitalWrite (led8, hoge);
digitalWrite (led9, hoge);
digitalWrite (led10, hoge);
delay(300); wachten op een halve seconde
digitalWrite (led1, hoge);
digitalWrite (led3, hoge);
digitalWrite (led4, laag); de LED uitschakelen door de spanning laag
digitalWrite (led6, laag);
digitalWrite (led7, laag);
digitalWrite (led10, laag);
delay(100);
digitalWrite (led3, laag);
digitalWrite (led1, laag);
digitalWrite (led5, laag);
digitalWrite (led12, laag); onder geel
digitalWrite (led2, hoge);
digitalWrite (led11, hoge); bodem wit
digitalWrite (led4, hoge);
digitalWrite (led6, hoge);
digitalWrite (led8, laag);
digitalWrite (led7, hoge);
digitalWrite (led9, laag);
digitalWrite (led10, hoge);
delay(500);
digitalWrite (led6, laag);
digitalWrite (led1, hoge);
digitalWrite (led3, hoge);
digitalWrite (led4, laag);
digitalWrite (led5, hoge);
digitalWrite (led12, hoge);
digitalWrite (led8, hoge);
digitalWrite (led7, laag);
digitalWrite (led9, laag);
digitalWrite (led10, hoge);
delay(600);
digitalWrite (led1, laag);
digitalWrite (led2, laag);
digitalWrite (led11, laag); bodem wit
digitalWrite (led5, laag);
digitalWrite (led12, laag); onder geel
digitalWrite (led3, laag); stem: "* partij op" op dit moment
digitalWrite (led7, hoge);
digitalWrite (led8, laag);
digitalWrite (led9, hoge);
digitalWrite (led10, laag);
Serial.println ("in lijn");
newVoice(); ontvangt nieuwe stem.
Als (! () voice2.equals(Voice)) & & voice2! = "") {}
stem = voice2;
}
}
Als (stem! = "* partij over" & & stem! = "* partij uit" & & stem! = "* partij kak" & & stem! = "* partij pooper" & & stem! = "* licht uit" & & stem! = "* partij van") {}
stem = "* partij op";
voice2 = "";
partyloop();
}
AllOff(); alle verlichting uitschakelen
}
//-----------------------------------------------------------------------//
ongeldig newVoice() {}
voice2 == ""; duidelijke stem
terwijl (Serial.available()) {//Check als er een beschikbaar byte om te lezen
delay(10); Vertraging toegevoegd ding om stabiel te maken
char c = Serial.read(); Voeren van een seriële lezen
if (c == '#') {
breken;
} //Exit de lus wanneer het # wordt gedetecteerd na het woord
voice2 += c; Afkorting voor voice = stem + c
}
Als (voice2.length() > 0) {}
Serial.println(voice2);
}
}
//-----------------------------------------------------------------------//
VOID Setup {}
Serial.begin(9600);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
pinMode (led4, OUTPUT);
pinMode (led5, OUTPUT);
pinMode (led6, OUTPUT);
pinMode (led7, OUTPUT);
pinMode (led8, OUTPUT);
pinMode (led9, OUTPUT);
pinMode (led10, OUTPUT);
pinMode (led11, OUTPUT);
pinMode (led12, OUTPUT);
}
//-----------------------------------------------------------------------//
void loop {}
terwijl (Serial.available()) {//Check als er een beschikbaar byte om te lezen
delay(10); Vertraging toegevoegd ding om stabiel te maken
char c = Serial.read(); Voeren van een seriële lezen
if (c == '#') {
breken;
} //Exit de lus wanneer het # wordt gedetecteerd na het woord
stem += c; Afkorting voor voice = stem + c
}
Als (voice.length() > 0) {}
Serial.println(Voice);
//-----------------------------------------------------------------------//
---Controle meerdere pinnen / LEDs---/ /
Als (stem == "* alle inschakelen") {allon();} //Turn uit alle pinnen (Bel functie)
anders als (stem == "* alle uitschakelen" || stem == "* uitschakelen" || stem == "* partij over" || stem == "* partij uit" || stem == "* partij van" || stem == "* partij kak" || stem == "* licht uit" || stem == "* licht of"){alloff();} //Turn op alle pinnen (oproep functie)
anders als (stem == "* partij on"){partyloop();}
anders als (stem == "* vrienden op" || stem == "* de suite bros op" || stem == "* de zoete Bros" || stem == "* suite bros op" || stem == "* zoete Bros op") {}
digitalWrite (led1, hoge); Kevin
digitalWrite (led2, hoge); Brit
digitalWrite (led3, hoge); Chloe
}
anders als (stem == "* kant lichten op") {digitalWrite (led9, hoge); digitalWrite (led10, hoge);}
---Zet één-door-één---/ /
anders als (stem == "* Kevin op" || stem == "* kevin op") {digitalWrite (led1, hoge);}
anders als (stem == "* Brit op" || stem == "* Brighton op" || stem == "* Abbie op" || stem == "* abbie op") {digitalWrite (led2, hoge);}
anders als (stem == "* Chloe op") {digitalWrite (led3, hoge);}
anders als (stem == "* glimlach op") {digitalWrite (led11, hoge);}
anders als (stem == "* bericht op") {digitalWrite (led8, hoge); digitalWrite (led7, hoge);}
anders als (stem == "* rode op") {digitalWrite (led10, hoge);}
anders als (stem == "* blauw op") {digitalWrite (led9, hoge);}
---Uitschakelen één-door-één---/ /
anders als (stem == "* Kevin uit" || stem == "* kevin af") {digitalWrite (led1, laag); digitalWrite (led4, laag);}
anders als (stem == "* Brit uit" || stem == "Brighton uit" || stem == "* abbie uit" || stem == "* Abbie van" || stem == "* abbie van" || stem == "* Abbie af") {digitalWrite (led2, laag); digitalWrite (led5, laag);}
anders als (stem == "* Chloe af") {digitalWrite (led3, laag); digitalWrite (led6, laag);}
anders als (stem == "* message uit" || stem == "* boodschap van") {digitalWrite (led7, laag); digitalWrite (led8, laag);}
anders als (stem == "* rode uit" || stem == "* van rode") {digitalWrite (led10, laag);}
anders als (stem == "* blauw uit" || stem == "* blauw van") {digitalWrite (led9, laag);}
anders als (stem == "* glimlach van" || stem == "* glimlach af") {digitalWrite (led11, laag); digitalWrite (led12, laag);}
---Uitschakelen in groep---/ /
anders als (stem == "* vrienden uit" || stem == "* vrienden van" || stem == "suite bros uit" || stem == "* zoete Bros van" || stem == "* zoete Bros uit" || stem == "* zoete bros uit" || stem == "* zoete bros van") {}
digitalWrite (led1, laag); Kevin
digitalWrite (led2, laag); Brit
digitalWrite (led3, laag); Chloe
}
//-----------------------------------------------------------------------//
stem = "" ;}} Reset van de variabele na starten