Virtual 3D Device Port – SU15-33-LED aan-uit schakelen
Dit voorbeeld laat zien hoe je bijvoorbeeld een ledje aanstuurt (of een pin hoog maakt) door te klikken op een object in SketchyPhysics, welke je ook van kleur kan laten veranderen.
LED aansluiten
We maken gebruik van de ingebouwde LED op pin 13 van de arduino.
Upload de volgende code naar de Arduino om de led te bedienen via de seriële poort:
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 28 29 30 31 |
String readString; void setup() { pinMode(13, OUTPUT); // Start de seriel poort op 9600 baud. Serial.begin(9600); } void loop() { while (Serial.available()) { // Even wachten zodat de buffer zich kan vullen. delay(3); // Kijk of er seriele gegevens binnenkomen. if (Serial.available() >0) { // Lees 1 byte van de seriele buffer. char c = Serial.read(); // Plaats de ingelezen byte achter de rest (om een string te maken). readString += c; } } if (readString.length() >0) { // Lees de positie in van de seriele poort, maak er een FLOAT getal van (toFloat). // Inkomend x 100, de functie hieronder MAP kan geen float nummers aan. if (readString == "1") { digitalWrite(13, HIGH); } if (readString == "0") { digitalWrite(13, LOW); } // Maak de buffer weer leeg. readString = ""; } } |
Sketchup en RGB waarden
In sketchup heb ik een bol gemaakt, als je er op klikt veranderd hij van kleur (geel) en stuurt hij een ‘1’ via de seriele poort, als je de muisknop loslaat wordt hij weer wit en stuurt hij een ‘0’ naar de seriele poort, de gegevens zie je aan de linkerkant van het scherm.
Dit is de code, plak dit in een object:
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# Wat moet er gebeuren bij het starten van de simulatie? onstart{ $fill = 1 compoortopties = ["Seriele poort:", "Baudrate:"] # Standaard waarden!, deze kun je zelf aanpassen! standaard = ["COM8", "9600"] # Lijst met baudrates voor de dropdownlijst in het menu. baudratelijst = ["", "4800|9600|14400|19200|28800|38400|57600|115200"] # Geef het dialoogvenster weer voor vraag naar gegevens. serialsettings = UI.inputbox(compoortopties, standaard, baudratelijst, "Seriele poort instellingen:") if serialsettings != FALSE # Haal de instellingen uit het diagloogvenster en koppel deze aan een variabele. $comport = serialsettings[0] $baudrate = serialsettings[1].to_i begin # Open de seriele poort. @serial = Serial.new($comport, $baudrate) rescue RubySerial::Exception => e # Sluit de seriele poort als deze open staat. @serial.close if @serial # Reset/stop de simulatie. MSketchyPhysics3::SketchyPhysicsClient.physicsReset # Geef een bericht dat de seriele poort niet is gevonden. UI.messagebox("Seriele poort niet gevonden!") end else # Reset/stop de simulatie. MSketchyPhysics3::SketchyPhysicsClient.physicsReset end } onclick{ # Verander het object van kleur. @m = Sketchup.active_model.materials.add "My material" group.material = @m # Verander de kleur van het object naar geel. @m.color="Yellow" logLine("COM poort: " + $comport.to_s) logLine("BAUD rate: " + $baudrate.to_s) logLine("") logLine("Seriele data: 1") logLine("LED status: AAN") logLine("") logLine("") logLine("") logLine("") logLine("") @serial.write('1') } onunclick{ # Verander het object van kleur. @m = Sketchup.active_model.materials.add "My material" group.material = @m # Verander de kleur van het object naar wit. @m.color="White" logLine("COM poort: " + $comport.to_s) logLine("BAUD rate: " + $baudrate.to_s) logLine("") logLine("Seriele data: 0") logLine("LED status: UIT") logLine("") logLine("") logLine("") logLine("") logLine("") @serial.write('0') } onUpdate { # Sluit het 'control panel' venster bij het starten van de simulatie. MSketchyPhysics3.closeControlPanel if frame == 1 } # Wat moet er gebeuren als de de simulatie stopt? onend{ # Sluit de seriele poort als deze open staat. @serial.close if @serial } |
Hoe werkt het?
Dit werkt nu via een seriële verbinding tussen de computer en de Arduino , de computer stuurt een getal 0 (uit) of 1 (aan) via de seriële poort de arduino vangt deze op en schakelt de LED aan/uit.
- SketchyPhysics - SU15-33-LED aan-uit schakelen (sketchup).skp.7z 225,84 kb
- SketchyPhysics - SU15-33-LED aan-uit schakelen (ruby script).rb.7z 1,09 kb
- SketchyPhysics - SU15-33-LED aan-uit schakelen (arduino script).ino.7z 0,69 kb
- SketchyPhysics - SU15-32-RGB LED aansturen (sketchup).skp.7z 61,30 kb
- SketchyPhysics - SU15-32-RGB LED aansturen (ruby-python scripts).ino.7z 1,76 kb
- SketchyPhysics - SU15-32-RGB LED aansturen (arduino script).ino.7z 0,80 kb
- SketchyPhysics - SU15-31-Servo aansturen (SG90) (arduino script).ino.7z 0,82 kb
- SketchyPhysics - SU15-30-Hendel status voorbeeld compleet naar Arduino (ruby script).rb.7z 1,70 kb
- Sketchyphysics - SU15-30-Hendel status naar Arduino (sketchup).skp.7z 31,52 kb
- SketchyPhysics - SU15-23-Gyroscoopmeter (GY-521) (arduino script).ino.7z 1,02 kb
- SketchyPhysics - SU15-22-Accelerometer (ADXL345) (sketchup).skp.7z 74,49 kb
- SketchyPhysics - SU15-22-Accelerometer (ADXL345) (ruby script).rb.7z 1,14 kb
- SketchyPhysics - SU15-22-Accelerometer (ADXL345) (arduino script).ino.7z 1,50 kb
- SketchyPhysics - SU15-21-Virtuele Potmeter (sketchup).skp.7z 51,62 kb
- SketchyPhysics - SU15-21-Virtuele Potmeter (ruby-python script).rb.7z 1,03 kb
- SketchyPhysics - SU15-21-Virtuele Potmeter (arduino script).ino.7z 0,60 kb
- SketchyPhysics - SU15-21-Potmeter orgineel model (sketchup).skp.7z 91,66 kb
- Sketchyphysics - SU15-20-Communicatie naar SU (sketchup).skp.7z 22,37 kb
- SketchyPhysics - SU15-20-Communicatie naar SU (ruby script).rb.7z 1,03 kb
- SketchyPhysics - SU15-20-Communicatie naar SU (arduino script).ino.7z 0,33 kb
- SketchyPhysics - SU15-12-Waarde uitlezen van object voorbeeld van forum (sketchup).7z 71,97 kb
- SketchyPhysics - SU15-10-Basis oefening (sketchup).skp.7z 19,25 kb
- SketchyPhysics - SU14&15 - Library FFI+RubySerial.7z 167,31 kb