00001 00002 #include <WProgram.h> 00003 00004 /* 00005 Output pins from the GP2D02 00006 1) Ground (black) 00007 2) Input (Green) --> A1 (pClk) 00008 3) +5V (Red) 00009 4) Output (Yellow) --> A0 (pDat) 00010 00011 */ 00012 00013 int pDat = 14; //A0 00014 int pClk = 15; //A1 00015 00016 00017 void setupSensor() 00018 { 00019 pinMode(pClk, OUTPUT); 00020 pinMode(pDat, INPUT); 00021 digitalWrite(pClk, LOW); 00022 } 00023 00024 byte readSensor() 00025 { 00026 byte dataIn = 0; 00027 digitalWrite(pClk, LOW); 00028 while(digitalRead(pDat) != HIGH); 00029 00030 digitalWrite(pClk, HIGH); 00031 for(int i=0; i<8; i++) 00032 { 00033 digitalWrite(pClk, LOW); 00034 dataIn = (dataIn << 1) | digitalRead(pDat); 00035 digitalWrite(pClk, HIGH); 00036 00037 } 00038 delay(1); 00039 return dataIn; 00040 } 00041 00042 void setup() { 00043 beginSerial(19200); 00044 setupSensor(); 00045 Serial.println("Setup Done"); 00046 } 00047 00048 void loop() { 00049 00050 int dist = readSensor(); 00051 Serial.print("IR: "); 00052 Serial.println(dist); 00053 00054 } 00055 00056 int main() 00057 { 00058 init(); 00059 setup(); 00060 00061 for(;;) 00062 loop(); 00063 00064 return 0; 00065 } 00066 00067