mbed application board demo includes lcd, pot, joystick, rgb led, websocket, mbed rtos. websocket demo url is => http://sockets.mbed.org/gordonlu/viewer
Dependencies: C12832 EthernetInterface WebSocketClient mbed-rtos mbed
Fork of rtos_basic by
main.cpp
- Committer:
- gordonlu
- Date:
- 2015-02-06
- Revision:
- 8:421c13d323a0
- Parent:
- 7:71124ec77f83
- Child:
- 9:999997e8e4cc
File content as of revision 8:421c13d323a0:
#include "mbed.h" #include "rtos.h" #include "C12832.h" #include "EthernetInterface.h" #include "math.h" #define POT_SENSITIVITY (0.01f) C12832 lcd(p5, p7, p6, p8, p11); DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); PwmOut r (p23); PwmOut g (p24); PwmOut b (p25); AnalogIn pot1(p19); AnalogIn pot2(p20); BusIn joystick(p12, p13, p14, p15, p16); Mutex lcd_mutex; const int LEDNUM = 4; void potJoystickThread(void const *args) { static float pt1 = 0; static float pt2 = 0; static int js = 0; printf("PotJoysticThread Start\r\n"); while(1) { float p1 = pot1.read(); float p2 = pot2.read(); int j = joystick.read(); if(fabs(p1 - pt1) > POT_SENSITIVITY || fabs(p2 - pt2) > POT_SENSITIVITY || j != js) { pt1 = p1; pt2 = p2; js = j; r = 1 - pt1; g = 1 - pt2; if(0x10 == js)b = 0; //right, turn on blue led else if (0x02 == js) b = 1; //left, turn of blue led else if(0x01 == js) b.write( b + 0.05); //down else if(0x08 == js) b.write( b - 0.05); //up printf("Pot1 : %.2f Pot2 : %.2f Joystick:%02X\r\n", pt1, pt2, js); //lcd display lcd_mutex.lock(); lcd.locate(0,11); lcd.printf("Pot1 : %.2f Pot2 : %.2f JS:%02X", pt1, pt2, js); lcd_mutex.unlock(); } Thread::wait(100); } } void netThread(void const *args) { printf("EthernetInterface Thread Start\r\n"); EthernetInterface eth; eth.init(); //Use DHCP printf("MAC:%s\r\n",eth.getMACAddress()); lcd.locate(0,21); lcd.printf("MAC:%s\r\n",eth.getMACAddress()); printf("Connecting...\r\n"); while(1) { if(0 != eth.connect()) { printf("Connecting fail! Try again. \r\nConnecting....\r\n"); Thread::wait(100); } else { printf("Connect OK! IP Address is %s\r\n", eth.getIPAddress()); lcd_mutex.lock(); lcd.locate(0,21); lcd.printf("IP ADDRESS : %s\r\n",eth.getIPAddress()); lcd_mutex.unlock(); break; } } } void rollingLed() { static int onled = 0; int led[LEDNUM] = {0,0,0,0}; led[onled] = 1; ++onled; if(onled == 4) onled = 0; myled1 = led[0]; myled2 = led[1]; myled3 = led[2]; myled4 = led[3]; } int main() { int i = 0; lcd.cls(); r.period(0.001); g.period(0.001); b.period(0.001); r = 1; g = 1; b = 1; Thread t1(netThread); Thread t2(potJoystickThread); while(true) { lcd_mutex.lock(); lcd.locate(0,1); lcd.printf("Second : %06d ",i++); lcd_mutex.unlock(); rollingLed(); Thread::wait(1000); } }