Uncategorised
- Gegevens
- Geschreven door Administrator
- Categorie: Uncategorised
- Hits: 394
communiceren met de Arduino
Het programmeren van de Arduino gebeurt via een USB->serieel omzetter die ingebouwd zit in het systeem. Datzelfde kanaal kunnen we in het programma gebruiken om communicatie tot stand te brengen tussen de Arduino en de aangesloten PC/laptop.
Het gebruik is super eenvoudig. Het begint met het initialiseren van het Serial-object in de setup() functie. De enige parameter die moet meegegeven worden is de baudrate (zie theorie). Een veelgebruikte baudrate is 9600, maar we kunnen gaan tot 115200. De initialisatie gebeurt dus als volgt:
Serial.begin(115200);
Daarna kan in de loop-functie gebruik worden gemaakt van het Serial-object om bijvoorbeeld via de instructie
Serial.println("Hello World");
de tekst "hello world" naar de PC/laptop te sturen.
Uiteraard kunnen ook waarden van variabelen geprint worden, en kan zelfs gebruik gemaakt worden van een extra parameter om de waarde in een bepaald formaat weer te geven.
Zo zal
Serial.println(100,HEX);
de waarde 100 (decimaal) in hexadecimale vorm doorsturen via het serieel kanaal.
hoe te zien?
Hoe kunnen we op de PC/laptop zien wat de Arduino ons stuurt? Dat kan via het terminal venster van de Arduino software. Rechtsboven staat een knop met een vergrootglas. Wanneer je daarop klikt opent het terminalvenster, en wordt verbinding gemaakt met dezelfde seriële poort als deze die ingesteld staat om mee te programmeren.
In dit venster zal de tekst die door de Arduino gestuurd wordt zichtbaar worden in het grote venster. In de bovenste invoerregel kan tekst geplaatst worden. Wanneer men op de knop "verzenden" drukt zal deze tekst door de PC/laptop naar de Arduino gezonden worden. Ook voor het lezen van data heeft het Serial-object een aantal functies.
opgelet!
communiceren kost tijd! Kort door de bocht gerekend kunnen we aan een baudrate van 115200 baud 11520 karakters/seconde doorsturen. Dat wil zeggen dat een simpele boodschap als "Hello World" dat uit 11 karakters bestaat, zal aangevuld worden met een carriage return en een linefeed karakter (nieuwe regel en naar het begin van de regel opschuiven) waardoor het totaal te verzenden bytes op 13 komt. Dit zal dus minstens 13/11520 = 1,128ms tijd in beslag nemen, waardoor de timing van het ganse programma gewijzigd wordt.
Hou dus altijd rekening met de vertraging door communicatie.
- Gegevens
- Geschreven door Administrator
- Categorie: Uncategorised
- Hits: 314
artikel under construction
Deze pagina wordt nog aangevuld.
Oplossing looplicht
Voor deze oefening bestaan verschillende oplossingen. Hier volgt één van de meest eenvoudige.
De toepassing die hier gedemonstreerd wordt is dat je binnen een lus de waarde van de teller kunt gebruiken als variabele om op een elegante manier code te schrijven.
de setup
In de setup moeten we pinnen 3 tot 10 als output definiëren. We kunnen dit door 8 regels na elkaar met elke keer de pinMode instructie, maar dit is ook met een for-loop op te lossen.
void setup() { for(int i=3; i<=10;i++) { pinMode(i,OUTPUT); } }
We initialiseren de teller op 3, en laten hem lopen tot en met 10. Voor elk van deze waarden voeren we een pinMode instructie uit, waarbij i de te configureren pin is.
Op dezelfde manier laten we nu de opeenvolgende leds aan- en uitgaan.
void loop() { for(int i=3; i<=10;i++) { digitalWrite(i,HIGH); delay(250); digitalWrite(i,LOW); } }
De delay(250) zorgt voor een vertraging van 250ms, waardoor het looplicht 4 stappen per seconde neemt, en de gevraagde 4Hz frequentie bereikt wordt.
Een simulatie kun je vinden via deze link.
- Gegevens
- Geschreven door Administrator
- Categorie: Uncategorised
- Hits: 318
labo 1
Oefeningen: basis 1 - systeem testen
Begin met het testen van je programmeeromgeving door het voorbeeldprogramma "blink" uit te voeren. Hoe je dit kunt doen zie je in onderstaande video (gebruik oortjes in de les!!).
- zoek uit via welke poort de Arduino verbonden is met de laptop
- Zoek op hoeveel stroom elke pin kan leveren of verwerken.
- Wat zijn de verschillende pinModes, en wat is het onderscheid?
Oefeningen : basis 2 - morsecode SOS
Maak een nieuw programma. Plaats een rode LED op pin 12 en schrijf een programma waarbij de led SOS in morsecode weergeeft. Een streep duurt 0,3s en een punt 0,1s. De pauze tussen strepen en punten is 0,1s. De pauze tussen twee letters is 0,3s en de pauze tussen twee woorden is 0,7s.
Gebruik lussen om het programma zo efficiënt mogelijk te maken
Oefeningen: basis 3 - looplicht met vaste frequentie
Verbind 8 led's met pinnen 3..10 en programmeer een looplicht. Frequentie van het looplicht is 4Hz.
Oefeningen: basis 4 - knightrider effect
Maak met dezelfde configuratie en dezelfde frequentie een knightrider.
Oefeningen: basis 5 - RGB led aansturen
PLaats een RGB led op pinnen 3 (rood),4 (groen) en 5 (blauw). Maak een programma dat door de 7 basismengkleuren heen loopt, aan een frequentie van 1Hz.
Oefeningen: gevorderd 1 - 7-segment display animatie
Gebruik een dubbel 7-segment display en laat de segmenten in een 8-animatie oplichten.
Oefeningen: gevorderd 2 - 7-segment teller
Maak een teller op 1 display die doorlopend telt van 0 tot en met 9. Gebruik een array om de letterpatronen op te slaan. segA=pin3, segB=pin4,... Frequentie van de teller is 2Hz.
Oefeningen: gevorderd 3 - dubbele 7-segment teller
Maak van voorgaande opgave een 00 tot 99 teller door gebruik te maken van multiplexing. Pin10 bepaalt welk van beide displays actief is.
Oefeningen: gevorderd 4 - volledige morse code
Zorg dat alle letters in morsecode kunnen worden weergegeven. Zoek een manier om het morse alfabet efficiënt op te slaan, zodat niet per letter een functie dient geschreven te worden.
- Gegevens
- Geschreven door Administrator
- Categorie: Uncategorised
- Hits: 291
de presentatie
opgelet! deze wordt als bestand gedownload en dus niet in een venster getoond.
Pagina 7 van 11