Project_colorSensor

Dependencies:   USBDevice mbed-rtos mbed

Committer:
harryhuhhh
Date:
Fri Dec 09 17:05:03 2022 +0000
Revision:
0:e479cf804a1d
Project_colorSensor

Who changed what in which revision?

UserRevisionLine numberNew 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 }