Example of how use the Nucleo board with a processing GUI program. Processing code in the description section of mbed program.

Dependencies:   mbed

Committer:
dreamworker
Date:
Sat Jul 18 09:43:45 2015 +0000
Revision:
2:fb5b849eefa1
Parent:
1:b89267dee6da
Example of how use the Nucleo board with a processing GUI program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dreamworker 2:fb5b849eefa1 1 //Example of how use the Nucleo board with a Processing GUI program
dreamworker 2:fb5b849eefa1 2 /* Processing Code
dreamworker 2:fb5b849eefa1 3 import g4p_controls.*; // GUI library
dreamworker 2:fb5b849eefa1 4 import processing.serial.*; //serial library
dreamworker 2:fb5b849eefa1 5 int rosso, verde, blu;
dreamworker 2:fb5b849eefa1 6 int valoreSliderRosso,valoreSliderVerde,valoreSliderBlu;
dreamworker 2:fb5b849eefa1 7 String porta;
dreamworker 2:fb5b849eefa1 8
dreamworker 2:fb5b849eefa1 9 Serial nucleoPort;
dreamworker 2:fb5b849eefa1 10 GCustomSlider sdrRosso, sdrVerde, sdrBlu; // sliders creation
dreamworker 2:fb5b849eefa1 11 GButton btnRosso, btnVerde, btnBlu, btnConnetti;//buttons creation
dreamworker 2:fb5b849eefa1 12 GLabel Rosso, Verde, Blu, Porte; //labels creation
dreamworker 2:fb5b849eefa1 13 GDropList sceltaPorta;//port selector creation
dreamworker 2:fb5b849eefa1 14 void setup() {
dreamworker 2:fb5b849eefa1 15 size(500, 320);
dreamworker 2:fb5b849eefa1 16 frame.setTitle("Nucleo RGB Color");
dreamworker 2:fb5b849eefa1 17 //=============================================================
dreamworker 2:fb5b849eefa1 18 // sliders
dreamworker 2:fb5b849eefa1 19 sdrRosso = new GCustomSlider(this, 20, 30, 380, 50, null);
dreamworker 2:fb5b849eefa1 20 sdrRosso.setShowDecor(false, false, true, true);
dreamworker 2:fb5b849eefa1 21 sdrRosso.setNbrTicks(5);
dreamworker 2:fb5b849eefa1 22 sdrRosso.setLimits(0, 0, 255);
dreamworker 2:fb5b849eefa1 23 valoreSliderRosso=0;
dreamworker 2:fb5b849eefa1 24
dreamworker 2:fb5b849eefa1 25 sdrVerde = new GCustomSlider(this, 20, 90, 380, 50, null);
dreamworker 2:fb5b849eefa1 26 sdrVerde.setShowDecor(false, false, true, true);
dreamworker 2:fb5b849eefa1 27 sdrVerde.setNbrTicks(5);
dreamworker 2:fb5b849eefa1 28 sdrVerde.setLimits(0, 0, 255);
dreamworker 2:fb5b849eefa1 29 valoreSliderVerde=0;
dreamworker 2:fb5b849eefa1 30
dreamworker 2:fb5b849eefa1 31 sdrBlu = new GCustomSlider(this, 20, 150, 380, 50, null);
dreamworker 2:fb5b849eefa1 32 sdrBlu.setShowDecor(false, false, true, true);
dreamworker 2:fb5b849eefa1 33 sdrBlu.setNbrTicks(5);
dreamworker 2:fb5b849eefa1 34 sdrBlu.setLimits(0, 0, 255);
dreamworker 2:fb5b849eefa1 35 valoreSliderBlu=0;
dreamworker 2:fb5b849eefa1 36
dreamworker 2:fb5b849eefa1 37 //=============================================================
dreamworker 2:fb5b849eefa1 38 //label
dreamworker 2:fb5b849eefa1 39 Rosso = new GLabel(this, 150, 10, 110, 50);
dreamworker 2:fb5b849eefa1 40 Rosso.setText("Red");
dreamworker 2:fb5b849eefa1 41 Rosso.setTextBold();
dreamworker 2:fb5b849eefa1 42
dreamworker 2:fb5b849eefa1 43 Verde = new GLabel(this, 150, 70, 110, 50);
dreamworker 2:fb5b849eefa1 44 Verde.setText("Green");
dreamworker 2:fb5b849eefa1 45 Verde.setTextBold();
dreamworker 2:fb5b849eefa1 46
dreamworker 2:fb5b849eefa1 47 Blu = new GLabel(this, 150, 130, 110, 50);
dreamworker 2:fb5b849eefa1 48 Blu.setText("Blue");
dreamworker 2:fb5b849eefa1 49 Blu.setTextBold();
dreamworker 2:fb5b849eefa1 50
dreamworker 2:fb5b849eefa1 51 Porte = new GLabel(this, 285, 180, 110, 50);
dreamworker 2:fb5b849eefa1 52 Porte.setText("Port Selection");
dreamworker 2:fb5b849eefa1 53 Porte.setTextBold();
dreamworker 2:fb5b849eefa1 54
dreamworker 2:fb5b849eefa1 55 //=============================================================
dreamworker 2:fb5b849eefa1 56 //buttons
dreamworker 2:fb5b849eefa1 57 btnRosso = new GButton(this, 20, 220, 80, 40, "Red");
dreamworker 2:fb5b849eefa1 58 btnRosso.setTextBold();
dreamworker 2:fb5b849eefa1 59 btnRosso.setLocalColorScheme(5);
dreamworker 2:fb5b849eefa1 60
dreamworker 2:fb5b849eefa1 61 btnVerde = new GButton(this, 110, 220, 80, 40, "Green");
dreamworker 2:fb5b849eefa1 62 btnVerde.setTextBold();
dreamworker 2:fb5b849eefa1 63 btnVerde.setLocalColorScheme(5);
dreamworker 2:fb5b849eefa1 64
dreamworker 2:fb5b849eefa1 65 btnBlu = new GButton(this, 210, 220, 80, 40, "Blue");
dreamworker 2:fb5b849eefa1 66 btnBlu.setTextBold();
dreamworker 2:fb5b849eefa1 67 btnBlu.setLocalColorScheme(5);
dreamworker 2:fb5b849eefa1 68
dreamworker 2:fb5b849eefa1 69 btnConnetti = new GButton(this, 300, 240, 80, 20, "Connect");
dreamworker 2:fb5b849eefa1 70 btnConnetti.setTextBold();
dreamworker 2:fb5b849eefa1 71 btnConnetti.setLocalColorScheme(7);
dreamworker 2:fb5b849eefa1 72
dreamworker 2:fb5b849eefa1 73 //=============================================================
dreamworker 2:fb5b849eefa1 74 //serial port
dreamworker 2:fb5b849eefa1 75
dreamworker 2:fb5b849eefa1 76 sceltaPorta = new GDropList(this,300,220,80,50,3);
dreamworker 2:fb5b849eefa1 77 sceltaPorta.setItems(Serial.list(),0);//serial port aviable list
dreamworker 2:fb5b849eefa1 78 porta = sceltaPorta.getSelectedText();
dreamworker 2:fb5b849eefa1 79 nucleoPort = new Serial(this, porta, 9600); //serial port assignament
dreamworker 2:fb5b849eefa1 80 //initialization
dreamworker 2:fb5b849eefa1 81 while (nucleoPort.available()<0){
dreamworker 2:fb5b849eefa1 82 setZero();}
dreamworker 2:fb5b849eefa1 83
dreamworker 2:fb5b849eefa1 84 }
dreamworker 2:fb5b849eefa1 85 void draw() {
dreamworker 2:fb5b849eefa1 86 //background color
dreamworker 2:fb5b849eefa1 87 background(68, 111, 216);
dreamworker 2:fb5b849eefa1 88 //=============================================================
dreamworker 2:fb5b849eefa1 89 //color boxes
dreamworker 2:fb5b849eefa1 90 //red
dreamworker 2:fb5b849eefa1 91 strokeWeight(2);
dreamworker 2:fb5b849eefa1 92 stroke(104, 104, 255);
dreamworker 2:fb5b849eefa1 93 rosso=sdrRosso.getValueI();
dreamworker 2:fb5b849eefa1 94 fill(rosso, 0, 0);
dreamworker 2:fb5b849eefa1 95 rect(400,40,40,40,7);
dreamworker 2:fb5b849eefa1 96
dreamworker 2:fb5b849eefa1 97 //green
dreamworker 2:fb5b849eefa1 98 strokeWeight(2);
dreamworker 2:fb5b849eefa1 99 stroke(104, 104, 255);
dreamworker 2:fb5b849eefa1 100 verde=sdrVerde.getValueI();
dreamworker 2:fb5b849eefa1 101 fill(0, verde, 0);
dreamworker 2:fb5b849eefa1 102 rect(400,100,40,40,7);
dreamworker 2:fb5b849eefa1 103
dreamworker 2:fb5b849eefa1 104 //blue
dreamworker 2:fb5b849eefa1 105 strokeWeight(2);
dreamworker 2:fb5b849eefa1 106 stroke(104, 104, 255);
dreamworker 2:fb5b849eefa1 107 blu=sdrBlu.getValueI();
dreamworker 2:fb5b849eefa1 108 fill(0, 0, blu);
dreamworker 2:fb5b849eefa1 109 rect(400,160,40,40,7);
dreamworker 2:fb5b849eefa1 110
dreamworker 2:fb5b849eefa1 111 //mixed
dreamworker 2:fb5b849eefa1 112 strokeWeight(2);
dreamworker 2:fb5b849eefa1 113 stroke(120, 120, 255);
dreamworker 2:fb5b849eefa1 114 fill(rosso, verde, blu);
dreamworker 2:fb5b849eefa1 115 rect(400,220,80,80,7);
dreamworker 2:fb5b849eefa1 116
dreamworker 2:fb5b849eefa1 117 if ((valoreSliderRosso == rosso) && (valoreSliderVerde == verde) && (valoreSliderBlu ==blu)){}
dreamworker 2:fb5b849eefa1 118 else{
dreamworker 2:fb5b849eefa1 119 //send values
dreamworker 2:fb5b849eefa1 120 mouseReleased();
dreamworker 2:fb5b849eefa1 121 }
dreamworker 2:fb5b849eefa1 122 }
dreamworker 2:fb5b849eefa1 123
dreamworker 2:fb5b849eefa1 124 public void handleButtonEvents(GButton button, GEvent event) {
dreamworker 2:fb5b849eefa1 125 //buttons actions
dreamworker 2:fb5b849eefa1 126 if (button == btnConnetti){
dreamworker 2:fb5b849eefa1 127 porta = sceltaPorta.getSelectedText();
dreamworker 2:fb5b849eefa1 128 nucleoPort = new Serial(this, porta, 9600); println(porta);}
dreamworker 2:fb5b849eefa1 129 else if (button == btnBlu){
dreamworker 2:fb5b849eefa1 130 nucleoPort.write('B');
dreamworker 2:fb5b849eefa1 131 nucleoPort.write(255);
dreamworker 2:fb5b849eefa1 132 delay(100);
dreamworker 2:fb5b849eefa1 133 nucleoPort.write('R');
dreamworker 2:fb5b849eefa1 134 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 135 delay(100);
dreamworker 2:fb5b849eefa1 136 nucleoPort.write('G');
dreamworker 2:fb5b849eefa1 137 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 138 delay(100);}
dreamworker 2:fb5b849eefa1 139 else if (button == btnVerde){
dreamworker 2:fb5b849eefa1 140 nucleoPort.write('G');
dreamworker 2:fb5b849eefa1 141 nucleoPort.write(255);
dreamworker 2:fb5b849eefa1 142 delay(100);
dreamworker 2:fb5b849eefa1 143 nucleoPort.write('R');
dreamworker 2:fb5b849eefa1 144 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 145 delay(100);
dreamworker 2:fb5b849eefa1 146 nucleoPort.write('B');
dreamworker 2:fb5b849eefa1 147 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 148 delay(100);}
dreamworker 2:fb5b849eefa1 149 else if (button == btnRosso){
dreamworker 2:fb5b849eefa1 150 nucleoPort.write('R');
dreamworker 2:fb5b849eefa1 151 nucleoPort.write(255);
dreamworker 2:fb5b849eefa1 152 delay(100);
dreamworker 2:fb5b849eefa1 153 nucleoPort.write('B');
dreamworker 2:fb5b849eefa1 154 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 155 delay(100);
dreamworker 2:fb5b849eefa1 156 nucleoPort.write('G');
dreamworker 2:fb5b849eefa1 157 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 158 delay(100);
dreamworker 2:fb5b849eefa1 159 }
dreamworker 2:fb5b849eefa1 160
dreamworker 2:fb5b849eefa1 161 }
dreamworker 2:fb5b849eefa1 162 void setZero(){
dreamworker 2:fb5b849eefa1 163 nucleoPort.write('G');
dreamworker 2:fb5b849eefa1 164 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 165 nucleoPort.write('R');
dreamworker 2:fb5b849eefa1 166 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 167 nucleoPort.write('B');
dreamworker 2:fb5b849eefa1 168 nucleoPort.write(0);
dreamworker 2:fb5b849eefa1 169 }
dreamworker 2:fb5b849eefa1 170 void mouseReleased(){
dreamworker 2:fb5b849eefa1 171 nucleoPort.write('G');
dreamworker 2:fb5b849eefa1 172 nucleoPort.write(verde);
dreamworker 2:fb5b849eefa1 173 valoreSliderVerde=verde;
dreamworker 2:fb5b849eefa1 174
dreamworker 2:fb5b849eefa1 175 nucleoPort.write('R');
dreamworker 2:fb5b849eefa1 176 nucleoPort.write(rosso);
dreamworker 2:fb5b849eefa1 177 valoreSliderRosso=rosso;
dreamworker 2:fb5b849eefa1 178
dreamworker 2:fb5b849eefa1 179 nucleoPort.write('B');
dreamworker 2:fb5b849eefa1 180 nucleoPort.write(blu);
dreamworker 2:fb5b849eefa1 181 valoreSliderBlu=blu;}
dreamworker 2:fb5b849eefa1 182 */
dreamworker 2:fb5b849eefa1 183
dreamworker 0:842c6c950cf5 184 // Nucleo program
dreamworker 0:842c6c950cf5 185 #include "mbed.h"
dreamworker 0:842c6c950cf5 186 PwmOut red(D10);
dreamworker 0:842c6c950cf5 187 PwmOut green(D11);
dreamworker 0:842c6c950cf5 188 PwmOut blue(D12);
dreamworker 0:842c6c950cf5 189 Serial Processing(USBTX, USBRX);
dreamworker 0:842c6c950cf5 190 float mapRed,mapGreen,mapBlue;
dreamworker 0:842c6c950cf5 191 char c;
dreamworker 0:842c6c950cf5 192 int val;
dreamworker 0:842c6c950cf5 193 float map(int value, float x_min, float x_max, float y_min, float y_max)
dreamworker 0:842c6c950cf5 194 {
dreamworker 0:842c6c950cf5 195 return (y_min + (((y_max - y_min)/(x_max - x_min)) * (value - x_min)));
dreamworker 0:842c6c950cf5 196 }
dreamworker 0:842c6c950cf5 197 int main(){
dreamworker 0:842c6c950cf5 198 red = 1;
dreamworker 0:842c6c950cf5 199 wait(0.2);
dreamworker 0:842c6c950cf5 200 red = 0;
dreamworker 0:842c6c950cf5 201 green = 1;
dreamworker 0:842c6c950cf5 202 wait(0.2);
dreamworker 0:842c6c950cf5 203 green = 0;
dreamworker 0:842c6c950cf5 204 blue = 1;
dreamworker 0:842c6c950cf5 205 wait(0.2);
dreamworker 0:842c6c950cf5 206 blue = 0;
dreamworker 0:842c6c950cf5 207 Processing.baud(9600);
dreamworker 0:842c6c950cf5 208 while(1){
dreamworker 0:842c6c950cf5 209 if (Processing.readable()==1){
dreamworker 0:842c6c950cf5 210 c=Processing.getc();
dreamworker 0:842c6c950cf5 211 if (c != 'E'){
dreamworker 0:842c6c950cf5 212 if (c=='R'){
dreamworker 0:842c6c950cf5 213 val = Processing.getc();
dreamworker 0:842c6c950cf5 214 mapRed=map( val, 0, 255, 0, 1);
dreamworker 0:842c6c950cf5 215 red.write(mapRed);}
dreamworker 0:842c6c950cf5 216 else if ( c == 'G'){
dreamworker 0:842c6c950cf5 217 val = Processing.getc();
dreamworker 0:842c6c950cf5 218 mapGreen = map( val, 0, 255, 0, 1);
dreamworker 0:842c6c950cf5 219 green.write(mapGreen);}
dreamworker 0:842c6c950cf5 220 else if ( c == 'B'){
dreamworker 0:842c6c950cf5 221 val = Processing.getc();
dreamworker 0:842c6c950cf5 222 mapBlue = map( val, 0, 255, 0, 1);
dreamworker 0:842c6c950cf5 223 blue.write(mapBlue);}
dreamworker 0:842c6c950cf5 224 else {}
dreamworker 0:842c6c950cf5 225 }
dreamworker 0:842c6c950cf5 226 else {}
dreamworker 0:842c6c950cf5 227 }
dreamworker 0:842c6c950cf5 228 }
dreamworker 0:842c6c950cf5 229 }
dreamworker 0:842c6c950cf5 230