Stap 15: NOTES ON SCHETS
Drie aspecten van de schets zijn het vermelden waard:
DirectIO bibliotheek
Niet alleen DirectIO bibliotheek maakt lezen van en schrijven naar de Arduino PIN veel sneller, dat ook kunt pinnen te behandelen als variabelen.
In plaats van schrijven
gebruik kunt gewoon schrijven
PinChangeInt bibliotheek
PinChangeInt geeft u toegang tot pin interrupts op alle pinnen van de Arduino. Deze bibliotheek was essentieel voor het coderen van ultrasoonmeting routine zonder het gebruik van pulseIn functie.
Er is niets mis met pulseIn per se, behalve het feit dat het blokkeert functie, dat wil zeggen, totdat de rand van de pols wordt gedetecteerd (of totdat een time-out) er niets anders gebeurt. Aangezien pompoen schets wordt geschreven met coöperatieve multitaskling in gedachten, is dit onaanvaardbaar.
In plaats van pulseIn, is de ultrasone proces onderverdeeld in 3 hoofdstappen:
- Trigger de ultrasone pols
- Val echo pin interrupt aan de rand van de RAISING (start tellen microseconden)
- Val echo pin onderbreken op de vallende rand (halte tellen microseconden)
Terwijl echo reist, kunt microcontroller andere taken uitvoeren.
Gelieve te verwijzen naar de schets voor meer details.
Taakplanner bibliotheek
Taakplanner implementeert coöperatieve multitasking voor Arduino microcontrollers.
Eenmaal u Taakplanner, programmering van Arduino transformaties in het definiëren van een aantal "taken", die het apparaat doen moet, en interacties tussen hen.
De pompoen moet bijvoorbeeld het volgende doen:
- Detecteren van beweging
- Afstand van de maatregel
- "Knipoog" ogen wanneer beweging wordt gedetecteerd
- "Glow" 3 kleuren LED wanneer bepaalde afstand wordt gedetecteerd
- ": Scream" wanneer is iemand echt in de omgeving van
Daarnaast, zijn 3 specifieke "hardware" taken noodzakelijk
- Taak om te controleren van de ogen (knipoog en knipperen)
- Taak naar besturingselement Motors (trillen gedurende een bepaalde tijd)
- Taak naar besturingselement LED (glow)
Elk van de bovenstaande functies wordt gemaakt als een taak. Bijvoorbeeld:
tMotion van de taak wordt eenmaal uitgevoerd, en wenst dat de methode MotionDetectedCallback, die verantwoordelijk is voor het beslissen wat er moet gebeuren zodra er beweging wordt gedetecteerd op basis van de afstand.
taak tTimeout zet pompoen terug om te slapen als geen activiteit plaatsvond gedurende 1 minuut.
Taak tDistance loopt iedere 100 milliseconden en triggers ultrasone afstand meten.
Geen speciale coördinatie is vereist tussen onafhankelijke taken omdat Scheduler is het verzorgen van het.
Expliciete afhankelijkheden tussen de taken worden weerspiegeld in de callback-methoden code, bijvoorbeeld:
Zodra er beweging wordt gedetecteerd, de beweging detectie taak:
- Hiermee stelt u de time-out van taak
- Afstand meten (indien niet reeds was ingeschakeld) in staat stelt
- Controleert als pompoen al is winking, gloeien of schreeuwen
- Als dit niet het geval is, start u taak "winking"
Raadpleeg voor meer informatie over Taakplanner naar de documentatiepagina op arduino.cc
Voor meer informatie Zie ook de pagina schets.