Ik vind het belangrijk dat Bas on Tech door iedereen kosteloos gebruikt kan worden.
Help mij de toekomst van Bas on Tech te verzekeren. Je donatie zal o.a. worden gebruikt voor hosting, video's en onderhoud.
Alvast bedankt!
PS. iDEAL en Bancontact vind je onder het "Direct Debit" tabblad in de 4e stap.
In deze video maak ik nog gebruik van IRremote v2.0 Op https://github.com/Arduino-IRremote/Arduino-IRremote#converting-your-2x-program-to-the-3x-version staan de stappen om hem voor 3.0 geschikt te maken
Een afstandsbediening heeft iets magisch: door de lucht gegevens versturen zonder dat je aan een draad vast zit. In deze deze Nederlandstalige Arduino tutorial voor beginners ga ik je uitleggen hoe je dit zelf kunt maken 😃
Onderaan op deze pagina vind je de knop lesmateriaal waarmee je het lesmateriaal kunt downloaden. Dit materiaal bestaat uit de code, schakelschema en andere bestanden die in de les worden gebruikt.
De afstandsbediening in deze tutorial maakt gebruik van infrarood. Dit kan door mensen niet worden waargenomen. Soms kun je via je telefoon dit licht zichtbaar maken. Open op je telefoon de camera. Richt nu een afstandsbediening richting de lens. Je ziet dan het lampje oplichten. De signalen van de afstandsbediening kunnen niet door materialen heen. Daarom werkt de afstandsbediening niet als er iemand bijvoorbeeld de ontvanger afdekt.
Als de ontvanger alleen maar kijkt of het lampje op de afstandsbediening aan
staat, dan kunnen we maar 1 signaal versturen. Op de meeste afstandsbedieningen zitten veel meer knoppen. Om het verschil tussen verschillende knoppen te zien is een slimme truc gebruikt: knipperen. Door de snelheid van het knipperen aan te passen kan de ontvanger veel meer signalen onderscheiden.
Aan de bovenkant van ontvanger lijkt een LED te zitten. Dit is het echter niet. Hier zit de IR ontvanger. Verder heeft de ontvanger drie pins:
-
of GND
is de aarde (ground)+
of Vcc
is 5VS
of TRIG
is de signaal pinVia de S
pin kunnen we straks de ontvanger uitlezen.
Druk de HX1838 VS1838in het breadboard en sluit de volgende jumper wires aan:
GND
op de Arduino -> de linker pin van de sensor5V
op de Arduino -> de middelste pin van de sensor12
op de Arduino -> de rechter pin van de sensorOok in deze les maken we gebruik van een bibliotheek. Deze bibliotheek regelt alle afhandeling van de IR signalen:
1 #include <IRremote.h>
Mocht je deze nog niet hebben, dan kun je ze installeren via de Arduino IDE:
Zoek hier op IRremote
, als het goed is vind je dan de bibliotheek van shirriff.
We beginnen de code met het definiëren van twee variabelen:
1 int IrReceiverPin = 12;
2 decode_results results;
IrReceiverPin
is de pin waarop we de trigger
hebben aangesloten.results
is de variabele waar we het de ontvangen knop-code in opslaan. Deze is van het type decode_results
Dit type komt uit de IRremote bibliotheek.1 IRrecv irrecv(IrReceiverPin);
De volgende regel is wat ingewikkelder. We hebben aan het begin de IRremote
bibliotheek aan ons project toegevoegd. Deze bevat een functie die we kunen gebruiken.
In dit geval maken we de variabele irrecv
aan en geven we de pin mee waarop deze is aangesloten. In ons geval is deze in IrReceiverPin
opgeslagen.
1 void setup() {
2 Serial.begin(9600);
3 pinMode(LED_BUILTIN, OUTPUT);
4 Serial.println("IR-ontvanger wordt gestart...");
5
6 irrecv.enableIRIn();
7 Serial.println("IR-ontvanger actief");
8
9 digitalWrite(LED_BUILTIN, LOW);
10 }
Als eerste initialiseren we de seriële monitor. Daarna stellen we de LED_BUILTIN
in als uitvoer en printen we de start melding naar de seriële monitor.
Vervolgens vertellen we tegen de IR ontvanger dat deze kan gaan lezen en actief kan worden.
1 // Herhaal oneindig
2 void loop() {
3 if (irrecv.decode(&results)) {
4
5 Serial.println(results.value, HEX);
6
7 irrecv.resume();
8
9 switch (results.value) {
10 case 0xFF42BD: // knop *
11 digitalWrite(LED_BUILTIN, HIGH);
12 break;
13
14 case 0xFF52AD: // knop #
15 digitalWrite(LED_BUILTIN, LOW);
16 break;
17 }
18
19 }
20
21 delay(100);
22 }
1 irrecv.decode(&results)
Deze regel houdt in de gaten of er een nieuw signaal is ontvangen. Wat deze hier gebeurd is dat de decode
functie als parameter &results
krijgt. Dit is het geheugenadres waar de variabele is opgeslagen. Op deze manier kan de functie de ontvangen IR waarde hier opslaan. Het resultaat is een hexdecimale waarde. In dit geval bestaat de waarde uit 6 posities bijvoorbeeld: 0xFF52AD
. Aan het begin zie je 0x
staan. Hiermee wordt aangegeven dat het om een hexadecimale waarde gaat.
Met irrecv.resume();
vertellen we de ontvanger dat deze verder kan luisteren naar nieuwe signalen.
Met switch (results.value)
gaan we bepalen welke knop is ingedrukt. Op de seriële monitor zien we code van de ingdrukte knop. Op de manier kunnen de de case
goed instellen. In mijn geval 0xFF42BD
voor de *
knop en 0xFF52AD
voor de #
knop.
Tot slot wachten we 100ms totdat opnieuw wordt gekeken of er een knop is ingedrukt.
Ons programma is nu klaar om naar de Arduino te worden gestuurd. Open hierna de seriële monitor:
Druk nu op verschillende knoppen op je afstandbediening. Als het goed is zie je nu de ontvangen codes in de seriële monitor.
Mijn naam is Bas van Dijk, ondernemer, freelance frontend developer en maker. Onder de naam "Bas on Tech" bied ik op YouTube videolessen aan over technische onderwerpen zoals Arduino en 3D-printen.
De video’s zijn in het Nederlands met ondertiteling, zodat mensen met een gehoorbeperking ze ook kunnen volgen.
Jaren geleden toen ik mijn eerste Arduino kocht had ik maar één doel: zo snel mogelijk een LCD schermpje aansluiten en er een tekst op laten zien. Na allerlei bronnen te hebben geraadpleegd kwam ik er na veel puzzelen eindelijk uit. Ik was als een kind zo blij met die paar letters op een geel schermpje.
Met Bas on Tech wil ik mijn kennis delen zodat ook anderen deze blijheid kunnen ervaren. Ik heb gekozen voor kort en krachtige YouTube video’s, met een duidelijke vaste opbouw en één onderwerp per video. Daarnaast staan onder elke video links naar de broncode en webshops waar de onderdelen te koop zijn.