barlip
06.04.2007, 20:40
Hallo Ich versuche greade den GP2D05 von Sharp zum laufen zu bekommen aber irgendwie klappt das nicht.
Zur Ansteuerung des Sensores:
Vin muss 56ms lang auf low gestellt sein und dann kann man über
Vout ablesen ob sich ein Gegenstand in Reichweite des Sensores befindet.
(Low ja es befindet sich ein Gegenstand in Reichweite)
Mein Programm sieht folgendermaßen aus:
(eine LED am PortA3 soll leuchten wenn ein Gegenstand in Reichweite
ist, aber sie leichtet immer auf.)
/* Standard Includes */
#include <compat/deprecated.h>
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 1000000UL
#include <util/delay.h>
int main(void)
{
DDRA = 0b01011111;
for (;;)
{
PORTA = PORTA | ( 1<<PA1 ); //Vin high
PORTA &= ~(1<<PA3); //LED aus
PORTA &= ~(1<<PA1); // Porta1 / Vin auf low
_delay_ms(56);
if ( !(PINA & (1<<PINA2)) ) //wenn pinA2 auf low ist
{
PORTA = PORTA | ( 1<<PA3 ) ; //pa3 high setzten -led an
}
PORTA = PORTA | ( 1<<PA1 ); //Porta1 auf High
for (int i=1; i<=16; i++)
{
_delay_ms(62.5);
}
}
}
Weiß jemand ob diese Pinbelegung des Sensores richtig ist ?
http://www.superrobotica.com/S320100.htm
danke henrik
Zur Ansteuerung des Sensores:
Vin muss 56ms lang auf low gestellt sein und dann kann man über
Vout ablesen ob sich ein Gegenstand in Reichweite des Sensores befindet.
(Low ja es befindet sich ein Gegenstand in Reichweite)
Mein Programm sieht folgendermaßen aus:
(eine LED am PortA3 soll leuchten wenn ein Gegenstand in Reichweite
ist, aber sie leichtet immer auf.)
/* Standard Includes */
#include <compat/deprecated.h>
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 1000000UL
#include <util/delay.h>
int main(void)
{
DDRA = 0b01011111;
for (;;)
{
PORTA = PORTA | ( 1<<PA1 ); //Vin high
PORTA &= ~(1<<PA3); //LED aus
PORTA &= ~(1<<PA1); // Porta1 / Vin auf low
_delay_ms(56);
if ( !(PINA & (1<<PINA2)) ) //wenn pinA2 auf low ist
{
PORTA = PORTA | ( 1<<PA3 ) ; //pa3 high setzten -led an
}
PORTA = PORTA | ( 1<<PA1 ); //Porta1 auf High
for (int i=1; i<=16; i++)
{
_delay_ms(62.5);
}
}
}
Weiß jemand ob diese Pinbelegung des Sensores richtig ist ?
http://www.superrobotica.com/S320100.htm
danke henrik