Project_colorSensor
Dependencies: USBDevice mbed-rtos mbed
main.cpp@0:e479cf804a1d, 19 months ago (annotated)
- Committer:
- harryhuhhh
- Date:
- Fri Dec 09 17:05:03 2022 +0000
- Revision:
- 0:e479cf804a1d
Project_colorSensor
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| harryhuhhh | 0:e479cf804a1d | 1 | #include "mbed.h" |
| harryhuhhh | 0:e479cf804a1d | 2 | #include "USBKeyboard.h" |
| harryhuhhh | 0:e479cf804a1d | 3 | #include "rtos.h" |
| harryhuhhh | 0:e479cf804a1d | 4 | |
| harryhuhhh | 0:e479cf804a1d | 5 | Serial pc(USBTX, USBRX); |
| harryhuhhh | 0:e479cf804a1d | 6 | AnalogIn red1(p20); |
| harryhuhhh | 0:e479cf804a1d | 7 | AnalogIn green1(p19); |
| harryhuhhh | 0:e479cf804a1d | 8 | AnalogIn red2(p18); |
| harryhuhhh | 0:e479cf804a1d | 9 | AnalogIn green2(p17); |
| harryhuhhh | 0:e479cf804a1d | 10 | Timer session; |
| harryhuhhh | 0:e479cf804a1d | 11 | |
| harryhuhhh | 0:e479cf804a1d | 12 | DigitalOut led1(p10); |
| harryhuhhh | 0:e479cf804a1d | 13 | |
| harryhuhhh | 0:e479cf804a1d | 14 | volatile float delayTime; |
| harryhuhhh | 0:e479cf804a1d | 15 | volatile float RedValue1; |
| harryhuhhh | 0:e479cf804a1d | 16 | volatile float GreenValue1; |
| harryhuhhh | 0:e479cf804a1d | 17 | volatile float RedValue2; |
| harryhuhhh | 0:e479cf804a1d | 18 | volatile float GreenValue2; |
| harryhuhhh | 0:e479cf804a1d | 19 | volatile bool started = 0; |
| harryhuhhh | 0:e479cf804a1d | 20 | volatile int mode = 0; //white mode=0, black mode=1, no jump mode=3 |
| harryhuhhh | 0:e479cf804a1d | 21 | |
| harryhuhhh | 0:e479cf804a1d | 22 | USBKeyboard keyboard; |
| harryhuhhh | 0:e479cf804a1d | 23 | Mutex key; |
| harryhuhhh | 0:e479cf804a1d | 24 | |
| harryhuhhh | 0:e479cf804a1d | 25 | void keyboardUpThread(void const *argument) { |
| harryhuhhh | 0:e479cf804a1d | 26 | while (1) { |
| harryhuhhh | 0:e479cf804a1d | 27 | RedValue1 = red1.read()*1000; |
| harryhuhhh | 0:e479cf804a1d | 28 | GreenValue1 = green1.read()*1000; |
| harryhuhhh | 0:e479cf804a1d | 29 | RedValue2 = red2.read()*1000; |
| harryhuhhh | 0:e479cf804a1d | 30 | GreenValue2 = green2.read()*1000; |
| harryhuhhh | 0:e479cf804a1d | 31 | |
| harryhuhhh | 0:e479cf804a1d | 32 | if (mode == 0) { |
| harryhuhhh | 0:e479cf804a1d | 33 | led1 = 0; |
| harryhuhhh | 0:e479cf804a1d | 34 | if (((RedValue1+GreenValue1)<17 || (RedValue2+GreenValue2)<17)) { |
| harryhuhhh | 0:e479cf804a1d | 35 | delayTime = 300-session.read()*3.5; |
| harryhuhhh | 0:e479cf804a1d | 36 | if (delayTime>0) { |
| harryhuhhh | 0:e479cf804a1d | 37 | Thread::wait(delayTime); |
| harryhuhhh | 0:e479cf804a1d | 38 | } |
| harryhuhhh | 0:e479cf804a1d | 39 | key.lock(); |
| harryhuhhh | 0:e479cf804a1d | 40 | keyboard.keyCode(UP_ARROW); |
| harryhuhhh | 0:e479cf804a1d | 41 | key.unlock(); |
| harryhuhhh | 0:e479cf804a1d | 42 | if (!started) { |
| harryhuhhh | 0:e479cf804a1d | 43 | session.start(); |
| harryhuhhh | 0:e479cf804a1d | 44 | started = 1; |
| harryhuhhh | 0:e479cf804a1d | 45 | } |
| harryhuhhh | 0:e479cf804a1d | 46 | // Thread::wait(200); |
| harryhuhhh | 0:e479cf804a1d | 47 | } |
| harryhuhhh | 0:e479cf804a1d | 48 | |
| harryhuhhh | 0:e479cf804a1d | 49 | if ((session.read()>=55.5 && session.read()<=68.5) or (session.read()>=98)){ |
| harryhuhhh | 0:e479cf804a1d | 50 | mode = 2; |
| harryhuhhh | 0:e479cf804a1d | 51 | } |
| harryhuhhh | 0:e479cf804a1d | 52 | } else if (mode == 1) { |
| harryhuhhh | 0:e479cf804a1d | 53 | led1=1; |
| harryhuhhh | 0:e479cf804a1d | 54 | if (((RedValue1+GreenValue1)>7 || (RedValue2+GreenValue2)>7)) { |
| harryhuhhh | 0:e479cf804a1d | 55 | delayTime = 300-session.read()*3; |
| harryhuhhh | 0:e479cf804a1d | 56 | if (delayTime>0) { |
| harryhuhhh | 0:e479cf804a1d | 57 | Thread::wait(delayTime); |
| harryhuhhh | 0:e479cf804a1d | 58 | } |
| harryhuhhh | 0:e479cf804a1d | 59 | key.lock(); |
| harryhuhhh | 0:e479cf804a1d | 60 | keyboard.keyCode(UP_ARROW); |
| harryhuhhh | 0:e479cf804a1d | 61 | key.unlock(); |
| harryhuhhh | 0:e479cf804a1d | 62 | // Thread::wait(200); |
| harryhuhhh | 0:e479cf804a1d | 63 | |
| harryhuhhh | 0:e479cf804a1d | 64 | |
| harryhuhhh | 0:e479cf804a1d | 65 | if ((session.read()>=68.5)){ |
| harryhuhhh | 0:e479cf804a1d | 66 | mode = 2; |
| harryhuhhh | 0:e479cf804a1d | 67 | } |
| harryhuhhh | 0:e479cf804a1d | 68 | } |
| harryhuhhh | 0:e479cf804a1d | 69 | } else if (mode ==2) { |
| harryhuhhh | 0:e479cf804a1d | 70 | if (session.read()>=98.1) mode = 1; |
| harryhuhhh | 0:e479cf804a1d | 71 | else if (session.read()>=68.65) mode = 0; |
| harryhuhhh | 0:e479cf804a1d | 72 | else if (session.read()>=56) mode = 1; |
| harryhuhhh | 0:e479cf804a1d | 73 | } |
| harryhuhhh | 0:e479cf804a1d | 74 | |
| harryhuhhh | 0:e479cf804a1d | 75 | } |
| harryhuhhh | 0:e479cf804a1d | 76 | } |
| harryhuhhh | 0:e479cf804a1d | 77 | |
| harryhuhhh | 0:e479cf804a1d | 78 | int main() { |
| harryhuhhh | 0:e479cf804a1d | 79 | Thread thread1(keyboardUpThread); |
| harryhuhhh | 0:e479cf804a1d | 80 | while(1) { |
| harryhuhhh | 0:e479cf804a1d | 81 | key.lock(); |
| harryhuhhh | 0:e479cf804a1d | 82 | // pc.printf("red1: %f,\ngreen1: %f,\n",RedValue1,GreenValue1); |
| harryhuhhh | 0:e479cf804a1d | 83 | // pc.printf("red2: %f,\ngreen2: %f,\n",RedValue2,GreenValue2); |
| harryhuhhh | 0:e479cf804a1d | 84 | pc.printf("time: %f, mode: %d\n",session.read(),mode); |
| harryhuhhh | 0:e479cf804a1d | 85 | key.unlock(); |
| harryhuhhh | 0:e479cf804a1d | 86 | } |
| harryhuhhh | 0:e479cf804a1d | 87 | } |