Virtual 3D Device Port – SU15-32-RGB LED aansturen

Virtual-3D-Device-port-SU15-logo

Het vorige hoofdstuk (30 – communicatie naar Arduino) liet zien hoe je van SketchUp kan communiceren via de seriële poort naar de Arduino, we gaan daar nu een RGB LED mee aansturen.

De kunst is om dit keer de RGB waarden te sturen en uit te lezen door de arduino, dwz 3 standen van iedere kleur.

RGB LED aansluiten

Sluit een RGB LED aan volgens onderstaand schema:

LET OP: GEBRUIK DE PWM PINNEN 9, 10 en 11 (ipv 11,12 en 13)

arduino RGB schema

Upload de volgende code naar de Arduino om de RGB led te bedienen via de seriële poort:

De RGB LED testen

Open de Arduino monitor en voer een getal in:

Byte 1-3: een getal 001 t/m 100 voor de rode kleur.
Byte 4-6: een getal 001 t/m 100 voor de groene kleur.
Byte 7-9: een getal 001 t/m 100 voor de blauwe kleur.

Voorbeelden:

00000000 = alles uit
10000000 = rood
00010000 = groen
00000100 = blauw
100000100 = paars
100100100 = alles aan

Sketchup en RGB waarden

In sketchup heb ik 3 sliders gemaakt die de rood, groen en blauw waarden representeren:

SketchUp SketchPhysics - RGB control 01

Achter elke slider zit een script om de waarden van die desbetreffende slider te achterhalen, een getal tussen de 0.00 en 1.00, met een aanpassing is deze waarde 000 t/m 100!

Voorbeeld van de rode slider:

Bij de groene en blauwe slider kun je de zelfde code gebruiken, er hoeft maar 1 regel aangepast te worden:

voor groen:  $sliderg = "%03d" % (ratio * 100).round
voor blauw:  $sliderb = "%03d" % (ratio * 100).round

Dan is het de kunst om deze gegevens te verzamelen, weer te geven en via de seriële poort te verzenden, je kan dat doen in het script van de “basis plaat”:

Zodra je de arduino hebt aangesloten en de poort hebt geconfigureerd kan je met behulp van de schuiven de kleuren van de RGB LED bedienen, tevens zie je de informatie aan de linkerkant van het scherm:

SketchUp SketchPhysics - RGB control 02

Hoe werkt het?

Dit werkt nu via een seriële verbinding tussen de computer en de Arduino , de computer stuurt getallen tussen 000 en 100 en zijn altijd 3 cijfers (cijfer 5 is dan 005)

Voor de kleuren RGB worden deze waarden achter elkaar gezet, bijvoorbeeld 100100100, omdat je niet met een 0 kan beginnen in python etc., zetten we voor het gegenereerde getal een 1, dat geeft dan (voor alle kleuren aan) 1100100100, dit eerste getal wordt door de arduino code overgeslagen.

Door de MAP functie toe te passen in de arduino code kan jet eenvoudig van een getal 000 t/m 100 een verdeling maken van 0 t/m 255.

In Sketchup SketchyPhysics is:

000 de status van het object opgegeven bij de MIN waarde
100 de status van het object opgegeven bij de MAX waarde

Daaruit volgt dat tussen 0.00 en 1.00, 180 graden zit, omdat sketchup met stapjes van 0.01 werkt zijn er 100 stapjes dus 1,8 graden per stapje.