hi allerseits,
Code:
/*******************************************************************************
*
* Description: asuro linksausweicher
*
*****************************************************************************/
#include "asuro.h"
#include <stdlib.h>
#include "inka.h"
static unsigned char ocr2 = 0x91; // Wert für 50:50 Pulsweite laden
void InitIRDetect(void)
{
UCSRB = 0; // USART ausschalten
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
}
void InitUart(void)
{
OCR2 = 0x91; // duty cycle fuer 36kHz
}
int main(void)
{
unsigned char sw;
Init(); // Library initialisieren
InitIRDetect(); // IR-Funktion initialisieren
WaitforStart();
while (1)
{
OCR2 = ocr2; // Puls-Pause-Verhältniss setzen
Sleep(10); // kurz warten bis TSOP genügend Flanken erkennt
if (PIND & (1 << PD0)) // TSOP-Eingang auf IR Echo überprüfen
{
StatusLED(GREEN); // kein Echo
BackLED(OFF,OFF);
//MotorSpeed(255,255); // volle Kraft
//MotorDir(FWD,FWD); // voraus
}
else
{
StatusLED(RED); // Echo!
BackLED(ON,ON);
//MotorDir(RWD,RWD); // rückwärts
//Msleep(100);
//MotorDir(RWD,FWD); // nach links
}
sw = PollSwitch();
if (sw & 0x01) // K6 neben Schalter
ocr2 = 0xFE; //Pulsbreite 1
if (sw & 0x02)
ocr2 = 0xFD; //Pulsbreite 2
if (sw & 0x04)
ocr2 = 0xFB; //Pulsbreite 4
if (sw & 0x08)
ocr2 = 0xF7; //Pulsbreite 8
if (sw & 0x10)
ocr2 = 0xEF; //Pulsbreite 16
if (sw & 0x20)
ocr2 = 0x90; //Pulsbreite 110
/* if (sw) // bei Tastendruck Wert zum Terminal senden
{
InitUart(); // Pulsbreite für IR-Kommunikation setzen
PrintInt(sw);
SerWrite(" ",1);
PrintInt(ocr2);
SerWrite("\r\n",2);
InitIRDetect(); // Abstandsmessung aktivieren
Msleep(100);
}*/
}
return 0;
}
habe jetzt das programm etwas modifiziert, die entfernungen kann ich auch mit hilfe der schalter einstellen, die StatusLED wird bei annäherung an ein hindernis rot, wenn ich aber versuche die motorfunktionen zu aktivieren, fährt der asuro an, aber reagiert nicht mehr auf hindernisse...
habe versucht die aktivierung der IR abfrage in die while-schleife zu setzen (hinter den motorstart) bringt aber auch nichts...
bewirkt die aktivierung der motoren eine deaktivierung der IR-sensoren? Muss alles neu initialisiert werden "Init()"?
edit:
letztlich lag es am nicht vorhandenem kurzschlussjumper an der (accu)-spannungsversorgung - jetzt gehts...
Lesezeichen