Arduino powered Haunted Mansion sjungande byster (2 / 3 steg)
Steg 2: Programvara: låter gå till chefen för klassen
Som jag sade i inledningen använde jag främst fyra bitar av programvara för att köra detta projekt (alla är gratis) är de:
- Min programmerade Arduino UNO
- AutoHotKey (Windows makro program)
- AAC nycklar (Vänder sig seriell in in tangenttryckningar)
- VLC (uppspelning av video)
Jag också min Windows bakgrund till svart och gömde sig i Aktivitetsfältet så att ingenting visas när videon inte spelar.
Här är koden för AutoHotKey skriften:
a::
Kör, c:\Program Files\VideoLAN\VLC\vlc.exe-jag rc "VIDEO_FILE_NAME"
Sömn, 61000; Paus för video att spela, förhindrar utlöser flera gånger.
Processen, nära, vlc.exe; Döda vlc och se till att det förblir döda.
Returnera
Som ni ser är det ganska enkelt. När "en"-tangenten är nedtryckt lanseras VLC med argument för att dölja allt utom själva videon. Skriptet väntar på längden på videon (61 sekunder) då det stänger VLC för att återställa och köra igen.
Arduino skiss är inte mycket mer komplicerade väntar den tills fotocellen utlöses, sedan skickar "a" nyckeln till datorn via USB (som AAC nycklar förvandlas till en tangenttryckning) och väntar på 61 sekunder innan den kan aktiveras igen.
/*
Seriella tangentbord
Används för att skicka tangenttryckningar till en Windows-dator med AACKeys.exe som
förvandlar seriella data till tangenttryckningar. Bästa används tillsammans med
AutoHotKey.
Exempel och idé baserad på arbete av http://www.arkadian.eu och
information från http://wwww.ladyada.net
TheNewHobbyist 2010 < http://www.thenewhobbyist.com>
*/
Initiera variabler
CONST int buttonPin = 2;
CONST int ledPin = 13.
int buttonState = 0;
Ställ in inpout/utgång och börja följetong
void setup() {
pinMode (ledPin, produktionen);
pinMode (buttonPin, ingång);
Serial.BEGIN(9600);
}
Huvudkoden loop
void loop() {
buttonState = digitalRead(buttonPin);
om (buttonState == hög) {
digitalWrite (ledPin, hög);
Serial.Print("a"); sända nyckel till PC att starta videouppspelning
Delay(61000); Ignorera indata till video ändar
}
annat {
Inaktivera LED:
digitalWrite (ledPin, låg);
}
}