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