Friday, October 9, 2015

Disco Jurk

In mijn 'Maakbare Wereld' stuk van 10 oktober 2015 in de Volkskrant beschrijf ik in het kort hoe ik een schitterende, blinkende disco jurk in elkaar gestoken heb. Allereerst een filmpje om te laten zien dat het echt werkt (of tenminste werkte totdat hij een paar uur gedragen was. Ik moet echt op naaicursus).



Omdat in de krant niet genoeg plek is om diep in te gaan op de software kant van het project wilde ik er hier wat over schrijven.

De FLORA die de LED lampjes aanstuurt wordt geprogrammeerd met de Arduino IDE. Al wordt het steeds makkelijker om hier mee te werken, het kost nog steeds wel wat tijd alles aan de praat te krijgen. Het is vooral nuttig om de handleiding van Adafruit te volgen over hoe je de FLORA voor het eerst moet gebruiken. Lees goed wat je precies moet doen dan zou het altijd goed moeten komen.

De Arduino taal is naar mijn mening een supermooie manier om met programmeren te beginnen. Het is goed leesbaar en je hebt gelijk een fysisch resultaat, zoals knipperende lichtjes.

Ik zal me verder beperken tot de onderdelen die ik gebruikt heb namelijk de FLORA, de 9DOF sensor en de NeoPixels (kleuren LED's). Ik vind het zelf erg fijn om te leren van simpele voorbeelden. Ik geef daarom een paar voorbeelden van wat je kunt doen met deze componenten. Ik zal proberen in de code Nederlands commentaar toe te voegen, zodat het duidelijk is wat de verschillende onderdelen doen.
Hieronder wat korte opmerkingen

Knipperen bij bewegen


Het voorbeeld dat Adafruit zelf in elkaar heeft gestoken is erg informatief. Het kijkt naar de totale versnelling op twee momenten vlak na elkaar en kijkt of er een (groot) verschil is. Zo ja, dan wordt er een functie aangeroepen die willekeurig de lampjes laten knipperen. Ik heb het commentaar vertaald en de sketch is hier te vinden. Je moet het bestand downloaden om het te kunnen inzien. Het beste natuurlijk bewerken in de Arduino IDE, maar in een tekstverwerker kan ook (notepad, wordpad, etc).
Het programma heeft waarschijnlijk maar weinig aanpassingen nodig om voor uw eigen ontwerp te werken. Het belangrijkste zijn de PIN waar het lint van NeoPixels op aangesloten is en het aantal NeoPixels in hetzelfde lint in deze regel:
Adafruit_NeoPixel strip = Adafruit_NeoPixel(7, 6, NEO_GRB + NEO_KHZ800);

Het gaat om de twee getallen die na het 'haakje open' staan: 7 en 6. In mijn geval heb ik namelijk 7 NeoPixels aangesloten op PIN 6.

Je kunt de gevoeligheid aanpassen bij:
#define MOVE_THRESHOLD 120

Oriƫntatie

De 9DOF sensor kan ook de magneetsterkte in drie richtingen meten. Daardoor is het een soort 3D kompas. Je zou dus de kleuren van de NeoPixels kunnen laten veranderen van de windrichting dat je opkijkt.
Het is goed om te beseffen dat het magnetische noorden vanaf uw positie gezien ergens onder de horizon ligt en dat de richting van magnetische vector dus richting de grond wijst. Dat betekend niet dat je niet kunt gebruiken als kompas. Om het precies te doen zouden we wat rekenwerk moeten verrichten, maar voor dit geval proberen we het zo simpel mogelijk te houden. Aangezien de sensor vast zit aan de jurk zal deze in normale situatie steeds met dezelfde as omhoog wijzen. Twee andere assen zullen we steeds andere waarden aangeven. Ik heb gewoon even getest door de jurk rond te draaien en in de Serial Monitor gekeken wat de waardes waren van de verschillende kanalen x, y en z. In mijn geval bleek y niet veel te veranderen en x en z wel. Om de richting te berekenen neem ik de arctan van x en z: atan(magX/MagZ). Ik houd voor simpliciteit hier geen rekening met een vector die precies de andere kant opstaat. Dat kunt u eenvoudig zelf toevoegen (lees: ik was te lui om het te doen) Het bestand vindt u hier.


Ik hoop dat er binnenkort wat mooie kostuums gemaakt worden. Halloween?




No comments:

Post a Comment