hi allerseits,
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...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 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...







Zitieren

Lesezeichen