Grove sensor component example for Seeed Wio 3G

Dependencies:   Grove_LCD_RGB_Backlight Grove_temperature PixelArray Servo WS2812

Fork of Wio_3G_example by Toyomasa Watarai

Committer:
MACRUM
Date:
Fri Aug 10 09:07:14 2018 +0000
Revision:
75:f93c0063755c
Parent:
74:847e5dc7b4d5
Code clean-up

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jonathan Austin 0:2757d7abb7d9 1 #include "mbed.h"
MACRUM 71:7d17edde2e03 2 #include "Grove_LCD_RGB_Backlight.h"
MACRUM 72:aa14c091f860 3 #include "Grove_temperature.h"
MACRUM 73:d47320bcc568 4 #include "WS2812.h"
MACRUM 73:d47320bcc568 5 #include "PixelArray.h"
MACRUM 73:d47320bcc568 6 #include "Servo.h"
MACRUM 73:d47320bcc568 7
MACRUM 73:d47320bcc568 8 #if !defined(TARGET_WIO_3G)
MACRUM 73:d47320bcc568 9 #error Selected target is not supported.
MACRUM 73:d47320bcc568 10 #endif
MACRUM 70:cb6d36218441 11
MACRUM 70:cb6d36218441 12 #define D20 (PB_4)
MACRUM 70:cb6d36218441 13 #define D19 (PB_3)
MACRUM 70:cb6d36218441 14
MACRUM 73:d47320bcc568 15 // on-board resources
MACRUM 74:847e5dc7b4d5 16
MACRUM 73:d47320bcc568 17 Serial pc(USBTX, USBRX, 115200);
MACRUM 70:cb6d36218441 18 DigitalOut GrovePower(PB_10, 1);
MACRUM 73:d47320bcc568 19
MACRUM 74:847e5dc7b4d5 20 #define WS2812_BUF 8
MACRUM 74:847e5dc7b4d5 21 #define NUM_COLORS 8
MACRUM 74:847e5dc7b4d5 22 #define NUM_LEDS_PER_COLOR 8
MACRUM 73:d47320bcc568 23 #define H0 8
MACRUM 73:d47320bcc568 24 #define L0 32
MACRUM 73:d47320bcc568 25 #define H1 17
MACRUM 73:d47320bcc568 26 #define L1 32
MACRUM 73:d47320bcc568 27
MACRUM 73:d47320bcc568 28 DigitalOut LEDPower(PE_8, 1);
MACRUM 73:d47320bcc568 29 PixelArray px(WS2812_BUF);
MACRUM 74:847e5dc7b4d5 30 WS2812 ws(PB_1, WS2812_BUF, H0, L0, H1, L1);
MACRUM 74:847e5dc7b4d5 31
MACRUM 73:d47320bcc568 32 // Grove sensors
MACRUM 74:847e5dc7b4d5 33
MACRUM 70:cb6d36218441 34 DigitalOut led1(D38);
MACRUM 73:d47320bcc568 35 AnalogIn ain(A6); // angle or light sensor
MACRUM 73:d47320bcc568 36 InterruptIn btn(D20); // button or touch sensor
MACRUM 73:d47320bcc568 37 Grove_LCD_RGB_Backlight lcd(I2C_SDA, I2C_SCL);
MACRUM 72:aa14c091f860 38 Grove_temperature temp(A4);
MACRUM 74:847e5dc7b4d5 39
MACRUM 71:7d17edde2e03 40 uint32_t button = 0;
MACRUM 70:cb6d36218441 41
MACRUM 70:cb6d36218441 42 void push()
MACRUM 70:cb6d36218441 43 {
MACRUM 71:7d17edde2e03 44 button++;
MACRUM 70:cb6d36218441 45 }
Jonathan Austin 0:2757d7abb7d9 46
MACRUM 73:d47320bcc568 47
MACRUM 70:cb6d36218441 48 int main()
MACRUM 70:cb6d36218441 49 {
MACRUM 73:d47320bcc568 50 char buf[20];
MACRUM 73:d47320bcc568 51 btn.fall(push); // set interrupt handler
MACRUM 70:cb6d36218441 52
MACRUM 73:d47320bcc568 53 lcd.clear();
MACRUM 73:d47320bcc568 54 lcd.setRGB(0xff, 0x00, 0x00);
MACRUM 73:d47320bcc568 55 lcd.locate(0, 0);
MACRUM 73:d47320bcc568 56 lcd.print("Hello World!");
MACRUM 73:d47320bcc568 57 lcd.locate(0, 1);
MACRUM 73:d47320bcc568 58
MACRUM 74:847e5dc7b4d5 59 // set up the colours we want to draw with
MACRUM 74:847e5dc7b4d5 60 const int colorbuf[NUM_COLORS] = {0x000000, 0x2f0000,0x2f2f00,0x002f00,0x002f2f,0x00002f,0x2f002f, 0x2f2f2f};
MACRUM 74:847e5dc7b4d5 61
MACRUM 73:d47320bcc568 62 ws.useII(WS2812::PER_PIXEL); // use per-pixel intensity scaling
MACRUM 74:847e5dc7b4d5 63
MACRUM 74:847e5dc7b4d5 64 // for each of the colours (j) write out 10 of them
MACRUM 74:847e5dc7b4d5 65 // the pixels are written at the colour*10, plus the colour position
MACRUM 74:847e5dc7b4d5 66 // all modulus 60 so it wraps around
MACRUM 74:847e5dc7b4d5 67 for (int i = 0; i < WS2812_BUF; i++) {
MACRUM 74:847e5dc7b4d5 68 px.Set(i, colorbuf[i]);
MACRUM 74:847e5dc7b4d5 69 px.SetI(i, 0x80);
MACRUM 74:847e5dc7b4d5 70 }
MACRUM 74:847e5dc7b4d5 71
MACRUM 74:847e5dc7b4d5 72 pc.printf("hello, Mbed world\n");
MACRUM 71:7d17edde2e03 73
MACRUM 70:cb6d36218441 74 int cnt = 0;
MACRUM 75:f93c0063755c 75 int idx = 0;
MACRUM 74:847e5dc7b4d5 76
Jonathan Austin 0:2757d7abb7d9 77 while (true) {
MACRUM 73:d47320bcc568 78 pc.printf("count = %4d, button = %d, analog = %2.2f, temp = %2.2f\n", cnt++, button, ain.read(), temp.getTemperature());
MACRUM 73:d47320bcc568 79 sprintf(buf, "L=%2.2f, T=%2.2f", ain.read(), temp.getTemperature());
MACRUM 75:f93c0063755c 80
MACRUM 73:d47320bcc568 81 lcd.setRGB(0xff, (255*ain.read()), 0x00);
MACRUM 73:d47320bcc568 82 lcd.locate(0, 1);
MACRUM 73:d47320bcc568 83 lcd.print(buf);
MACRUM 75:f93c0063755c 84
Jonathan Austin 0:2757d7abb7d9 85 led1 = !led1;
MACRUM 74:847e5dc7b4d5 86
MACRUM 75:f93c0063755c 87 ws.write_offsets(px.getBuf(), idx, idx, idx);
MACRUM 75:f93c0063755c 88 idx++;
MACRUM 75:f93c0063755c 89 if (idx >= WS2812_BUF) {
MACRUM 75:f93c0063755c 90 idx = 0;
MACRUM 74:847e5dc7b4d5 91 }
MACRUM 74:847e5dc7b4d5 92
mbed_official 22:af9dcf379926 93 wait(0.5);
Jonathan Austin 0:2757d7abb7d9 94 }
Jonathan Austin 0:2757d7abb7d9 95 }