Arduino

WORKSHOP
In de tweede week van de vak HCI hebben we ons verdiept in Arduino en de fysieke computerwereld. We kregen verschillende opdrachten die we moesten uitvoeren. Ik vond deze opdrachten erg leuk en interessant om te doen. Ik heb er veel van geleerd. Om de resultaten van een aantal opdrachten te laten zien, heb ik geprobeerd de stappen die ik nam zo goed mogelijk te filmen. Bijna alle video's laten zien hoe ik mijn Arduino-board in elkaar zet.

Exercise 3: Blink multiple LEDS

De opdracht was dat het groene licht twee keer zo sneller zou knipperen dan het geel licht. Ik heb de kabels op dezelfde manier aangesloten als in het voorbeeld van de handleiding. Vervolgens kon ik de code aanpassen door aan te geven welke lichten aan en uit moesten. Ik deed dit door middel van de HIGH en LOW waardes. HIGH staat voor aan en LOW staat voor uit. De DELEY-code geeft aan hoe lang de code moet wachten om naar de eerstvolgende code te gaan.


Exercise 4: Fade LED – Analog Output

Voor opdracht vier mocht ik de kabel wegwerking uit opdracht die gebruiken. Het enige verschil was dat ik de groene en gele kabel naar pin 9 en 10 moest verplaatsen om de aan mij gegeven code aan het werk te krijgen.

De opdracht was om het ene licht langzaam aan te doen en het andere langzaam uit te doen, en dit moet tegelijkertijd gebeuren. Om dit zo soepel mogelijk te doen, heb ik besloten om de for-loop vier keer in de loop te gebruiken. De opdracht was dat de ene licht langzaam aan gaat en de andere licht langzaam uit en dit moet tegelijkertijd gebeuren. Om dit zo soepel mogelijk te doen heb ik ervoor besloten om in de loop het for-loop viermaal te gebruiken.

In het eerste deel heb ik de helderheid van het groene licht ingesteld op kleiner dan of gelijk aan 255 en ervoor gezorgd dat er steeds meer licht wordt toegevoegd. In de volgende for-loop heb ik het omgekeerde gedaan door de helderheid groter dan of gelijk aan 1 in te stellen om steeds licht te verminderen. Ik heb ook exact dezelfde code gebruikt voor het gele lampje. In de video is duidelijk te zien dat het ene lampje langzaam uitgaat terwijl het lampje brandt. Ik heb exact hetzelfde code ook gebruikt voor het gele licht. In de video is goed te zien dat de ene licht langzaam uitgaat terwijl de aan de aan gaat.


Exercise 6: Controlling a LED with a potmeter

De opdracht was dat als ik de Potentiometer in de ene richting draai, licht A uitgaat en lamp B gaat aan en als ik de Potentiometer de andere kant op draai, gaat lamp A aan en gaat lamp B uit. Om dit te doen heb ik het voorbeeld in het boek gebruikt om alle kabels op de juiste plek te linken. Volgens de handleiding mocht ik de codes gebruiken die ik in opdracht vier had gemaakt. Ik moest de codes wel aanpassen voor een juiste werking.

Met behulp van de map functie heb ik de sensorValue aangepast van 1023 tot 255. 1023 bepaald de rotatie die de Potentiometer kan maken en 255 is de maximale waarde van de ledlamp. Vervolgens heb ik in het analogWrite bij het gele lamp 1023-sensorValue toegevoegd zodat de gele lamp begint licht te geven terwijl het groene lampje uit staat.


Exercise 7: LED Matrix

Heb jij dat ooit meegemaakt, dat je in het buitenland op een bus wachtte en tijdens het wachten mooie bezienswaardigheden zag, maar er geen informatie over kon vinden. Met een applicatie die AR-technologie gebruikt, zou je de informatie op een veel leukere en informatievere manier kunnen vinden.Persoonlijk vond ik deze opdracht wel het allerleukste. De opdracht was heel eenvoudig, je moest de kabel wegwerking bouwen die tekstueel in de handleiding was geschreven. Er was een afbeelding als voorbeeld, maar die klopte niet helemaal omdat er een andere ledmatrix werd gebruikt. Als de kabel wegwerking goed was, werkt de code die in de handleiding was gegeven prima. De video laat duidelijk zien dat het gezicht elke seconde verandert van blij naar verdrietig.

* Ik vond deze opdracht zo leuk dat ik besloot eraan te blijven werken. Door aan de Potentiometer te draaien, verschijnt of verdwijnt een boot.


Exercise 8: Control the LED with light

Bij deze opdracht was het de bedoeling dat de ledlampen uitgaan als er geen licht op schijnt, als er licht op schijnt, gaan de ledlampen aan. Ik had dezelfde opdracht ook gemaakt in opdracht zes. In plaats van de Potentiometer zal ik nu een LDR gebruiken.

Om te beginnen moest ik eerst de kabel wegwerking van het board dat in de handleiding werd aangegeven maken. Voor deze opdracht mocht ik de codes gebruiken die ik ook in opdracht zes had gebruikt. Het enige wat ik in de code heb veranderd is de sensorValue van het groene lampje in de analogWrite. Omdat de opdracht was dat beide lampen tegelijkertijd moesten branden en uitgaan, moesten de waardes hier hetzelfde zijn, dus heb ik de waardes van analogWrite (greenLedPin, sensorValeu) aangepast naar analogWrite (greenLedPin, 1023-sensorValeu).


Exercise 9: Sound

Om te beginnen moest ik exact dezelfde kabel wegwerking bouwen als in het voorbeeld. Daarna kon ik beginnen met coderen. Met de code die ik kreeg van de handleiding, kon ik uitzoeken hoe ik een eigen deuntje kon maken. Ik besloot de ringtone van de oude Nokia 3310 te coderen. Op het internet vond ik de muzieknoten en met de frequenties die in de handleiding stond, slaagde ik erin om de ringtone van Nokia 3310 te coderen. De code hiervan is te zien in de afbeelding hieronder in grijze teksten.

Na het afronden van deze opdracht moest ik door met de definitieve opdracht. De opdracht was om een sirene te maken. Tijdens het coderen moest ik tussen 100hz en 2000hz blijven. Ik heb besloten om een for-loop te gebruiken. In de eerste for-loop staat er da i gelijk is aan 100 en als i kleiner is dan 2000, dan komt er een nummer bij. Dit betekent dat het geluid steeds luider wordt tot het bij 2000hz is gekomen. Als i groter is dan 100, wordt een getal afgetrokken. Om het in een vloeiende lijn over te laten gaan heb ik nog een Delay toegevoegd om er nog 1 seconde pauze tussen te zetten.


Exercise 11: Distance

Voor deze opdracht moest ik de Ultrasonic Proximity Sensor gebruiken. Deze sensor werkt doormiddel van hoge geluidsgolven die het menselijk oor niet kan waarnemen. Zonder contact te hebben met het apparaat, gebruik je deze sensor om ervoor te zorgen dat het apparaat doet wat jij wilt vanaf een afstand.

In dit geval was de opdracht dat het ledlamp aan zou gaan als mijn hand voor de sensor komt. Eerst heb ik me gehouden aan de kabel wegwerking van het voorbeeld en daarna heb ik de codes in de Arduino toegevoegd. Om te kijken of alles goed werkt heb ik gebruik gemaakt van de Serial monitor. Nadat ik zeker was, dat dit deel van de opdracht goed was, ging ik verder naar het laatste deel.

Voor de lamp heb ik dezelfde structuur gebruikt die ik in opdracht twee op het Arduino-bord had gemaakt. Vervolgens heb ik de codes toegevoegd die in de handleiding stond en heb ik gecontroleerd of de sensor begon te werken. Voor de video heb ik de afstand aangepast van 50 cm naar 10 cm, dit zou betekenen dat als een object voor de sensor binnen 10 cm komt, de ledlamp aan gaat.


Exercise 12: Arduino and Processing

Deze opdracht was een combinatie van opdracht 5 of 10. De bedoeling was dat de Potentiometer of de NFC ervoor zou zorgen dat de cirkel op je scherm groter of kleiner wordt. We mochten zelf beslissen welke van de oude opdrachten we konden gebruiken. Ik koos voor opdracht vijf. In opdracht vijf had ik een Potentiometer gebruikt. Door te draaien kon ik de waardes in de Serial monitor veranderen.

Voor de cirkel moest ik een programma genaamd Processing downloaden op mijn computer. Vervolgens moest ik de codes uit de handleiding toevoegen aan mijn Arduino en Processing. Helaas werkte het niet. Mijn Processing kon geen contact maken met mijn Arduino-board. Het duurde niet lang tot ik zag waar het probleem zat. In mijn Processing moest ik de myPort-code wijzigen. Ik moest aangeven welk port mijn Arduino-board was verbonden.

“van:
myPort = new Serial(this, Serial.list()[5], 9600);
naar:
myPort = new Serial(this, "COM6", 9600);”

Om de witte achtergrond van het scherm met de cirkel te veranderen, heb ik de achtergrond veranderd in de draw-functie in mijn Processing. Nu zie je een rode achtergrond waarin een cirkel groter of kleiner wordt na het draaien van mijn Potentiometer.


Exercise 13: Buttons

Bij deze opdracht was het de bedoeling dat we door op een knop te klikken de ledlamp uitdoen. Om dit te doen heb ik dezelfde kabel wegwerking gemaakt als in het voorbeeld van de handleiding. Vervolgens heb ik de codes gebruikt die op de Arduino-website stonden. Het enige was dat de code van de website ervoor zorgde dat het ledlamp aan ging in plaats van uit. Dit was makkelijk te fixen door de HIGH en LOW in de if-functie om te wisselen.


Exercise 14: Servomotor

Voor deze opdracht moest ik een Servomotor gebruiken. Ik heb het voorbeeld in de handleiding gebruikt om de kabel wegwerking zo goed mogelijk aan te sluiten. Daarna heb ik de aangegeven code in mijn Arduino toegevoegd. De opdracht was om de gegeven code aan te passen en er een leuke draai aan te geven.

Een servomotor kan maar 180 graden draaien. Dat betekende dat ik in de for-functie alleen van 0 tot 180 kon gebruiken. Omdat ik niet de volledige 180 graden wilde draaien, heb ik aanpassingen gemaakt in de for-functie. Ik heb ervoor gezorgd dat de servomotor maar een halve slag kon draaien door binnen 90 graden te blijven. De pijl draait eerst naar 67 graden en dan helemaal terug naar 0. Daarna twee keer 22 graden en terug naar 0 en tenslotte naar 45 graden en weer terug naar 0.

Om het nog leuker te maken heb ik Patrick Star geprint en geknipt. Vervolgens heb ik het lichaam van Patrick geplakt aan een stok en de arm aan de stok van de servomotor. In de video kan je nu zien dat Patrick Star een hamer heen en weer zwaait.