True leaf photo frame,gesture sensing APDS9960,motor fan,color LED

Dependencies:   SFE_APDS9960 mbed

Committer:
yzh344612058
Date:
Sat Apr 23 03:47:57 2016 +0000
Revision:
4:6dfbdf48fd16
Parent:
3:d046bb79dbbe
????????OK

Who changed what in which revision?

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