True leaf photo frame,gesture sensing APDS9960,motor fan,color LED
Dependencies: SFE_APDS9960 mbed
main.cpp@4:6dfbdf48fd16, 2016-04-23 (annotated)
- Committer:
- yzh344612058
- Date:
- Sat Apr 23 03:47:57 2016 +0000
- Revision:
- 4:6dfbdf48fd16
- Parent:
- 3:d046bb79dbbe
????????OK
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yzh344612058 | 4:6dfbdf48fd16 | 1 | #include <mbed.h> |
yzh344612058 | 0:9b48e23879b3 | 2 | #include "SparkFun_APDS9960.h" |
yzh344612058 | 0:9b48e23879b3 | 3 | #include "led.h" |
yzh344612058 | 0:9b48e23879b3 | 4 | |
yzh344612058 | 4:6dfbdf48fd16 | 5 | //Serial pc(P0_23,P0_25); // TX Pin, RX Pin |
yzh344612058 | 4:6dfbdf48fd16 | 6 | Serial pc(P0_23,P0_8); |
yzh344612058 | 3:d046bb79dbbe | 7 | I2C i2c(P0_14, P0_13); |
yzh344612058 | 1:d16891627cd3 | 8 | SparkFun_APDS9960 apds(i2c); |
yzh344612058 | 3:d046bb79dbbe | 9 | InterruptIn SparkFun_Int(P0_16); |
yzh344612058 | 4:6dfbdf48fd16 | 10 | PwmOut Fan1(P0_9); |
yzh344612058 | 4:6dfbdf48fd16 | 11 | PwmOut Fan2(P0_25); |
yzh344612058 | 4:6dfbdf48fd16 | 12 | |
yzh344612058 | 4:6dfbdf48fd16 | 13 | //Red_Left: P0.8 Blue_Right:P0.11 Green_Down:P0.15 |
yzh344612058 | 4:6dfbdf48fd16 | 14 | |
yzh344612058 | 4:6dfbdf48fd16 | 15 | DigitalOut LED_Down(P0_15); |
yzh344612058 | 3:d046bb79dbbe | 16 | |
yzh344612058 | 3:d046bb79dbbe | 17 | int isr_flag = 0; |
yzh344612058 | 1:d16891627cd3 | 18 | |
yzh344612058 | 3:d046bb79dbbe | 19 | void handleGesture(); |
yzh344612058 | 3:d046bb79dbbe | 20 | |
yzh344612058 | 3:d046bb79dbbe | 21 | |
yzh344612058 | 3:d046bb79dbbe | 22 | void SparkFun_Interrupt(){ |
yzh344612058 | 3:d046bb79dbbe | 23 | isr_flag = 1; |
yzh344612058 | 3:d046bb79dbbe | 24 | } |
yzh344612058 | 0:9b48e23879b3 | 25 | |
yzh344612058 | 0:9b48e23879b3 | 26 | int main() |
yzh344612058 | 0:9b48e23879b3 | 27 | { |
yzh344612058 | 4:6dfbdf48fd16 | 28 | pc.baud(9600); |
yzh344612058 | 0:9b48e23879b3 | 29 | pc.printf("Hello world!\n"); |
yzh344612058 | 4:6dfbdf48fd16 | 30 | Fan1 = 0;Fan2 = 0; |
yzh344612058 | 4:6dfbdf48fd16 | 31 | LED_Down = 1; |
yzh344612058 | 4:6dfbdf48fd16 | 32 | wait_ms(500); wait_ms(500); wait_ms(500); wait_ms(500); |
yzh344612058 | 4:6dfbdf48fd16 | 33 | LED_Down = 0; |
yzh344612058 | 3:d046bb79dbbe | 34 | SparkFun_Int.fall(&SparkFun_Interrupt); |
yzh344612058 | 3:d046bb79dbbe | 35 | |
yzh344612058 | 3:d046bb79dbbe | 36 | |
yzh344612058 | 3:d046bb79dbbe | 37 | if(apds.init(100000)) |
yzh344612058 | 0:9b48e23879b3 | 38 | pc.printf("APDS-9960 initialization complete\n"); |
yzh344612058 | 0:9b48e23879b3 | 39 | else |
yzh344612058 | 1:d16891627cd3 | 40 | pc.printf("Something went wrong during APDS-9960 init!\n"); |
yzh344612058 | 0:9b48e23879b3 | 41 | |
yzh344612058 | 0:9b48e23879b3 | 42 | if (apds.enableGestureSensor(true) ) |
yzh344612058 | 0:9b48e23879b3 | 43 | printf("Gesture sensor is now running\n"); |
yzh344612058 | 0:9b48e23879b3 | 44 | else |
yzh344612058 | 4:6dfbdf48fd16 | 45 | printf("Something went wrong during gesture sensor init!\n"); |
yzh344612058 | 4:6dfbdf48fd16 | 46 | |
yzh344612058 | 4:6dfbdf48fd16 | 47 | Fan1.period(1/40); |
yzh344612058 | 4:6dfbdf48fd16 | 48 | Fan2.period(1/40); |
yzh344612058 | 4:6dfbdf48fd16 | 49 | Fan1 = 1; Fan2 = 1; |
yzh344612058 | 0:9b48e23879b3 | 50 | |
yzh344612058 | 0:9b48e23879b3 | 51 | while(1) |
yzh344612058 | 0:9b48e23879b3 | 52 | { |
yzh344612058 | 3:d046bb79dbbe | 53 | if(isr_flag == 1) |
yzh344612058 | 3:d046bb79dbbe | 54 | { |
yzh344612058 | 3:d046bb79dbbe | 55 | handleGesture(); |
yzh344612058 | 3:d046bb79dbbe | 56 | isr_flag = 0; |
yzh344612058 | 3:d046bb79dbbe | 57 | } |
yzh344612058 | 0:9b48e23879b3 | 58 | } |
yzh344612058 | 1:d16891627cd3 | 59 | } |
yzh344612058 | 1:d16891627cd3 | 60 | |
yzh344612058 | 1:d16891627cd3 | 61 | void handleGesture() { |
yzh344612058 | 1:d16891627cd3 | 62 | if ( apds.isGestureAvailable() ) { |
yzh344612058 | 1:d16891627cd3 | 63 | switch ( apds.readGesture() ) { |
yzh344612058 | 1:d16891627cd3 | 64 | case DIR_UP: |
yzh344612058 | 4:6dfbdf48fd16 | 65 | |
yzh344612058 | 4:6dfbdf48fd16 | 66 | pc.printf("Left\n"); |
yzh344612058 | 4:6dfbdf48fd16 | 67 | if(Fan1.read() != 0.95) |
yzh344612058 | 4:6dfbdf48fd16 | 68 | Fan1 = 0.95; |
yzh344612058 | 4:6dfbdf48fd16 | 69 | if(Fan2.read() != 1) |
yzh344612058 | 4:6dfbdf48fd16 | 70 | Fan2 = 1; |
yzh344612058 | 1:d16891627cd3 | 71 | break; |
yzh344612058 | 4:6dfbdf48fd16 | 72 | |
yzh344612058 | 1:d16891627cd3 | 73 | case DIR_DOWN: |
yzh344612058 | 4:6dfbdf48fd16 | 74 | |
yzh344612058 | 4:6dfbdf48fd16 | 75 | pc.printf("Right\n"); |
yzh344612058 | 4:6dfbdf48fd16 | 76 | if(Fan1.read()!= 1) |
yzh344612058 | 4:6dfbdf48fd16 | 77 | Fan1 = 1; |
yzh344612058 | 4:6dfbdf48fd16 | 78 | if(Fan2.read()!= 0.95) |
yzh344612058 | 4:6dfbdf48fd16 | 79 | Fan2 = 0.95; |
yzh344612058 | 4:6dfbdf48fd16 | 80 | |
yzh344612058 | 1:d16891627cd3 | 81 | break; |
yzh344612058 | 1:d16891627cd3 | 82 | case DIR_LEFT: |
yzh344612058 | 4:6dfbdf48fd16 | 83 | LED_Down = 0; |
yzh344612058 | 4:6dfbdf48fd16 | 84 | pc.printf("Down\n"); |
yzh344612058 | 1:d16891627cd3 | 85 | break; |
yzh344612058 | 1:d16891627cd3 | 86 | case DIR_RIGHT: |
yzh344612058 | 4:6dfbdf48fd16 | 87 | pc.printf("Up\n"); |
yzh344612058 | 4:6dfbdf48fd16 | 88 | LED_Down = 1; |
yzh344612058 | 1:d16891627cd3 | 89 | break; |
yzh344612058 | 1:d16891627cd3 | 90 | case DIR_NEAR: |
yzh344612058 | 1:d16891627cd3 | 91 | pc.printf("NEAR\n"); |
yzh344612058 | 1:d16891627cd3 | 92 | break; |
yzh344612058 | 1:d16891627cd3 | 93 | case DIR_FAR: |
yzh344612058 | 1:d16891627cd3 | 94 | pc.printf("FAR\n"); |
yzh344612058 | 1:d16891627cd3 | 95 | break; |
yzh344612058 | 1:d16891627cd3 | 96 | default: |
yzh344612058 | 1:d16891627cd3 | 97 | pc.printf("NONE\n"); |
yzh344612058 | 1:d16891627cd3 | 98 | } |
yzh344612058 | 1:d16891627cd3 | 99 | } |
yzh344612058 | 1:d16891627cd3 | 100 | } |