Example of how use the Nucleo board with a processing GUI program. Processing code in the description section of mbed program.
main.cpp@2:fb5b849eefa1, 2015-07-18 (annotated)
- 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?
User | Revision | Line number | New 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 |