Stap 10: Software
Hoofdlus
het hoofdprogramma loopt door deze code, controle voor een reden om te spelen een monster;
Repeat
seatstatus := seatposition
lightstatus := checklight
IF (lightstatus == 1 AND seatstatus == 1)
playaudio(string("cover.wav"))
IF (lightstatus == 0 AND seatstatus == 1)
playaudio(string("seat.wav"))
IF (lightstatus == 3 AND seatstatus == 0)
playaudio(string("light.wav"))
Ten eerste, het wordt de methode seatposition uitgevoerd en slaat de waarde die wordt geretourneerd in de variabele seatstatus. Dan doet het het zelfde ding met checklight, de geretourneerde waarde op te slaan in lightstatus.
Als lightstatus 1 en seatstatus == == 1, is de zetel en het lampje brandt. Toilet buddy doorgaat en speelt cover.wav. Als het licht is weg en de stoel is, wordt de seat.wav gespeeld.
Als lightstatus == 3, waardoor de lichte time-out heeft bereikt. Dan de light.wav bestand speelt.
checklight
Deze methode controleert of het badkamer licht op. Het gebruikt het rctime-object (een deel van de Propeller Tool download) om dat te bereiken. Het laadt van de condensator verbonden met de fotoweerstand en telt hoe lang het duurt om de kwijting met een enkele lijn;
RC.RCTIME(phresistor,1,
De variabele RCValue wordt het opslaan van het tijdstip van de geen kwijting. Als het groter dan de termijn is, betekent dat niet zeer veel licht is het raken van de fotoweerstand, en wij 0 terug te keren. Als meer licht het raakt, we verhogen de lichte timer en return 1, totdat we de lichte timer-limiet is bereikt.
seatposition
We controleren de status van de zitplaats met deze methode. We gebruiken ir-object om dit te bereiken, dat ook deel uitmaakt van de Propeller Tool download. Eerst, hebben wij te vertellen van de ir-methode welke pinnen de IR LED en de ontvanger zijn aangesloten op - we doen dit aan het begin van het programma
ir.init(IRAnode, IRCathode, IRSensor)
Vervolgens, wanneer wij ir.distance vragen, het zal terugkeren naar de gemeten afstand van een object voor de sensor.
playaudio
Deze methode zorgt eigenlijk voor het afspelen van audio. Het is een vereenvoudigde versie van rayman van wav speler. Ten eerste, het opent het bestand dat hebben wij gevraagd. Het leest vervolgens de header om te zien als het wav-bestand 44 of 48khz is. Het begint dan de wav-speler in een tweede kern. Onze eerste kern vult vervolgens de audio buffer voor de tweede kern.
Het belangrijke ding in gedachten te houden is deze speler zal alleen afspelen 16-bits stereo wavs. Ook moeten de koppen op het wav-bestand leeg zodat de speler de samplefrequentie kunt vinden.