Example of how use the Nucleo board with a processing GUI program. Processing code in the description section of mbed program.
Revision 2:fb5b849eefa1, committed 2015-07-18
- Comitter:
- dreamworker
- Date:
- Sat Jul 18 09:43:45 2015 +0000
- Parent:
- 1:b89267dee6da
- Commit message:
- Example of how use the Nucleo board with a processing GUI program
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r b89267dee6da -r fb5b849eefa1 main.cpp --- a/main.cpp Sat Jul 18 09:37:50 2015 +0000 +++ b/main.cpp Sat Jul 18 09:43:45 2015 +0000 @@ -1,4 +1,186 @@ -//Example of how use the Nucleo board with a processing GUI program +//Example of how use the Nucleo board with a Processing GUI program +/* Processing Code +import g4p_controls.*; // GUI library +import processing.serial.*; //serial library +int rosso, verde, blu; +int valoreSliderRosso,valoreSliderVerde,valoreSliderBlu; +String porta; + +Serial nucleoPort; +GCustomSlider sdrRosso, sdrVerde, sdrBlu; // sliders creation +GButton btnRosso, btnVerde, btnBlu, btnConnetti;//buttons creation +GLabel Rosso, Verde, Blu, Porte; //labels creation +GDropList sceltaPorta;//port selector creation +void setup() { + size(500, 320); + frame.setTitle("Nucleo RGB Color"); + //============================================================= + // sliders + sdrRosso = new GCustomSlider(this, 20, 30, 380, 50, null); + sdrRosso.setShowDecor(false, false, true, true); + sdrRosso.setNbrTicks(5); + sdrRosso.setLimits(0, 0, 255); + valoreSliderRosso=0; + + sdrVerde = new GCustomSlider(this, 20, 90, 380, 50, null); + sdrVerde.setShowDecor(false, false, true, true); + sdrVerde.setNbrTicks(5); + sdrVerde.setLimits(0, 0, 255); + valoreSliderVerde=0; + + sdrBlu = new GCustomSlider(this, 20, 150, 380, 50, null); + sdrBlu.setShowDecor(false, false, true, true); + sdrBlu.setNbrTicks(5); + sdrBlu.setLimits(0, 0, 255); + valoreSliderBlu=0; + + //============================================================= + //label + Rosso = new GLabel(this, 150, 10, 110, 50); + Rosso.setText("Red"); + Rosso.setTextBold(); + + Verde = new GLabel(this, 150, 70, 110, 50); + Verde.setText("Green"); + Verde.setTextBold(); + + Blu = new GLabel(this, 150, 130, 110, 50); + Blu.setText("Blue"); + Blu.setTextBold(); + + Porte = new GLabel(this, 285, 180, 110, 50); + Porte.setText("Port Selection"); + Porte.setTextBold(); + + //============================================================= + //buttons + btnRosso = new GButton(this, 20, 220, 80, 40, "Red"); + btnRosso.setTextBold(); + btnRosso.setLocalColorScheme(5); + + btnVerde = new GButton(this, 110, 220, 80, 40, "Green"); + btnVerde.setTextBold(); + btnVerde.setLocalColorScheme(5); + + btnBlu = new GButton(this, 210, 220, 80, 40, "Blue"); + btnBlu.setTextBold(); + btnBlu.setLocalColorScheme(5); + + btnConnetti = new GButton(this, 300, 240, 80, 20, "Connect"); + btnConnetti.setTextBold(); + btnConnetti.setLocalColorScheme(7); + + //============================================================= + //serial port + + sceltaPorta = new GDropList(this,300,220,80,50,3); + sceltaPorta.setItems(Serial.list(),0);//serial port aviable list + porta = sceltaPorta.getSelectedText(); + nucleoPort = new Serial(this, porta, 9600); //serial port assignament + //initialization + while (nucleoPort.available()<0){ + setZero();} + +} +void draw() { + //background color + background(68, 111, 216); + //============================================================= + //color boxes + //red + strokeWeight(2); + stroke(104, 104, 255); + rosso=sdrRosso.getValueI(); + fill(rosso, 0, 0); + rect(400,40,40,40,7); + + //green + strokeWeight(2); + stroke(104, 104, 255); + verde=sdrVerde.getValueI(); + fill(0, verde, 0); + rect(400,100,40,40,7); + + //blue + strokeWeight(2); + stroke(104, 104, 255); + blu=sdrBlu.getValueI(); + fill(0, 0, blu); + rect(400,160,40,40,7); + + //mixed + strokeWeight(2); + stroke(120, 120, 255); + fill(rosso, verde, blu); + rect(400,220,80,80,7); + +if ((valoreSliderRosso == rosso) && (valoreSliderVerde == verde) && (valoreSliderBlu ==blu)){} +else{ + //send values + mouseReleased(); + } +} + +public void handleButtonEvents(GButton button, GEvent event) { + //buttons actions + if (button == btnConnetti){ + porta = sceltaPorta.getSelectedText(); + nucleoPort = new Serial(this, porta, 9600); println(porta);} + else if (button == btnBlu){ + nucleoPort.write('B'); + nucleoPort.write(255); + delay(100); + nucleoPort.write('R'); + nucleoPort.write(0); + delay(100); + nucleoPort.write('G'); + nucleoPort.write(0); + delay(100);} + else if (button == btnVerde){ + nucleoPort.write('G'); + nucleoPort.write(255); + delay(100); + nucleoPort.write('R'); + nucleoPort.write(0); + delay(100); + nucleoPort.write('B'); + nucleoPort.write(0); + delay(100);} + else if (button == btnRosso){ + nucleoPort.write('R'); + nucleoPort.write(255); + delay(100); + nucleoPort.write('B'); + nucleoPort.write(0); + delay(100); + nucleoPort.write('G'); + nucleoPort.write(0); + delay(100); + } + +} +void setZero(){ + nucleoPort.write('G'); + nucleoPort.write(0); + nucleoPort.write('R'); + nucleoPort.write(0); + nucleoPort.write('B'); + nucleoPort.write(0); +} +void mouseReleased(){ + nucleoPort.write('G'); + nucleoPort.write(verde); + valoreSliderVerde=verde; + + nucleoPort.write('R'); + nucleoPort.write(rosso); + valoreSliderRosso=rosso; + + nucleoPort.write('B'); + nucleoPort.write(blu); + valoreSliderBlu=blu;} +*/ + // Nucleo program #include "mbed.h" PwmOut red(D10);