Stap 3: Basisfunctionaliteit
In deze stap zal we de draadloze modules tot de Teensy aansluiten en gebruiken hen voor het verzenden van een bijdrage aan de computer.Ten eerste, soldeer sommige kop pinnen op de Teensy zodat het kan worden gebruikt in een breadboard.
De zender kan blijven zoals het was in de vorige stap.
De ontvanger als volgt aanpassen:
Ontvanger -> Teensy:
Pin 1 - MS2 - Teensy pin geëtiketteerd "3,3 v (100 mA max)"
Pin 2 - X
Pin 3 - IN1 - Teensy pin 0
Pin 4 - IN2 - Teensy pin 1
Pin 5 - 3 - Teensy pin 2
Pin 6 - X
Pin 7 - X
Pin 8 - GND - eerste Teensy pin geëtiketteerd "GND"
Pin 9 - Vd - Teensy pin geëtiketteerd "3,3 v (100 mA max)"
Pin 10 - X
PIN 11 - MS0 - eerste Teensy pin geëtiketteerd "GND"
Pin 12 - MS1 - Teensy pin geëtiketteerd "3,3 v (100 mA max)"
De Teensy pin nummers en de namen zijn ontleend [http://www.pjrc.com/teensy/card5a.pdf]
De ontvanger zal worden gevoed vanuit de computer van de USB-poort via de Teensy, dus er moet nu niets aansluiten van de twee transceivers.
De input pinnen op de Teensy zijn veranderlijk, maar zorg ervoor dat ze correct zijn ingesteld in de code.
De bijgevoegde code moet vervolgens worden geladen op de Teensy en uitvoeren. Het kan worden gekopieerd als het is, om een schets en vervolgens moet stormloop schoon op de Teensy 3.0.
De code definieert eerst de pennen die in gebruik en hun functies.
Vervolgens declareert het element een paar variabelen voor het opslaan van waarden, zoals de inbreng van de module.
Er is ook een timer instellen voor het debouncing.
De interrupt handler wordt aangeroepen wanneer een interrupt wordt geactiveerd en vervolgens de interrupts schakelt, de invoerwaarden krijgt en vervolgens opnieuw de interrupts maakt.
De interrupt inschakelen en uitschakelen functies koppelen en loskoppelen stijgende rand interrupts op de drie input pinnen respectievelijk.
De ingangsfunctie krijgen gewoon leest in de drie input pinnen en een optionele knop, vervolgens na enkele debouncing, converteert het binaire getal in een decimaal getal invoeren. Tot slot wordt de seriële aansluiting output het resultaat op de computer.
De setup-functie (ongebruikelijke volgorde ik weet!) bepaalt de functie van de pinnen (IE. Input/output), maakt de interrupts en dan knippert de Teensy LED om te laten zien dat het klaar voor gebruik is.
Over het geheel genomen vertelt de code de Teensy te wachten op een input. Wanneer het een input die een interrupt wordt geactiveerd - krijgt is een interrupt een evenement dat ervoor zorgt dat het huidige programma te onderbreken terwijl sommige andere code wordt uitgevoerd. Dus in dit geval het programma doet niets, dan dit niets wordt onderbroken en de interrupt service routine (ISR) wordt genoemd, zodra deze functie is voltooid zal het programma ga dan terug naar niets precies zoals voorheen doen.
Onze ISR eerst schakelt de interrupts, dit is dus de Teensy niet probeert uit te voeren de ISR whist de ISR al actief als dit serieus rommelig met variabele toegang en in het algemeen krijgen kunt undefined gedrag... :-/
Bovendien het debouncing ding... Debouncing is het tegengaan van de mechanische stuiteren. Mechanische weigeringspercentage is de kleine hoeveelheid trilling ervaren door een schakelaar. Dus wanneer u een schakelaar op het is niet alleen een eenvoudig af -> op swap, soms gebeurt het dat de twee connectors eigenlijk elkaar raken en vervolgens stuiteren op en neer voordat hij stabiel, dit mechanische stuiteren heet. Schakel in ons ontwerp de schakelaar aansluiten van de rotary en de zender kan lijden mechanische stuiteren, waardoor de invoer meer dan eens, toegezonden zodat een timer wordt gezet in de code, zodat als er meer dan één invoer wordt ontvangen binnen 100 microseconden alleen de eerste geaccepteerd worden.
Dus in wezen, de code zal wachten op een inbreng Lees de input en output via de seriële aansluiting.
Om te bekijken de uitgang voor seriële, wanneer het programma wordt uitgevoerd, klikt u op de knop Vergrootglas in de rechter bovenhoek van de code-editor van de Arduino. Dit moet worden weergegeven "RFD21733 Interface:" na de LED heeft geflitst.
Als dit allemaal gebeurd correct moet dan de seriële weergave afdrukken de decimale versie van het binaire bestand input gegeven aan de zender.
Als u bent niet in staat om te openen de seriële display of het LED niet flash dan de teensy code niet wordt uitgevoerd, probeert de Teensy resetten.
Als de "RFD21733 Interface:" bericht niet wordt weergegeven dan de ingang test code is niet correct is gedownload, probeer het opnieuw downloaden.
Als er geen output na de oorspronkelijke bericht vervolgens het selectievakje die de pinnen zijn correct in code ingesteld is zodat ze overeenkomen met de verbindingen gemaakt met de hardware. {Dit moet worden ingesteld in de sectie "Constanten" direct na de opmerking "Pin-codes definiëren"}
Ook, Controleer de aansluitingen van de ontvanger aan de Teensy, de macht naar de ontvanger, de zender is ingeschakeld en verzendt (de LED wordt ingeschakeld).
De nummers worden afgedrukt, maar de volgorde niet lijken te komen overeen met de binaire ingang, Controleer dat de minst significante bits verbindt input van 0 en de meest significante bit verbindt input 2.