course1

Dependencies:   WS2812 PixelArray Adafruit_GFX HC_SR04_Ultrasonic_Library

Committer:
kmsmile2
Date:
Sun Aug 04 12:24:12 2019 +0000
Revision:
101:18e7ac07b620
Parent:
99:43e306bf6f13
Embedded_camp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kmsmile2 97:8f3abd5cf5ce 1 #include "mbed.h"
kmsmile2 97:8f3abd5cf5ce 2 #include "RemoteIR.h"
kmsmile2 97:8f3abd5cf5ce 3 #include "ReceiverIR.h"
kmsmile2 97:8f3abd5cf5ce 4 #include "TB6612FNG.h"
kmsmile2 97:8f3abd5cf5ce 5 #include "TRSensors.h"
kmsmile2 97:8f3abd5cf5ce 6 #include "ultrasonic.h"
kmsmile2 97:8f3abd5cf5ce 7 #include "Adafruit_SSD1306.h"
kmsmile2 98:d8ead5e04047 8 #include "WS2812.h"
kmsmile2 98:d8ead5e04047 9 #include "PixelArray.h"
kmsmile2 97:8f3abd5cf5ce 10
kmsmile2 97:8f3abd5cf5ce 11 #define button_SENSORS 5
kmsmile2 97:8f3abd5cf5ce 12 #define ADT7420_TEMP_REG (0x00)
kmsmile2 97:8f3abd5cf5ce 13 #define ADT7420_CONF_REG (0x03)
kmsmile2 97:8f3abd5cf5ce 14 #define EVAL_ADT7420_ADDR (0x48)
kmsmile2 97:8f3abd5cf5ce 15 #define PCF8574_ADDR (0x20)
kmsmile2 98:d8ead5e04047 16 #define WS2812_BUF 100
kmsmile2 98:d8ead5e04047 17 #define WS2812_BUF2 4
kmsmile2 98:d8ead5e04047 18 #define NUM_COLORS 3
kmsmile2 98:d8ead5e04047 19 #define NUM_LEDS_PER_COLOR 4
mbed_official 82:abf1b1785bd7 20
kmsmile2 97:8f3abd5cf5ce 21 // create object
kmsmile2 97:8f3abd5cf5ce 22 DigitalOut dc(D8,1);
kmsmile2 97:8f3abd5cf5ce 23 DigitalOut rst(D9,1);
kmsmile2 97:8f3abd5cf5ce 24 I2C i2c(I2C_SDA, I2C_SCL);
kmsmile2 97:8f3abd5cf5ce 25 TB6612FNG motorDriver(D6, A1, A0, D5, A2, A3);
kmsmile2 97:8f3abd5cf5ce 26 Ultrasonic ultra(D3, D2, .1, false);
kmsmile2 97:8f3abd5cf5ce 27 ReceiverIR IR(D4);
kmsmile2 97:8f3abd5cf5ce 28 TRSensors trs;
kmsmile2 97:8f3abd5cf5ce 29 RawSerial pc(USBTX, USBRX, 115200);
kmsmile2 97:8f3abd5cf5ce 30 Adafruit_SSD1306_I2c gOled2(i2c,D9,0x7A,64,128);
kmsmile2 97:8f3abd5cf5ce 31 Timer timer;
kmsmile2 98:d8ead5e04047 32 PixelArray px(WS2812_BUF);
kmsmile2 98:d8ead5e04047 33 WS2812 ws(D7, WS2812_BUF, 7, 15, 10, 15);
mbed_official 88:bea4f2daa48c 34
kmsmile2 99:43e306bf6f13 35
kmsmile2 101:18e7ac07b620 36 volatile int button = 0;
kmsmile2 99:43e306bf6f13 37
kmsmile2 101:18e7ac07b620 38 // PID variables
kmsmile2 101:18e7ac07b620 39 static float pval = 0;
kmsmile2 97:8f3abd5cf5ce 40
kmsmile2 97:8f3abd5cf5ce 41 // motor Driver
kmsmile2 97:8f3abd5cf5ce 42 float fPwmAPeriod;
kmsmile2 97:8f3abd5cf5ce 43 float fPwmAPulsewidth;
kmsmile2 97:8f3abd5cf5ce 44 float fPwmBPeriod;
kmsmile2 97:8f3abd5cf5ce 45 float fPwmBPulsewidth;
mbed_official 82:abf1b1785bd7 46
kmsmile2 97:8f3abd5cf5ce 47 inline void update_display(){
kmsmile2 97:8f3abd5cf5ce 48 gOled2.clearDisplay();
kmsmile2 97:8f3abd5cf5ce 49 gOled2.setTextCursor(0,0);
kmsmile2 97:8f3abd5cf5ce 50 gOled2.printf("E-RON alphabot\r\n");
kmsmile2 97:8f3abd5cf5ce 51 gOled2.printf("P: %.2f\r\n",pval);
kmsmile2 97:8f3abd5cf5ce 52 gOled2.display();
kmsmile2 97:8f3abd5cf5ce 53 }
kmsmile2 101:18e7ac07b620 54
kmsmile2 101:18e7ac07b620 55 int colorbuf[NUM_COLORS] = {0xff0000,0x00ff00,0x0000ff};
kmsmile2 101:18e7ac07b620 56 int colorbuf3 =0x000000;
kmsmile2 99:43e306bf6f13 57
kmsmile2 97:8f3abd5cf5ce 58 int main()
kmsmile2 101:18e7ac07b620 59 {
kmsmile2 101:18e7ac07b620 60
kmsmile2 98:d8ead5e04047 61 for (int i = 0; i < WS2812_BUF; i++) {
kmsmile2 98:d8ead5e04047 62 px.Set(i, colorbuf[(i / NUM_LEDS_PER_COLOR) % NUM_COLORS]);
kmsmile2 98:d8ead5e04047 63 }
kmsmile2 101:18e7ac07b620 64
kmsmile2 98:d8ead5e04047 65 for (int j=0; j<WS2812_BUF; j++) {
kmsmile2 98:d8ead5e04047 66 // px.SetI(pixel position, II value)
kmsmile2 98:d8ead5e04047 67 px.SetI(j%WS2812_BUF, 0xf+(0xf*4));
kmsmile2 98:d8ead5e04047 68 }
kmsmile2 97:8f3abd5cf5ce 69
kmsmile2 101:18e7ac07b620 70 update_display();
kmsmile2 101:18e7ac07b620 71
kmsmile2 97:8f3abd5cf5ce 72 RemoteIR::Format format;
kmsmile2 97:8f3abd5cf5ce 73 uint8_t buf[32];
kmsmile2 97:8f3abd5cf5ce 74 int bitcount;
kmsmile2 97:8f3abd5cf5ce 75 while(1)
kmsmile2 97:8f3abd5cf5ce 76 { // read the value of the code
kmsmile2 97:8f3abd5cf5ce 77 if (IR.getState() == ReceiverIR::Received)
kmsmile2 97:8f3abd5cf5ce 78 {
kmsmile2 97:8f3abd5cf5ce 79 bitcount = IR.getData(&format, buf, sizeof(buf) * 8);
kmsmile2 97:8f3abd5cf5ce 80 pc.printf("%d\r\n", bitcount);
kmsmile2 97:8f3abd5cf5ce 81 pc.printf("buf[2]: %d\r\n", buf[2]);
kmsmile2 97:8f3abd5cf5ce 82 button = buf[2];
kmsmile2 97:8f3abd5cf5ce 83 }
kmsmile2 97:8f3abd5cf5ce 84
kmsmile2 97:8f3abd5cf5ce 85 switch(button)
kmsmile2 97:8f3abd5cf5ce 86 {
kmsmile2 97:8f3abd5cf5ce 87 case 0x45:
kmsmile2 97:8f3abd5cf5ce 88 // ch- button (P value up)
kmsmile2 97:8f3abd5cf5ce 89 pval += 0.01;
kmsmile2 97:8f3abd5cf5ce 90 pval = fabs(pval);
kmsmile2 97:8f3abd5cf5ce 91 update_display();
kmsmile2 97:8f3abd5cf5ce 92 wait(0.3);
kmsmile2 97:8f3abd5cf5ce 93 button = 0x1C;
kmsmile2 97:8f3abd5cf5ce 94 break;
kmsmile2 101:18e7ac07b620 95
kmsmile2 98:d8ead5e04047 96 default:
kmsmile2 97:8f3abd5cf5ce 97 // wrong button
kmsmile2 97:8f3abd5cf5ce 98 pc.printf("wrong button!\r\n");
kmsmile2 97:8f3abd5cf5ce 99 break;
kmsmile2 97:8f3abd5cf5ce 100 }
kmsmile2 97:8f3abd5cf5ce 101 }
kmsmile2 97:8f3abd5cf5ce 102 }