![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
a
main.cpp@0:3c7374cb5c3c, 2015-04-03 (annotated)
- Committer:
- kamoshik
- Date:
- Fri Apr 03 15:10:03 2015 +0000
- Revision:
- 0:3c7374cb5c3c
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kamoshik | 0:3c7374cb5c3c | 1 | #include "mbed.h" |
kamoshik | 0:3c7374cb5c3c | 2 | |
kamoshik | 0:3c7374cb5c3c | 3 | #define ADDR 0x2A |
kamoshik | 0:3c7374cb5c3c | 4 | |
kamoshik | 0:3c7374cb5c3c | 5 | |
kamoshik | 0:3c7374cb5c3c | 6 | DigitalOut myled(LED1); |
kamoshik | 0:3c7374cb5c3c | 7 | DigitalOut myled2(LED2); |
kamoshik | 0:3c7374cb5c3c | 8 | I2C i2c( p28, p27 ); |
kamoshik | 0:3c7374cb5c3c | 9 | Serial pc(USBTX, USBRX); // tx, rx |
kamoshik | 0:3c7374cb5c3c | 10 | //Serial device(p9, p10); // tx, rx |
kamoshik | 0:3c7374cb5c3c | 11 | |
kamoshik | 0:3c7374cb5c3c | 12 | unsigned int red = 0; |
kamoshik | 0:3c7374cb5c3c | 13 | unsigned int green = 0; |
kamoshik | 0:3c7374cb5c3c | 14 | unsigned int blue = 0; |
kamoshik | 0:3c7374cb5c3c | 15 | unsigned int ir = 0; |
kamoshik | 0:3c7374cb5c3c | 16 | |
kamoshik | 0:3c7374cb5c3c | 17 | |
kamoshik | 0:3c7374cb5c3c | 18 | void callback() { |
kamoshik | 0:3c7374cb5c3c | 19 | // Note: you need to actually read from the serial to clear the RX interrupt |
kamoshik | 0:3c7374cb5c3c | 20 | printf("%c\n", pc.getc()); |
kamoshik | 0:3c7374cb5c3c | 21 | myled2 = !myled2; |
kamoshik | 0:3c7374cb5c3c | 22 | } |
kamoshik | 0:3c7374cb5c3c | 23 | |
kamoshik | 0:3c7374cb5c3c | 24 | void GetRGB(){ |
kamoshik | 0:3c7374cb5c3c | 25 | int databuf =0; |
kamoshik | 0:3c7374cb5c3c | 26 | char cmd[2]; |
kamoshik | 0:3c7374cb5c3c | 27 | char dat[8]; |
kamoshik | 0:3c7374cb5c3c | 28 | int a =0; |
kamoshik | 0:3c7374cb5c3c | 29 | /* //manual exposure mode |
kamoshik | 0:3c7374cb5c3c | 30 | setManualtGain(100); |
kamoshik | 0:3c7374cb5c3c | 31 | Wire.beginTransmission(device_address); |
kamoshik | 0:3c7374cb5c3c | 32 | Wire.write(control_reg); |
kamoshik | 0:3c7374cb5c3c | 33 | Wire.write(0x84); // ADC reset LowGain wakeup |
kamoshik | 0:3c7374cb5c3c | 34 | Wire.endTransmission(false); |
kamoshik | 0:3c7374cb5c3c | 35 | Wire.beginTransmission(device_address); |
kamoshik | 0:3c7374cb5c3c | 36 | Wire.write(control_reg); |
kamoshik | 0:3c7374cb5c3c | 37 | Wire.write(0x04); //start |
kamoshik | 0:3c7374cb5c3c | 38 | Wire.endTransmission(true); |
kamoshik | 0:3c7374cb5c3c | 39 | */ |
kamoshik | 0:3c7374cb5c3c | 40 | |
kamoshik | 0:3c7374cb5c3c | 41 | //preset gain mode exposure time (each color ch) |
kamoshik | 0:3c7374cb5c3c | 42 | // 00 = 87.5us |
kamoshik | 0:3c7374cb5c3c | 43 | // 01= 1.4ms |
kamoshik | 0:3c7374cb5c3c | 44 | // 10= 22.4ms |
kamoshik | 0:3c7374cb5c3c | 45 | // 11= 179.2ms |
kamoshik | 0:3c7374cb5c3c | 46 | cmd[0] = 0x00; |
kamoshik | 0:3c7374cb5c3c | 47 | cmd[1] = 0x8A; |
kamoshik | 0:3c7374cb5c3c | 48 | // i2c.start(); |
kamoshik | 0:3c7374cb5c3c | 49 | a = i2c.write(ADDR , cmd , 2); |
kamoshik | 0:3c7374cb5c3c | 50 | cmd[0] = 0x00; |
kamoshik | 0:3c7374cb5c3c | 51 | cmd[1] = 0x0A; |
kamoshik | 0:3c7374cb5c3c | 52 | i2c.write(ADDR , cmd , 2); |
kamoshik | 0:3c7374cb5c3c | 53 | // printf("b=%d",a); |
kamoshik | 0:3c7374cb5c3c | 54 | |
kamoshik | 0:3c7374cb5c3c | 55 | wait(0.1); |
kamoshik | 0:3c7374cb5c3c | 56 | |
kamoshik | 0:3c7374cb5c3c | 57 | cmd[0] = 0x03; |
kamoshik | 0:3c7374cb5c3c | 58 | //i2c.start(); |
kamoshik | 0:3c7374cb5c3c | 59 | a = i2c.write(ADDR , cmd , 1); |
kamoshik | 0:3c7374cb5c3c | 60 | i2c.read(ADDR , dat , 8);//引数trueでNACK出力 |
kamoshik | 0:3c7374cb5c3c | 61 | |
kamoshik | 0:3c7374cb5c3c | 62 | |
kamoshik | 0:3c7374cb5c3c | 63 | red = dat[0]<<8 | dat[1]; |
kamoshik | 0:3c7374cb5c3c | 64 | green = dat[2]<<8 | dat[3]; |
kamoshik | 0:3c7374cb5c3c | 65 | blue = dat[4]<<8 | dat[5]; |
kamoshik | 0:3c7374cb5c3c | 66 | ir = dat[6]<<8 | dat[7]; |
kamoshik | 0:3c7374cb5c3c | 67 | |
kamoshik | 0:3c7374cb5c3c | 68 | |
kamoshik | 0:3c7374cb5c3c | 69 | } |
kamoshik | 0:3c7374cb5c3c | 70 | |
kamoshik | 0:3c7374cb5c3c | 71 | int main() |
kamoshik | 0:3c7374cb5c3c | 72 | { |
kamoshik | 0:3c7374cb5c3c | 73 | i2c.frequency(100000); |
kamoshik | 0:3c7374cb5c3c | 74 | |
kamoshik | 0:3c7374cb5c3c | 75 | //pc.attach(&callback); |
kamoshik | 0:3c7374cb5c3c | 76 | pc.baud(115200); |
kamoshik | 0:3c7374cb5c3c | 77 | // device.baud(115200); |
kamoshik | 0:3c7374cb5c3c | 78 | while(1) { |
kamoshik | 0:3c7374cb5c3c | 79 | myled = 1; |
kamoshik | 0:3c7374cb5c3c | 80 | wait(0.25); |
kamoshik | 0:3c7374cb5c3c | 81 | myled = 0; |
kamoshik | 0:3c7374cb5c3c | 82 | wait(0.25); |
kamoshik | 0:3c7374cb5c3c | 83 | |
kamoshik | 0:3c7374cb5c3c | 84 | GetRGB(); |
kamoshik | 0:3c7374cb5c3c | 85 | |
kamoshik | 0:3c7374cb5c3c | 86 | pc.printf("R=%5d G=%5d B=%5d I=%5d\n",red,green,blue,ir); |
kamoshik | 0:3c7374cb5c3c | 87 | // device.printf("12345\n"); |
kamoshik | 0:3c7374cb5c3c | 88 | } |
kamoshik | 0:3c7374cb5c3c | 89 | } |