Testprogram

Dependencies:   mbed MPU6050 DS1820

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?

UserRevisionLine numberNew 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 ***********************/