Stap 2: Software: loslaat op het hoofd van de klasse
Zoals ik al zei in de inleiding dat ik voornamelijk gebruikt vier stukken van de software voor het uitvoeren van dit project (die allemaal zijn gratis) zijn:
- Mijn geprogrammeerde Arduino UNO
- AutoHotKey (Windows macro programma)
- AAC sleutels (Seriële inbreng toetsaanslagen verandert)
- VLC (afspelen van de video)
Ik kan mijn Windows-achtergrond ingesteld op zwart en verborg de taakbalk zodat niets weergegeven wanneer de video niet aan het spelen was.
Hier is de code voor de AutoHotKey script:
a::
Run, c:\Program Files\VideoLAN\VLC\vlc.exe-ik rc "VIDEO_FILE_NAME"
Slaap, 61000; Onderbreken voor video wordt afgespeeld, voorkomt triggering meerdere keren.
Proces, nauwe, vlc.exe; Doden van vlc en ervoor te zorgen dat het blijft dood.
Terugkeer
Zoals u is het vrij eenvoudig zien kunt. Wanneer de "a"-toets is ingedrukt wordt VLC gelanceerd met argumenten voor het verbergen van alles behalve de video zelf. Het script wacht op de lengte van de video (61 seconden) en het sluit VLC om te herstellen en opnieuw uit te voeren.
De Arduino schets is niet veel ingewikkelder dat het wacht totdat de fotocel wordt geactiveerd, dan de "a" toets naar de computer via USB stuurt (die AAC toetsen verandert in een toetsaanslag) en wacht totdat 61 seconden voordat het opnieuw kan worden geactiveerd.
/*
Seriële toetsenbord
Gebruikt voor het verzenden van toetsaanslagen naar een Windows-PC met AACKeys.exe die
seriële data verandert in toetsaanslagen. Het best gebruikt in combinatie met
AutoHotKey.
Voorbeelden en idee gebaseerd op het werk van http://www.arkadian.eu en
informatie van http://wwww.ladyada.net
TheNewHobbyist 2010 < http://www.thenewhobbyist.com>
*/
Initialiseren van variabelen
Const int buttonPin = 2;
Const int ledPin = 13;
int buttonState = 0;
Stel inpout/uitgang en start seriële
VOID Setup {}
pinMode (ledPin, OUTPUT);
pinMode (buttonPin, INPUT);
Serial.begin(9600);
}
Belangrijkste code lus
void loop {}
buttonState = digitalRead(buttonPin);
Als (buttonState == HIGH) {}
digitalWrite (ledPin, hoge);
Serial.Print("a"); sleutel verzenden PC video afspelen te starten
delay(61000); negeren van de ingang tot het einde van de video
}
else {}
LED uitschakelen:
digitalWrite (ledPin, laag);
}
}