![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Test ok
Dependencies: mbed MPU6050 DS1820
main.cpp@2:0e87ebc53aa8, 2019-10-11 (annotated)
- Committer:
- wf
- Date:
- Fri Oct 11 09:44:36 2019 +0000
- Revision:
- 2:0e87ebc53aa8
- Parent:
- 1:75b533b777ad
- Child:
- 3:3dcdaf0d09a1
Test Board
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wf | 2:0e87ebc53aa8 | 1 | // NUClight_TEST1_V3 |
wf | 0:f007d2f125be | 2 | // Diese Software testet die verschiedenen Funktionen des M0 Boards |
wf | 2:0e87ebc53aa8 | 3 | // BULME Graz, by F. Wolf 05.10.2019 |
wf | 0:f007d2f125be | 4 | /* |
wf | 0:f007d2f125be | 5 | PIN-OUT-NUClight |
wf | 0:f007d2f125be | 6 | NUCLEO-L432KC |
wf | 2:0e87ebc53aa8 | 7 | RGB-rot D1|-------| VIn |
wf | 2:0e87ebc53aa8 | 8 | RGB-gruen D0| | GND |
wf | 2:0e87ebc53aa8 | 9 | NRST| | RST |
wf | 2:0e87ebc53aa8 | 10 | GND| | 5V0 |
wf | 2:0e87ebc53aa8 | 11 | LED1 <-D2| | A7 |
wf | 2:0e87ebc53aa8 | 12 | LED2 <-D3| | A6 -> LED7 |
wf | 2:0e87ebc53aa8 | 13 | SDA (I2C) (MPU6050 gyro) <- D4| | A5 |
wf | 2:0e87ebc53aa8 | 14 | SCL (I2C) (MPU6050 gyro) <- D5| | A4 |
wf | 2:0e87ebc53aa8 | 15 | LED3 <-D6| | A3 -> POTI |
wf | 2:0e87ebc53aa8 | 16 | nc D7| | A2 -> Taster |
wf | 2:0e87ebc53aa8 | 17 | nc D8| | A1 -> Taster |
wf | 2:0e87ebc53aa8 | 18 | LED4 D9| | A0 -> DS18B20 |
wf | 2:0e87ebc53aa8 | 19 | RGB-blau <- D10| | ARF |
wf | 2:0e87ebc53aa8 | 20 | LED5 <- D11| | 3V0 |
wf | 2:0e87ebc53aa8 | 21 | LED6 <- D12|-------| D13 -> LED8 |
wf | 0:f007d2f125be | 22 | |
wf | 0:f007d2f125be | 23 | RGB LED aktiv hight (1) |
wf | 0:f007d2f125be | 24 | */ |
wf | 0:f007d2f125be | 25 | |
wf | 0:f007d2f125be | 26 | #include <mbed.h> |
wf | 0:f007d2f125be | 27 | #include "MPU6050.h" |
wf | 0:f007d2f125be | 28 | #include "DS1820.h" |
wf | 0:f007d2f125be | 29 | |
wf | 0:f007d2f125be | 30 | #define DATA_PIN A0 // DS18B20 |
wf | 0:f007d2f125be | 31 | #define MAX_PROBES 2 |
wf | 0:f007d2f125be | 32 | |
wf | 0:f007d2f125be | 33 | // ******** Definitionen ********** |
wf | 0:f007d2f125be | 34 | //Serial pc(USBTX, USBRX); |
wf | 0:f007d2f125be | 35 | Serial pc(SERIAL_TX,SERIAL_RX); |
wf | 0:f007d2f125be | 36 | |
wf | 0:f007d2f125be | 37 | // Definition der Taster (Switches) |
wf | 0:f007d2f125be | 38 | /* |
wf | 0:f007d2f125be | 39 | InterruptIn sw1(A1); //SW1 |
wf | 0:f007d2f125be | 40 | InterruptIn sw2(A2); //SW2 -> sein IO Pin ist laut Schaltplan der P0_15 |
wf | 0:f007d2f125be | 41 | InterruptIn sw3(A3); //SW3 |
wf | 0:f007d2f125be | 42 | */ |
wf | 0:f007d2f125be | 43 | InterruptIn sw1(A1); |
wf | 0:f007d2f125be | 44 | InterruptIn sw2(A2); |
wf | 2:0e87ebc53aa8 | 45 | AnalogIn ain(A3); |
wf | 0:f007d2f125be | 46 | |
wf | 2:0e87ebc53aa8 | 47 | // Definition der 8 LED's |
wf | 0:f007d2f125be | 48 | DigitalOut led1(D2); |
wf | 0:f007d2f125be | 49 | DigitalOut led2(D3); |
wf | 0:f007d2f125be | 50 | DigitalOut led3(D6); |
wf | 2:0e87ebc53aa8 | 51 | DigitalOut led4(D9); |
wf | 2:0e87ebc53aa8 | 52 | DigitalOut led5(D11); |
wf | 2:0e87ebc53aa8 | 53 | DigitalOut led6(D12); |
wf | 2:0e87ebc53aa8 | 54 | DigitalOut led7(A6); |
wf | 2:0e87ebc53aa8 | 55 | DigitalOut led8(D13); // on Board LED |
wf | 0:f007d2f125be | 56 | |
wf | 0:f007d2f125be | 57 | // RGB LED |
wf | 2:0e87ebc53aa8 | 58 | //DigitalOut RGBb(D0); // blaue LED |
wf | 2:0e87ebc53aa8 | 59 | //DigitalOut RGBg(D1); // grüne LED |
wf | 2:0e87ebc53aa8 | 60 | //DigitalOut RGBr(D12); // rote LED |
wf | 2:0e87ebc53aa8 | 61 | PwmOut RGBg(D0); // gruen LED |
wf | 2:0e87ebc53aa8 | 62 | PwmOut RGBr(D1); // rote LED |
wf | 2:0e87ebc53aa8 | 63 | PwmOut RGBb(D10); // blaue LED |
wf | 0:f007d2f125be | 64 | |
wf | 0:f007d2f125be | 65 | int a; |
wf | 0:f007d2f125be | 66 | int num_devices = 0; |
wf | 0:f007d2f125be | 67 | |
wf | 0:f007d2f125be | 68 | //mpu6050 |
wf | 0:f007d2f125be | 69 | //creating onject of MPU6050 class |
wf | 0:f007d2f125be | 70 | MPU6050 ark(D4,D5); // MPU6050(PinName sda, PinName scl); |
wf | 0:f007d2f125be | 71 | DS1820* probe[MAX_PROBES]; |
wf | 0:f007d2f125be | 72 | |
wf | 0:f007d2f125be | 73 | // ********** Deklarationen ************** |
wf | 0:f007d2f125be | 74 | void RGBtest(); |
wf | 0:f007d2f125be | 75 | void LEDtest(); |
wf | 0:f007d2f125be | 76 | void LEDonoff(); |
wf | 0:f007d2f125be | 77 | |
wf | 0:f007d2f125be | 78 | // ********** Hauptprogramm ************** |
wf | 0:f007d2f125be | 79 | int main() |
wf | 0:f007d2f125be | 80 | { |
wf | 2:0e87ebc53aa8 | 81 | pc.printf("Welcome to NUClight TEST V2 \r\n"); //HTerm Welcome Message |
wf | 0:f007d2f125be | 82 | |
wf | 0:f007d2f125be | 83 | while(1) |
wf | 0:f007d2f125be | 84 | { |
wf | 0:f007d2f125be | 85 | // attach the address of the flip function to the rising edge |
wf | 0:f007d2f125be | 86 | sw1.fall(&RGBtest); //RGB-Test Unterprogramm aufrufen |
wf | 0:f007d2f125be | 87 | sw2.fall(&LEDonoff); //LED ON OFF - Test Unterprogramm aufrufen |
wf | 0:f007d2f125be | 88 | |
wf | 2:0e87ebc53aa8 | 89 | pc.printf("percentage: %3.3f%%\n", ain.read()*100.0f); |
wf | 2:0e87ebc53aa8 | 90 | |
wf | 2:0e87ebc53aa8 | 91 | |
wf | 2:0e87ebc53aa8 | 92 | RGBr.period_ms(20.0f); // 20 mili second period |
wf | 2:0e87ebc53aa8 | 93 | RGBr.pulsewidth_ms(ain.read()*10.0f); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 94 | |
wf | 0:f007d2f125be | 95 | |
wf | 2:0e87ebc53aa8 | 96 | |
wf | 2:0e87ebc53aa8 | 97 | |
wf | 2:0e87ebc53aa8 | 98 | wait(1); |
wf | 0:f007d2f125be | 99 | |
wf | 0:f007d2f125be | 100 | /*************** MPU6050 (gyro) TEST *******************************/ |
wf | 0:f007d2f125be | 101 | |
wf | 0:f007d2f125be | 102 | //reading Temprature |
wf | 0:f007d2f125be | 103 | float temp = ark.getTemp(); |
wf | 0:f007d2f125be | 104 | pc.printf("MPU6050-temprature = %0.2f ^C\r\n",temp); |
wf | 0:f007d2f125be | 105 | |
wf | 0:f007d2f125be | 106 | //reading Grometer readings |
wf | 0:f007d2f125be | 107 | float gyro[3]; |
wf | 0:f007d2f125be | 108 | ark.getGyro(gyro); |
wf | 0:f007d2f125be | 109 | pc.printf("Gyro0=%0.3f,\tGyro1=%0.3f,\tGyro2=%0.3f\r\n",gyro[0],gyro[1],gyro[2]); |
wf | 0:f007d2f125be | 110 | |
wf | 0:f007d2f125be | 111 | //reading Acclerometer readings |
wf | 0:f007d2f125be | 112 | float acce[3]; |
wf | 0:f007d2f125be | 113 | ark.getAccelero(acce); |
wf | 0:f007d2f125be | 114 | pc.printf("Acce0=%0.3f,Acce1=%0.3f,Acce2=%0.3f\r\n",acce[0],acce[1],acce[2]); |
wf | 0:f007d2f125be | 115 | |
wf | 0:f007d2f125be | 116 | wait(1); //wait 1000ms |
wf | 0:f007d2f125be | 117 | |
wf | 0:f007d2f125be | 118 | //DS18B20 |
wf | 0:f007d2f125be | 119 | |
wf | 0:f007d2f125be | 120 | // define MULTIPLE_PROBES |
wf | 0:f007d2f125be | 121 | DS1820* probe[MAX_PROBES]; |
wf | 0:f007d2f125be | 122 | |
wf | 0:f007d2f125be | 123 | // Initialize the probe array to DS1820 objects |
wf | 0:f007d2f125be | 124 | // int num_devices = 0; |
wf | 0:f007d2f125be | 125 | while(DS1820::unassignedProbe(DATA_PIN)) { |
wf | 0:f007d2f125be | 126 | probe[num_devices] = new DS1820(DATA_PIN); |
wf | 0:f007d2f125be | 127 | num_devices++; |
wf | 0:f007d2f125be | 128 | if (num_devices == MAX_PROBES) |
wf | 0:f007d2f125be | 129 | break; |
wf | 0:f007d2f125be | 130 | } |
wf | 0:f007d2f125be | 131 | |
wf | 0:f007d2f125be | 132 | printf("Found %d device(s)\r\n\n", num_devices); |
wf | 0:f007d2f125be | 133 | |
wf | 0:f007d2f125be | 134 | probe[0]->convertTemperature(true, DS1820::all_devices); //Start temperature conversion, wait until ready |
wf | 0:f007d2f125be | 135 | for (int i = 0; i<num_devices; i++) |
wf | 0:f007d2f125be | 136 | printf("DS18B20-Device %d returns %3.1f oC\r\n", i, probe[i]->temperature()); |
wf | 0:f007d2f125be | 137 | printf("\r\n"); |
wf | 0:f007d2f125be | 138 | wait(1); |
wf | 0:f007d2f125be | 139 | |
wf | 0:f007d2f125be | 140 | wait(1); |
wf | 0:f007d2f125be | 141 | } |
wf | 0:f007d2f125be | 142 | } |
wf | 0:f007d2f125be | 143 | /**************************************************** Unterprogramme****************************************************/ |
wf | 0:f007d2f125be | 144 | /***********************************************************************************************************************/ |
wf | 0:f007d2f125be | 145 | |
wf | 0:f007d2f125be | 146 | /************************** RGB ****************************/ |
wf | 0:f007d2f125be | 147 | /***********************************************************/ |
wf | 0:f007d2f125be | 148 | void RGBtest() |
wf | 0:f007d2f125be | 149 | { |
wf | 2:0e87ebc53aa8 | 150 | pc.printf("RGBTEST\r\n"); //HTerm Ausgabe |
wf | 2:0e87ebc53aa8 | 151 | |
wf | 2:0e87ebc53aa8 | 152 | LEDtest(); |
wf | 2:0e87ebc53aa8 | 153 | |
wf | 2:0e87ebc53aa8 | 154 | for (int t=1; t<15;t++) |
wf | 2:0e87ebc53aa8 | 155 | { |
wf | 2:0e87ebc53aa8 | 156 | RGBr.period_ms(20.0f); // 20 mili second period |
wf | 2:0e87ebc53aa8 | 157 | RGBr.pulsewidth_ms(t); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 158 | wait(0.3); |
wf | 2:0e87ebc53aa8 | 159 | } |
wf | 2:0e87ebc53aa8 | 160 | |
wf | 2:0e87ebc53aa8 | 161 | RGBr.pulsewidth_ms(0); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 162 | |
wf | 2:0e87ebc53aa8 | 163 | for (int t=1; t<15;t++) |
wf | 2:0e87ebc53aa8 | 164 | { |
wf | 2:0e87ebc53aa8 | 165 | RGBg.period_ms(20.0f); // 20 mili second period |
wf | 2:0e87ebc53aa8 | 166 | RGBg.pulsewidth_ms(t); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 167 | wait(0.3); |
wf | 2:0e87ebc53aa8 | 168 | } |
wf | 2:0e87ebc53aa8 | 169 | |
wf | 2:0e87ebc53aa8 | 170 | RGBr.pulsewidth_ms(0); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 171 | RGBg.pulsewidth_ms(0); // 5 mili second pulse (on) |
wf | 0:f007d2f125be | 172 | |
wf | 2:0e87ebc53aa8 | 173 | for (int t=1; t<15;t++) |
wf | 2:0e87ebc53aa8 | 174 | { |
wf | 2:0e87ebc53aa8 | 175 | RGBb.period_ms(20.0f); // 20 mili second period |
wf | 2:0e87ebc53aa8 | 176 | RGBb.pulsewidth_ms(t); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 177 | wait(0.3); |
wf | 2:0e87ebc53aa8 | 178 | } |
wf | 2:0e87ebc53aa8 | 179 | |
wf | 2:0e87ebc53aa8 | 180 | wait(1); |
wf | 2:0e87ebc53aa8 | 181 | RGBr.pulsewidth_ms(0); // RGB-LED off |
wf | 2:0e87ebc53aa8 | 182 | RGBg.pulsewidth_ms(0); // |
wf | 2:0e87ebc53aa8 | 183 | RGBb.pulsewidth_ms(0); // |
wf | 2:0e87ebc53aa8 | 184 | |
wf | 2:0e87ebc53aa8 | 185 | int rr=(rand()%15); |
wf | 2:0e87ebc53aa8 | 186 | int rg=(rand()%15); |
wf | 2:0e87ebc53aa8 | 187 | int rb=(rand()%15); |
wf | 2:0e87ebc53aa8 | 188 | |
wf | 2:0e87ebc53aa8 | 189 | RGBr.period_ms(20.0f); // 20 mili second period |
wf | 2:0e87ebc53aa8 | 190 | RGBr.pulsewidth_ms(rr); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 191 | |
wf | 2:0e87ebc53aa8 | 192 | RGBg.period_ms(20.0f); // 20 mili second period |
wf | 2:0e87ebc53aa8 | 193 | RGBg.pulsewidth_ms(rg); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 194 | |
wf | 2:0e87ebc53aa8 | 195 | RGBb.period_ms(20.0f); // 20 mili second period |
wf | 2:0e87ebc53aa8 | 196 | RGBb.pulsewidth_ms(rb); // 5 mili second pulse (on) |
wf | 2:0e87ebc53aa8 | 197 | |
wf | 2:0e87ebc53aa8 | 198 | wait(1); |
wf | 2:0e87ebc53aa8 | 199 | RGBr.pulsewidth_ms(0); // RGB-LED off |
wf | 2:0e87ebc53aa8 | 200 | RGBg.pulsewidth_ms(0); // |
wf | 2:0e87ebc53aa8 | 201 | RGBb.pulsewidth_ms(0); // |
wf | 2:0e87ebc53aa8 | 202 | |
wf | 0:f007d2f125be | 203 | } |
wf | 0:f007d2f125be | 204 | |
wf | 0:f007d2f125be | 205 | /************************** LED ****************************/ |
wf | 0:f007d2f125be | 206 | /***********************************************************/ |
wf | 0:f007d2f125be | 207 | void LEDtest() |
wf | 0:f007d2f125be | 208 | { |
wf | 2:0e87ebc53aa8 | 209 | pc.printf("LAUFLICHT UEBER 8 LED (5-mal) \r\n"); //HTerm Ausgabe |
wf | 0:f007d2f125be | 210 | a=0; |
wf | 0:f007d2f125be | 211 | |
wf | 0:f007d2f125be | 212 | while (a<5) { |
wf | 0:f007d2f125be | 213 | led1=1; //Led1 einschalten |
wf | 0:f007d2f125be | 214 | wait(0.2); |
wf | 0:f007d2f125be | 215 | led1=0; //Led1 ausschalten |
wf | 0:f007d2f125be | 216 | |
wf | 0:f007d2f125be | 217 | led2=1; //Led2 einschalten |
wf | 0:f007d2f125be | 218 | wait(0.2); |
wf | 0:f007d2f125be | 219 | led2=0; //Led2 ausschalten |
wf | 0:f007d2f125be | 220 | |
wf | 0:f007d2f125be | 221 | led3=1; //Led3 einschalten |
wf | 0:f007d2f125be | 222 | wait(0.2); |
wf | 0:f007d2f125be | 223 | led3=0; //Led3 ausschalten |
wf | 0:f007d2f125be | 224 | |
wf | 2:0e87ebc53aa8 | 225 | led4=1; //Led1 einschalten |
wf | 2:0e87ebc53aa8 | 226 | wait(0.2); |
wf | 2:0e87ebc53aa8 | 227 | led4=0; //Led1 ausschalten |
wf | 2:0e87ebc53aa8 | 228 | |
wf | 2:0e87ebc53aa8 | 229 | led5=1; //Led2 einschalten |
wf | 2:0e87ebc53aa8 | 230 | wait(0.2); |
wf | 2:0e87ebc53aa8 | 231 | led5=0; //Led2 ausschalten |
wf | 2:0e87ebc53aa8 | 232 | |
wf | 2:0e87ebc53aa8 | 233 | led6=1; //Led3 einschalten |
wf | 2:0e87ebc53aa8 | 234 | wait(0.2); |
wf | 2:0e87ebc53aa8 | 235 | led6=0; //Led3 ausschalten |
wf | 2:0e87ebc53aa8 | 236 | |
wf | 2:0e87ebc53aa8 | 237 | led7=1; //Led2 einschalten |
wf | 2:0e87ebc53aa8 | 238 | wait(0.2); |
wf | 2:0e87ebc53aa8 | 239 | led7=0; //Led2 ausschalten |
wf | 2:0e87ebc53aa8 | 240 | |
wf | 2:0e87ebc53aa8 | 241 | led8=1; //Led3 einschalten |
wf | 2:0e87ebc53aa8 | 242 | wait(0.2); |
wf | 2:0e87ebc53aa8 | 243 | led8=0; //Led3 ausschalten |
wf | 2:0e87ebc53aa8 | 244 | |
wf | 0:f007d2f125be | 245 | a++; |
wf | 0:f007d2f125be | 246 | } |
wf | 0:f007d2f125be | 247 | } |
wf | 0:f007d2f125be | 248 | |
wf | 0:f007d2f125be | 249 | /************************ Sensoren *************************/ |
wf | 0:f007d2f125be | 250 | /***********************************************************/ |
wf | 0:f007d2f125be | 251 | void LEDonoff() |
wf | 0:f007d2f125be | 252 | { |
wf | 0:f007d2f125be | 253 | led1=!led1; //Led1 einschalten |
wf | 0:f007d2f125be | 254 | led2=!led2; //Led1 einschalten |
wf | 0:f007d2f125be | 255 | led3=!led3; //Led1 einschalten |
wf | 2:0e87ebc53aa8 | 256 | led4=!led4; //Led1 einschalten |
wf | 2:0e87ebc53aa8 | 257 | led5=!led5; //Led1 einschalten |
wf | 2:0e87ebc53aa8 | 258 | led6=!led6; //Led1 einschalten |
wf | 2:0e87ebc53aa8 | 259 | led7=!led7; //Led1 einschalten |
wf | 2:0e87ebc53aa8 | 260 | led8=!led8; //Led1 einschalten |
wf | 0:f007d2f125be | 261 | } |
wf | 0:f007d2f125be | 262 | |
wf | 0:f007d2f125be | 263 | /***********/ |
wf | 0:f007d2f125be | 264 | /******************** ENDE ***********************/ |