voor Arne
Dependencies: ESP8266Interface FXAS21002 FXOS8700 Hexi_OLED_SSD1351
Fork of Hexi_Magneto-v2_Example by
main.cpp@1:31908216b9ac, 2016-12-02 (annotated)
- Committer:
- blownelco
- Date:
- Fri Dec 02 15:06:06 2016 +0000
- Revision:
- 1:31908216b9ac
- Parent:
- 0:3fcdc27ab845
- Child:
- 2:3c1fe1657db9
before wifi input
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
GregC | 0:3fcdc27ab845 | 1 | #include "mbed.h" |
GregC | 0:3fcdc27ab845 | 2 | #include "FXOS8700.h" |
GregC | 0:3fcdc27ab845 | 3 | #include "Hexi_OLED_SSD1351.h" |
GregC | 0:3fcdc27ab845 | 4 | #include "images.h" |
GregC | 0:3fcdc27ab845 | 5 | #include "string.h" |
GregC | 0:3fcdc27ab845 | 6 | |
GregC | 0:3fcdc27ab845 | 7 | // Pin connections |
GregC | 0:3fcdc27ab845 | 8 | DigitalOut led1(LED_GREEN); // RGB LED |
blownelco | 1:31908216b9ac | 9 | DigitalOut PWD(PTB2); |
blownelco | 1:31908216b9ac | 10 | DigitalOut G15(PTB11); |
blownelco | 1:31908216b9ac | 11 | |
blownelco | 1:31908216b9ac | 12 | |
blownelco | 1:31908216b9ac | 13 | |
GregC | 0:3fcdc27ab845 | 14 | Serial pc(USBTX, USBRX); // Serial interface |
blownelco | 1:31908216b9ac | 15 | Serial wifi(PTD3, PTD2); |
GregC | 0:3fcdc27ab845 | 16 | FXOS8700 mag(PTC11, PTC10); |
GregC | 0:3fcdc27ab845 | 17 | SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6, PTD15); // SSD1351 OLED Driver (MOSI,SCLK,POWER,CS,RST,DC) |
GregC | 0:3fcdc27ab845 | 18 | |
GregC | 0:3fcdc27ab845 | 19 | // Variables |
GregC | 0:3fcdc27ab845 | 20 | float mag_data[3]; // Storage for the data from the sensor |
GregC | 0:3fcdc27ab845 | 21 | float mag_rms=0.0; // RMS value from the sensor |
GregC | 0:3fcdc27ab845 | 22 | float mx, my, mz; // Integer value from the sensor to be displayed |
GregC | 0:3fcdc27ab845 | 23 | const uint8_t *image1; // Pointer for the image to be displayed |
GregC | 0:3fcdc27ab845 | 24 | char text1[20]; // Text Buffer for dynamic value displayed |
GregC | 0:3fcdc27ab845 | 25 | char text2[20]; // Text Buffer for dynamic value displayed |
GregC | 0:3fcdc27ab845 | 26 | char text3[20]; // Text Buffer for dynamic value displayed |
GregC | 0:3fcdc27ab845 | 27 | |
GregC | 0:3fcdc27ab845 | 28 | int main() { |
blownelco | 1:31908216b9ac | 29 | |
blownelco | 1:31908216b9ac | 30 | PWD = 1; |
blownelco | 1:31908216b9ac | 31 | G15 = 0; |
blownelco | 1:31908216b9ac | 32 | /*Wifi initialisation commands */ |
blownelco | 1:31908216b9ac | 33 | |
blownelco | 1:31908216b9ac | 34 | |
blownelco | 1:31908216b9ac | 35 | wifi.baud(9600); |
blownelco | 1:31908216b9ac | 36 | //wifi.format(8,"None",1); |
blownelco | 1:31908216b9ac | 37 | Thread::wait(1000); |
blownelco | 1:31908216b9ac | 38 | |
blownelco | 1:31908216b9ac | 39 | printf("cmd -> AT\n"); |
blownelco | 1:31908216b9ac | 40 | |
blownelco | 1:31908216b9ac | 41 | while (!pc.readable()) |
blownelco | 1:31908216b9ac | 42 | { |
blownelco | 1:31908216b9ac | 43 | } |
blownelco | 1:31908216b9ac | 44 | |
GregC | 0:3fcdc27ab845 | 45 | |
blownelco | 1:31908216b9ac | 46 | //wifi.printf("AT/n"); |
blownelco | 1:31908216b9ac | 47 | wifi.printf("AT%c%c",0x0d,0x0A); |
blownelco | 1:31908216b9ac | 48 | |
blownelco | 1:31908216b9ac | 49 | Thread::wait(1000); |
blownelco | 1:31908216b9ac | 50 | //char c; |
blownelco | 1:31908216b9ac | 51 | //char buffer[128]; |
blownelco | 1:31908216b9ac | 52 | |
blownelco | 1:31908216b9ac | 53 | printf("cmd -> AT+GMR\n"); |
blownelco | 1:31908216b9ac | 54 | |
blownelco | 1:31908216b9ac | 55 | |
blownelco | 1:31908216b9ac | 56 | wifi.printf("AT+GMR%c%c",0x0d,0x0A); |
blownelco | 1:31908216b9ac | 57 | |
blownelco | 1:31908216b9ac | 58 | Thread::wait(1000); |
blownelco | 1:31908216b9ac | 59 | |
blownelco | 1:31908216b9ac | 60 | printf("cmd -> AT+ CIPSTATUS\n"); |
blownelco | 1:31908216b9ac | 61 | |
blownelco | 1:31908216b9ac | 62 | wifi.printf("AT+CIPSTATUS%c%c",0x0d,0x0A); |
blownelco | 1:31908216b9ac | 63 | |
blownelco | 1:31908216b9ac | 64 | |
blownelco | 1:31908216b9ac | 65 | while(1) { |
blownelco | 1:31908216b9ac | 66 | |
blownelco | 1:31908216b9ac | 67 | //printf("send AT"); |
blownelco | 1:31908216b9ac | 68 | //wifi.printf("AT/0x0D/0x0A"); |
blownelco | 1:31908216b9ac | 69 | //wait(0.5); werkt niet |
blownelco | 1:31908216b9ac | 70 | |
blownelco | 1:31908216b9ac | 71 | if(pc.readable()) { |
blownelco | 1:31908216b9ac | 72 | wifi.putc(pc.getc()); |
blownelco | 1:31908216b9ac | 73 | |
blownelco | 1:31908216b9ac | 74 | } |
blownelco | 1:31908216b9ac | 75 | if(wifi.readable()) { |
blownelco | 1:31908216b9ac | 76 | pc.putc(wifi.getc()); |
blownelco | 1:31908216b9ac | 77 | |
blownelco | 1:31908216b9ac | 78 | } |
blownelco | 1:31908216b9ac | 79 | } |
blownelco | 1:31908216b9ac | 80 | |
blownelco | 1:31908216b9ac | 81 | // c = wifi.getc(); |
blownelco | 1:31908216b9ac | 82 | |
blownelco | 1:31908216b9ac | 83 | //wifi.gets(buffer, 4); |
blownelco | 1:31908216b9ac | 84 | |
blownelco | 1:31908216b9ac | 85 | //pc.printf("I got '%c' and '%s'\n", c, buffer); |
blownelco | 1:31908216b9ac | 86 | |
blownelco | 1:31908216b9ac | 87 | // |
blownelco | 1:31908216b9ac | 88 | |
blownelco | 1:31908216b9ac | 89 | |
blownelco | 1:31908216b9ac | 90 | /* end wifi */ |
GregC | 0:3fcdc27ab845 | 91 | // Configure Accelerometer FXOS8700, Magnetometer FXOS8700 |
GregC | 0:3fcdc27ab845 | 92 | mag.mag_config(); |
GregC | 0:3fcdc27ab845 | 93 | |
GregC | 0:3fcdc27ab845 | 94 | /* Setting pointer location of the 96 by 96 pixel bitmap */ |
GregC | 0:3fcdc27ab845 | 95 | image1 = Magneto; |
GregC | 0:3fcdc27ab845 | 96 | |
GregC | 0:3fcdc27ab845 | 97 | /* Turn on the backlight of the OLED Display */ |
GregC | 0:3fcdc27ab845 | 98 | // oled.DimScreenON(); |
GregC | 0:3fcdc27ab845 | 99 | |
GregC | 0:3fcdc27ab845 | 100 | /* Fill 96px by 96px Screen with 96px by 96px NXP Image starting at x=0,y=0 */ |
GregC | 0:3fcdc27ab845 | 101 | oled.DrawImage(image1,0,0); |
GregC | 0:3fcdc27ab845 | 102 | |
GregC | 0:3fcdc27ab845 | 103 | |
GregC | 0:3fcdc27ab845 | 104 | while (true) |
GregC | 0:3fcdc27ab845 | 105 | { |
GregC | 0:3fcdc27ab845 | 106 | |
GregC | 0:3fcdc27ab845 | 107 | mag.acquire_mag_data_uT(mag_data); |
GregC | 0:3fcdc27ab845 | 108 | mag_rms = sqrt(((mag_data[0]*mag_data[0])+(mag_data[1]*mag_data[1])+(mag_data[2]*mag_data[2]))/3); |
GregC | 0:3fcdc27ab845 | 109 | printf("Magnetometer \tX-Axis %4.2f \tY-Axis %4.2f \tZ-Axis %4.2f \tRMS %4.2f\n\n\r",mag_data[0],mag_data[1],mag_data[2],mag_rms); |
GregC | 0:3fcdc27ab845 | 110 | wait(0.01); |
GregC | 0:3fcdc27ab845 | 111 | mx = mag_data[0]; |
GregC | 0:3fcdc27ab845 | 112 | my = mag_data[1]; |
GregC | 0:3fcdc27ab845 | 113 | mz = mag_data[2]; |
GregC | 0:3fcdc27ab845 | 114 | |
GregC | 0:3fcdc27ab845 | 115 | /* Get OLED Class Default Text Properties */ |
GregC | 0:3fcdc27ab845 | 116 | oled_text_properties_t textProperties = {0}; |
GregC | 0:3fcdc27ab845 | 117 | oled.GetTextProperties(&textProperties); |
GregC | 0:3fcdc27ab845 | 118 | |
GregC | 0:3fcdc27ab845 | 119 | /* Set text properties to white and right aligned for the dynamic text */ |
GregC | 0:3fcdc27ab845 | 120 | textProperties.fontColor = COLOR_BLUE; |
GregC | 0:3fcdc27ab845 | 121 | textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; |
GregC | 0:3fcdc27ab845 | 122 | oled.SetTextProperties(&textProperties); |
GregC | 0:3fcdc27ab845 | 123 | |
GregC | 0:3fcdc27ab845 | 124 | /* Display Legends */ |
GregC | 0:3fcdc27ab845 | 125 | strcpy((char *) text1,"X-Axis (uT):"); |
GregC | 0:3fcdc27ab845 | 126 | oled.Label((uint8_t *)text1,3,45); |
GregC | 0:3fcdc27ab845 | 127 | |
GregC | 0:3fcdc27ab845 | 128 | /* Format the value */ |
GregC | 0:3fcdc27ab845 | 129 | sprintf(text1,"%4.2f",mx); |
GregC | 0:3fcdc27ab845 | 130 | /* Display time reading in 35px by 15px textbox at(x=55, y=40) */ |
GregC | 0:3fcdc27ab845 | 131 | oled.TextBox((uint8_t *)text1,70,45,20,15); //Increase textbox for more digits |
GregC | 0:3fcdc27ab845 | 132 | |
GregC | 0:3fcdc27ab845 | 133 | /* Set text properties to white and right aligned for the dynamic text */ |
GregC | 0:3fcdc27ab845 | 134 | textProperties.fontColor = COLOR_GREEN; |
GregC | 0:3fcdc27ab845 | 135 | textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; |
GregC | 0:3fcdc27ab845 | 136 | oled.SetTextProperties(&textProperties); |
GregC | 0:3fcdc27ab845 | 137 | |
GregC | 0:3fcdc27ab845 | 138 | /* Display Legends */ |
GregC | 0:3fcdc27ab845 | 139 | strcpy((char *) text2,"Y-Axis (uT):"); |
GregC | 0:3fcdc27ab845 | 140 | oled.Label((uint8_t *)text2,3,62); |
GregC | 0:3fcdc27ab845 | 141 | |
GregC | 0:3fcdc27ab845 | 142 | /* Format the value */ |
GregC | 0:3fcdc27ab845 | 143 | sprintf(text2,"%4.2f",my); |
GregC | 0:3fcdc27ab845 | 144 | /* Display time reading in 35px by 15px textbox at(x=55, y=40) */ |
GregC | 0:3fcdc27ab845 | 145 | oled.TextBox((uint8_t *)text2,70,62,20,15); //Increase textbox for more digits |
GregC | 0:3fcdc27ab845 | 146 | |
GregC | 0:3fcdc27ab845 | 147 | /* Set text properties to white and right aligned for the dynamic text */ |
GregC | 0:3fcdc27ab845 | 148 | textProperties.fontColor = COLOR_RED; |
GregC | 0:3fcdc27ab845 | 149 | textProperties.alignParam = OLED_TEXT_ALIGN_LEFT; |
GregC | 0:3fcdc27ab845 | 150 | oled.SetTextProperties(&textProperties); |
GregC | 0:3fcdc27ab845 | 151 | |
GregC | 0:3fcdc27ab845 | 152 | /* Display Legends */ |
GregC | 0:3fcdc27ab845 | 153 | strcpy((char *) text3,"Z-Axis (uT):"); |
GregC | 0:3fcdc27ab845 | 154 | oled.Label((uint8_t *)text3,3,79); |
GregC | 0:3fcdc27ab845 | 155 | |
GregC | 0:3fcdc27ab845 | 156 | /* Format the value */ |
GregC | 0:3fcdc27ab845 | 157 | sprintf(text3,"%4.2f",mz); |
GregC | 0:3fcdc27ab845 | 158 | /* Display time reading in 35px by 15px textbox at(x=55, y=40) */ |
GregC | 0:3fcdc27ab845 | 159 | oled.TextBox((uint8_t *)text3,70,79,20,15); //Increase textbox for more digits |
GregC | 0:3fcdc27ab845 | 160 | |
GregC | 0:3fcdc27ab845 | 161 | led1 = !led1; |
GregC | 0:3fcdc27ab845 | 162 | Thread::wait(250); |
GregC | 0:3fcdc27ab845 | 163 | } |
GregC | 0:3fcdc27ab845 | 164 | } |