Codewerkplaats Les 2 (Lijnsensors en afstandssensor)
Jouw robotkarretjes heeft twee soorten sensors. Onderop zitten twee lijnsensors en neus van bug staat een afstandssensor (HC14 SR04) die meet wat de afstand is tot iets dat bug in de weg staat.
Als eerste gaan we de lijnsensors aansluiten, daarna is de afstandssensor aan de beurt.
Lijnsensors [↑]
Hierboven zie je de onderkant en bovenkant van de lijnsensor. De sensor werkt met Ultra Violet licht dat mensen niet kunnen zien:
De sensors sluiten we zo aan op de Arduino:
- Lijnsensor Links op pin D14
- Lijnsensor Rechts op pin D15
Sluit de sensors met kabeltjes aan op de Arduino. Let hierbij goed op dat de zwarte draad op de GND van de lijnsensor komt.
We schroeven de lijnsensors nog NIET vast op het houten chassis!
Lijnsensor programmeren met Easybloqs [↑]
We gaan een programma bouwen waarmee de LED-koplampen aan- en uitgaan als de lijnsensor iets ziet.
- Ga naar https://leaphyeasybloqs.com/ en selecteer Arduino Nano.
- Bouw dit programma en zet het op de Arduino:
Opdracht: Andersom [↑]
De LED-koplamp gaat nu aan als de lijnsensor een lichte kleur ziet.
- Verander het programma nu zo dat de LED-koplamp gaat branden als de lijnsensor zwart ziet.
- Zijn er nog andere manieren om hetzelfde te bereiken?
Lijnsensor programmeren met Arduino IDE [↑]
- Start de Arduino IDE
- Stel het Board in op ‘Arduino Nano’
- Selecteer en kopieer de code hieronder:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
void setup() { pinMode(14, INPUT); // Lijnsensor Links pinMode(15, INPUT); // Lijnsensor Rechts pinMode(5, OUTPUT); // LED-koplamp Links pinMode(3, OUTPUT); // LED-koplamp Rechts } void loop() { // LINKS if (digitalRead(14) == LOW) { //Als de sensor een zwarte lijn detecteert digitalWrite(5, HIGH); } else { // Als de sensor GEEN zwarte lijn detecteert digitalWrite(5, LOW); } //RECHTS if (digitalRead(15) == LOW) { // Als de sensor een zwarte lijn detecteert digitalWrite(3, HIGH); } else { // Als de sensor GEEN zwarte lijn detecteert digitalWrite(3, LOW); } } |
- Plak deze in de IDE.
- Test of het programma goed werkt.
Lijnsensors op chassis schroeven [↑]
- Maak de stekkers aan de kant van de Arduino nu los en laat de draad aan de kan van de lijnsensors zitten
- Schroef de lijnsensors met nu op het chassis. Gebruik een schroef M3x16 en een afstandsbus van 5 mm.
LET OP: De sensors zitten aan de onderkant van het karretje. Zorg ook dat de ‘ogen’ van de sensors naar de grond zijn gericht.
Cassis van boven gezien. De lijnsensors zitten aan de onderkant!
- Op de foto hieronder zie je waar de GND (zwart) zit en hoe je draad naar de bovenkant van het chassis laat gaan.
- Sluit de draden weer aan op de Arduino
Lijnsensors aansluiten op de Arduino [↑]
Ultrasoon afstandssensor [↑]
De tweede soort sensor in deze tweede les is de ultrasoon afstandssensor.
Zo werkt de ultrasoon afstandssensor [↑]
De ultrasoon afstandssensor werkt met geluid van 48 kilohertz (kHz). Dit is hetzelfde als 48.000 Hertz (Hz). mensen kunnen dit geluid niet horen.
Op de module zit een zender en een ontvanger. De zender zend geluidspulsen van 48 kHz uit. Als deze pulsen ergens tegenaan komen dan echoën deze terug naar de ontvanger.
Omdat het geluid zich verplaatst met ongeveer 300 meter per seconde hoeven we alleen maar de tijd te meten tussen het versturen van de puls (de trigger) en het ontvangen van de echo.
Voorbeeld
- De afstandssensor stuurt een puls (trigger).
- Deze puls raakt na 850 microseconde (dat is 0,000850 seconde) een muur.
- De puls wordt door de muur gereflecteerd.
- De echo doet er 850 microseconde over om terug te komen.
- De tijd tussen het versturen en het ontvangen van de puls is dus 2 x 850 = 1700 microseconde. Dit is 0,001700 seconde.
- In één seconde legt geluid ongeveer 300 meter af.
- In 0,001700 seconde is dit dan:
- 0,001700 x 300 = 0,51 meter = 510 centimeter.
- Dit is de heen-en-weer afstand. De afstand tot de muur is dus de helft:
-
- 510 / 2 = 25,5 centimeter
Dit principe wordt ‘sonar’ genoemd en het wordt in de natuur ook gebruikt door vleermuizen.
Ultrasoon afstandssensor monteren [↑]
Om de afstandssensor makkelijk op de Arduino aan te kunnen sluiten gebruiken we speciaal printplaatje.
Dit printje komt op een tussenplankje. Gebruik hiervoor M3-schroeven van 12 mm en afstandsbusjes van 5 mm:
Schroef nu het plaatje op het chassis. Gebruik hiervoor M3-schroeven van 25 mm en afstandsbussen van 12 mm. Gebruik aan de boven- en de onderkant een M3-ring om het hout te beschermen.
Ultrasoon afstandssensor aansluiten op de Arduino [↑]
We hebben te maken met twee aansluitingen:
- Trigger: Deze komt op de Arduino op pin 16
- Echo: Deze komt op de Arduino op pin 17
We gebruiken hiervoor iets langere aansluitdraden.
Let op dat je de zwarte draad op de GND aansluit!
Dit zijn de pinnen die we gebruiken in de Codewerkplaats. Je mag natuurlijk ook andere pinnen gebruiken, maar dan moet je het programma wel aanpassen.
Ultrasoon afstandssensor programmeren met Easybloqs [↑]
Met dit programma gaat de (ingebouwde) led op pin 13 van de Arduino branden als de afstand kleiner is dan 10 centimeter.
- Ga naar https://leaphyeasybloqs.com/ en selecteer Arduino Nano.
- Bouw dit programma en zet het op de Arduino:
In het blokje Sonar is aangegeven dat de Trigger op pin 16 en de Echo op pin 17 zit.
Ultrasoon afstandssensor met Arduino IDE [↑]
Jij bent niet de eerste die een ultrasoon sensor op een Arduino aansluit en er zijn kant-en-klare stukjes programma die iedereen mag gebruiken.
Dit is hetzelfde programma. Voor de ultrasoon afstandssensor gebruiken we de bibliotheek (library) NewPing. Dit is een programma dat al door iemand is geschreven en dat iedereen in een programma mag gebruiken. Verder op deze pagina zie je hoe je deze library aan de IDE toevoegt.
- Start de Arduino IDE
- Stel het Board in op ‘Arduino Nano’
- Selecteer en kopieer de code hieronder:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
//Declaratiedeel van het programma //We gebruiken de bibliotheek (library) NewPing //Deze moet je eerst via het menu toevoegen aan de IDE: // - Menu Tools > Manage Libraries // - Zoek NewPing // - Klik op INSTALL #include <NewPing.h> // Geeft aan dat we de libray NewPing gebruiken NewPing sonar(16, 17, 50); // Maak een NewPing object met de naam 'sonar' // 16 = Pin 16 voor trigger // 17 = Pin 17 voor echo // 50 = maximale afstand in centimeter void setup() { pinMode(13, OUTPUT); // Zeg tegen de Arduino waar pin 13 voor wordt gebruikt. } void loop() { if (sonar.ping_cm() < 10) { //De gemeten afstand is kleiner dan 10 cm digitalWrite(13, HIGH); } else { //De gemeten afstand is groter dan 10 cm digitalWrite(13, LOW); } } |
- Plak deze in de IDE.
- Laadt de bibliotheek NewPing (hieronder staat hoe dat moet)
- Test of het programma goed werkt.
Library NewPing toevoegen aan de IDE [↑]
- Kies in het menu ‘Tools’
- Kies ‘Manage Libraries…’
- Zoek ‘NewPing’
- Klik op ‘INSTALL’
De library is nu toegevoegd aan de Arduino IDE. Om deze in je programma te gebruiken gebruik je de code #include <NewPing.h>.
Hierna kan je de code hierboven kopiëren, in de IDE plakken en het programma testen.
Opdracht verschillende afstanden [↑]
We laten nu de LED op de Arduino branden. Pas het programma nu zo aan dat:
- De linkse LED-koplamp gaat branden als de afstand kleiner is dan 20 cm.
- De rechtse LED-koplamp gaat branden als de afstand kleiner is dan 10 cm.
Download en website
Codewerkplaats 2024 - Les 2
Colofon [↑]
Huis73 | maakte het mogelijk om deze lessen te schrijven en organiseert de lessen. | |
Digitaal Atelier | had de spullen voor het lasersnijden en 3d-printen van de onderdelen en is ook nog eens een hartstikke leuke ruimte waar iedereen hartstikke leuke dingen kan doen. | |
Stichting Leaphy | was de eerste die in Nederland op grote schaal Arduino-robotkarretjes beschikbaar stelde en ook nog eens de programmeeromgeving Leaphy Easybloqs ontwikkelde en voor iedereen beschikbaar stelt. | |
CodeKids | bedacht de lessen, ontwikkelde een eigen (goedkoper) karretje en verzorgt de lessen. | |
Iedereen mag materiaal uit deze lessen (her)gebruiken als daarbij de bron (www.codekids.nl) wordt vermeld. |