character LCD module to I2C adapter http://mbed.org/users/okini3939/notebook/i2c-lcd-library/

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Pixy2_Libray.cpp Source File

Pixy2_Libray.cpp

00001 /*
00002  * mbed library for Pixy2 Camera
00003  * Copyright (c) 2019 Jordan DUCHÊNE
00004  */
00005 
00006 #include "mbed.h"
00007 #include "Pixy2_Library.h"
00008 
00009 
00010 
00011 
00012 Pixy2_Library::Pixy2_Library (PinName p_sda, PinName p_scl, int address)   // Class Constructor
00013 {
00014     composant = new I2C(p_sda,p_scl);  //sda, sc1
00015     composant ->frequency(100000);
00016     I2Caddress = address;
00017 }
00018 
00019 
00020 void Pixy2_Library::Pixy2_WhiteLED(bool STATE)   // White LEDs BuiltIN ON/OFF methode
00021 {
00022 
00023     unsigned char readdata[21];
00024     unsigned char lampeON[6]= {0xae,0xc1,22,2,1,0};
00025     unsigned char lampeOFF[6]= {0xae,0xc1,22,2,0,0};
00026     if(STATE == true) {
00027         do {
00028             composant->write(I2Caddress,(char*)lampeON,6);
00029             composant->read(I2Caddress,(char*)readdata,10);
00030             wait(0.01);
00031         } while(readdata[0] != 175 && readdata[1] != 193);
00032     } else {
00033         do {
00034             composant->write(I2Caddress,(char*)lampeOFF,6);
00035             composant->read(I2Caddress,(char*)readdata,10);
00036             wait(0.01);
00037         } while(readdata[0] != 175 && readdata[1] != 193);
00038     }
00039 
00040 }
00041 void Pixy2_Library::Pixy2_SetServo(int PAN, int TILT)   // Head Servo Crontrol methode
00042 {
00043     int lowP, hightP, lowT, hightT;
00044     hightP = PAN >> 8 ;
00045     lowP = PAN & 0x0f;
00046     hightT = TILT >> 8 ;
00047     lowT = TILT & 0x0f;
00048     unsigned char readdata[21];
00049     unsigned char SetServ[8]= {0xae,0xc1,18,4,lowP,hightP,lowT,hightP};
00050     do {
00051         composant->write(I2Caddress,(char*)SetServ,6);
00052         composant->read(I2Caddress,(char*)readdata,10);
00053         wait(0.01);
00054     } while(readdata[0] != 175 && readdata[1] != 193);
00055 }
00056 
00057 
00058 void Pixy2_Library::Pixy2_RGBLED(bool STATE)
00059 {
00060 
00061     unsigned char readdata[21];
00062     unsigned char lampeON[6]= {0xae,0xc1,22,2,0,1};
00063     unsigned char lampeOFF[6]= {0xae,0xc1,22,2,0,0};
00064     if(STATE == true) {
00065         do {
00066             composant->write(I2Caddress,(char*)lampeON,6);
00067             composant->read(I2Caddress,(char*)readdata,10);
00068             wait(0.01);
00069         } while(readdata[0] != 175 && readdata[1] != 193);
00070     } else {
00071         do {
00072             composant->write(I2Caddress,(char*)lampeOFF,6);
00073             composant->read(I2Caddress,(char*)readdata,10);
00074             wait(0.01);
00075         } while(readdata[0] != 175 && readdata[1] != 193);
00076     }
00077 
00078 }
00079 
00080 int Pixy2_Library::Pixy2_GetBlock(char DATA, int BLOCK_NUMBER)
00081 {
00082     int DataSize = BLOCK_NUMBER * 14 + 6;
00083     unsigned char writedata[6]= {0xae,0xc1,32,2,255,20};
00084     unsigned char readdata[DataSize + 1];
00085     do {
00086         composant->write(I2Caddress,(char*)writedata,6);
00087         composant->read(I2Caddress,(char*)readdata,DataSize);
00088         wait(0.1);
00089     } while(readdata[0] != 175 && readdata[1] != 193);
00090     switch(DATA) {
00091         case 's':
00092             if(readdata[DataSize - 13]<2) return readdata[7]*256+readdata[DataSize - 14];
00093             if(readdata[DataSize - 13]>=2) return -2;
00094             break;
00095         case 'x':
00096             if(readdata[DataSize - 11]<2) return readdata[DataSize - 11]*256+readdata[DataSize - 12];
00097             if(readdata[DataSize - 11]>=2) return -2;
00098             break;
00099         case 'y':
00100             if(readdata[DataSize - 9]<2) return readdata[DataSize - 9]*256+readdata[DataSize - 10];
00101             if(readdata[DataSize - 9]>=2) return -2;
00102             break;
00103         case 'w':
00104             if(readdata[DataSize - 7]<2) return readdata[DataSize - 7]*256+readdata[DataSize - 8];
00105             if(readdata[DataSize - 7]>=2) return -2;
00106             break;
00107         case 'h':
00108             if(readdata[DataSize - 5]<2) return readdata[DataSize - 5]*256+readdata[DataSize - 6];
00109             if(readdata[DataSize - 5]>=2) return -2;
00110             break;
00111         case 'a':
00112             if(readdata[DataSize - 3]<2) return readdata[DataSize - 3]*256+readdata[DataSize - 4];
00113             if(readdata[DataSize - 3]>=2) return -2;
00114             break;
00115         case 'i':
00116             if(readdata[DataSize - 1]<2) return readdata[DataSize - 1]*256+readdata[DataSize - 2];                                //////////////////////// 1
00117             if(readdata[DataSize - 1]>=2) return -2;
00118             break;
00119     }
00120 }
00121 
00122 
00123