Stap 2: Leren om te communiceren met externe IR
Laten we leren hoe we-opdrachten kunnen ontvangen uit externe IR. Het doel is te krijgen en te onthouden codes van het signaal van uw afstandsbediening. Wij zullen hen gebruiken verderop in de kever Ringo de schets.
Neem een Arduino Uno, een breadboard (de grootte maakt niet uit op deze stap), springen draden en een IR-ontvanger. Een circuit dat je op de foto's ziet te maken.
WAARSCHUWING! Dit circuit is gemaakt bij de IR ontvanger TSOP2136. Jou kan verschillen. Controleer eerst het gegevensblad voor uw ontvanger.
Nu volg de link en download de broncode. Als je met Git repositories vóór gewerkt kunt dan u vork of deze kloon. En als u nog niet dan u kunt gewoon downloaden van de ZIP-archief van de bronnen directory en pak het ergens aan uw lokale aandrijving.
Start van de Arduino IDE en open project /ir_receiver/ir_receiver.ino. Neem een kijkje op de code. De eerste coderegel is
#include "IRremote.h"
Dat betekent dat de schets een speciale bibliotheek IRremote.h waarmee de functionaliteit van ontvangen en verzenden gebruikt (wij niet gebruiken) IR-signalen. Deze bibliotheek is niet een deel van de Arduino IDE, en moeten we om het te installeren. Het is een open project met GNU licentie zodat we het voor Ringo gebruiken kunnen. Lees de instructie en installeren van de bibliotheek. Vergeet niet om de Arduino IDE opnieuw en opnieuw ir_receiver.ino.
Nu zijn we klaar om te uploaden van de schets. Sluit uw computer en de Arduino Uno via USB-kabel.
Selectievakje menu-item Tools⇒Board in de Arduino IDE. Het moet worden ingesteld op "Arduino Uno".
Vervolgens controleren menu item Tools⇒Serial poort. Het moet worden ingesteld op de poort waarop die de spelbesturing is aangesloten.
Compileren en uploaden van de schets (File⇒Upload).
Vervolgens opent seriële Monitor (Tools⇒Serial Monitor) en controleert u de baud-rate. Ingesteld op 9600.
Een IR afstand te nemen en beginnen te druk op de knoppen. Alles werkt prima als u codes in de seriële Monitor ziet.
Over deze codes... Zoals gezegd zullen we ze gebruiken in de schets die de robot te besturen. Verschillende leveranciers gebruiken verschillende communicatieprotocollen. Dus kunnen codes code sequenties verschillen voor verschillende IR afstandsbedieningen. En het zal moeilijk zijn om ze allemaal begrijpen. Maar ik wil het probleem te vereenvoudigen. Wanneer u op een knop kunt u zien dat meerdere codes worden weergegeven in het venster Serial Monitor. Sommigen van hen terugkeren, anderen zijn uniek. We moeten alleen deze unieke codes. En laten we negeren codes die terugkeren. Sommige leveranciers protocollen gebruiken wanneer er een unieke code voor elke knop. Andere leveranciers gebruiken protocollen met twee geïnterlinieerde unieke codes voor een enkele knop. Ik bedoel dat wanneer u op de knop voor de eerste keer u één code, wanneer u op het voor de tweede keer dat u een andere code. Dan wanneer u het voor de derde keer indrukt krijg je de eerste code weer. En zo verder.
Onze robot kunt 13 opdrachten uitvoeren:
- Vooruit.
- In terugwaartse richting.
- Sla linksaf.
- Rechtsaf.
- Vooruit met linksaf.
- Vooruit met de bocht naar rechts.
- In terugwaartse richting met linksaf.
- In terugwaartse richting met de bocht naar rechts.
- Stop.
- Zet de 1ste snelheid (het langzaamst).
- De snelheid van de 2de instellen.
- De snelheid van de 3e instellen.
- Zet de 4e snelheid (de snelste).
Knoppen op uw IR afstandsbediening voor deze opdrachten selecteren. Ik gebruikte knoppen 1 tot en met 9 voor de eerste negen opdrachten en gekleurde knoppen (rood, groen, geel en blauw) voor de laatste vier.
Nu druk op elke knop meerdere malen en alle unieke codes schrijven naar de tabel met twee kolommen: knop en codes. U gebruikt deze codes in de schets die de robot beheert.