course1
Dependencies: WS2812 PixelArray Adafruit_GFX HC_SR04_Ultrasonic_Library
main.cpp
- Committer:
- kmsmile2
- Date:
- 2019-08-04
- Revision:
- 101:18e7ac07b620
- Parent:
- 99:43e306bf6f13
File content as of revision 101:18e7ac07b620:
#include "mbed.h"
#include "RemoteIR.h"
#include "ReceiverIR.h"
#include "TB6612FNG.h"
#include "TRSensors.h"
#include "ultrasonic.h"
#include "Adafruit_SSD1306.h"
#include "WS2812.h"
#include "PixelArray.h"
#define button_SENSORS 5
#define ADT7420_TEMP_REG (0x00)
#define ADT7420_CONF_REG (0x03)
#define EVAL_ADT7420_ADDR (0x48)
#define PCF8574_ADDR (0x20)
#define WS2812_BUF 100
#define WS2812_BUF2 4
#define NUM_COLORS 3
#define NUM_LEDS_PER_COLOR 4
// create object
DigitalOut dc(D8,1);
DigitalOut rst(D9,1);
I2C i2c(I2C_SDA, I2C_SCL);
TB6612FNG motorDriver(D6, A1, A0, D5, A2, A3);
Ultrasonic ultra(D3, D2, .1, false);
ReceiverIR IR(D4);
TRSensors trs;
RawSerial pc(USBTX, USBRX, 115200);
Adafruit_SSD1306_I2c gOled2(i2c,D9,0x7A,64,128);
Timer timer;
PixelArray px(WS2812_BUF);
WS2812 ws(D7, WS2812_BUF, 7, 15, 10, 15);
volatile int button = 0;
// PID variables
static float pval = 0;
// motor Driver
float fPwmAPeriod;
float fPwmAPulsewidth;
float fPwmBPeriod;
float fPwmBPulsewidth;
inline void update_display(){
gOled2.clearDisplay();
gOled2.setTextCursor(0,0);
gOled2.printf("E-RON alphabot\r\n");
gOled2.printf("P: %.2f\r\n",pval);
gOled2.display();
}
int colorbuf[NUM_COLORS] = {0xff0000,0x00ff00,0x0000ff};
int colorbuf3 =0x000000;
int main()
{
for (int i = 0; i < WS2812_BUF; i++) {
px.Set(i, colorbuf[(i / NUM_LEDS_PER_COLOR) % NUM_COLORS]);
}
for (int j=0; j<WS2812_BUF; j++) {
// px.SetI(pixel position, II value)
px.SetI(j%WS2812_BUF, 0xf+(0xf*4));
}
update_display();
RemoteIR::Format format;
uint8_t buf[32];
int bitcount;
while(1)
{ // read the value of the code
if (IR.getState() == ReceiverIR::Received)
{
bitcount = IR.getData(&format, buf, sizeof(buf) * 8);
pc.printf("%d\r\n", bitcount);
pc.printf("buf[2]: %d\r\n", buf[2]);
button = buf[2];
}
switch(button)
{
case 0x45:
// ch- button (P value up)
pval += 0.01;
pval = fabs(pval);
update_display();
wait(0.3);
button = 0x1C;
break;
default:
// wrong button
pc.printf("wrong button!\r\n");
break;
}
}
}