Hallo
Ich wollte hier nochmal mein Projekt vorstellen in dem ich einen Asuro Snake Vision Sensor an den RP6 angeschlossen habe.
Mit diesem ist er in der Lage zB Teelichter zu finden:
Video 1: http://www.youtube.com/watch?v=t3B6QOD3lSI
Video 2: http://www.youtube.com/watch?v=DYTQs0__HAI
Video 3: http://www.youtube.com/watch?v=U5HgMhHF9DU
Video 4: http://www.youtube.com/watch?v=Ytfs5m9FXbE
Bild hier
Dieses Programm zeigt eine Wärmeveränderung in Abhängigkeit einer vorher ermittelten Umgebungstemperatur. Die Ausgabe erfolgt über das Display und über die LEDs an der M32 Platine. Somit ist er in der Lage die Wärmeveränderung einer Hand in über einem Meter Distanz zu registrieren (Der Sensor ist nun hinten am RP6 angebracht und nicht mehr wie in dem Video vorne) :
Die Platine wird an den untersten Pins an die 5V RP6 Stromversorgung angeschlossen.Code:by Thund3r int main(void) // Hauptfunktion { initRP6Control(); // Microcontroller initialisieren DDRA &= ~ADC2; uint16_t adc2 = readADC(ADC_2); //1ten Wert einlesen uint16_t sSnake = adc2; uint16_t adc3 = readADC(ADC_3); // 2ten Wert einlesen uint16_t sSnake2 = adc3; int a; a=(sSnake-sSnake2); //Differenzwert als Umgebungstemperatur festlegen while(true) { ... Snake(a); ... } while(1); return 0; } ... void Snake(int dif) { uint16_t adc2 = readADC(ADC_2); uint16_t sSnake = adc2; uint16_t adc3 = readADC(ADC_3); uint16_t sSnake2 = adc3; int a,b; a=(sSnake-sSnake2); //Neuen Wert einlesen b=0; if(a>dif+10) //Wenn neuer Wert abzüglich einem Tolleranzwert recht höher ist { setLEDs(0b0011); b=1; } if(a<dif-5) //Wenn neuer Wert abzüglich einem Tolleranzwert links höher ist { setLEDs(0b1100); b=1; } if(b==0) //Wenn keine relevante Temperaturveränderung erfolgte { setLEDs(0b0110); } clearLCD(); setCursorPosLCD(0, 0); writeStringLCD("Rechts: "); writeStringLCD(" "); writeIntegerLCD(sSnake, DEC); writeStringLCD(" "); writeIntegerLCD(a, DEC); setCursorPosLCD(1, 0); writeStringLCD("Links: "); writeIntegerLCD(sSnake2, DEC); writeStringLCD(" "); writeIntegerLCD(b, DEC); mSleep(200); }
Die ADC Anschlüsse kommen für den rechten Sensor an den äußersten Pin und für den linken an den mittleren und äußeren:
Bild hier
Dann müssen noch beide Dioden auf der Platine mit einem Stückchen Draht überbrückt werden:
Bild hier
Nun kann der RP6 die Daten auswerten
Gruß Thund3r
Lesezeichen