Mit den oben beschriebenen Änderungen kann ich dein Progamm so übersetzen:
Videos sind immer klasse :)Code:// Includes: #include "RP6RobotBaseLib.h" // Always needs to be included! /*****************************************************************************/ /** * This function works similar to the ACS function and gets called everytime the * Bumpers are hit (the Bumpers need to be pressed down for at least 100ms to make * sure that it is registered by the program!) */ void bumpersStateChanged(void) { writeString_P("Bumpers state changed! BPL: "); if(bumper_left) // Left Bumper { writeChar('o'); PORTA |= 1; //ADC0 high = Schuss } else { writeChar(' '); PORTA &= ~1; // ADC0 low = Ende Schuss } writeString_P(" | BPR: "); if(bumper_right) // Right Bumper writeChar('o'); else writeChar(' '); writeChar('\n'); } /*****************************************************************************/ // Main - The program starts here: int main(void) { initRobotBase(); // Always call this first! The Processor will not work // correctly otherwise. // Write Message to UART: writeString_P("\nRP6 ACS - Testprogram\n"); writeString_P("_____________________\n\n"); setLEDs(0b111111); mSleep(1000); setLEDs(0b001001); // --------------------------- // Register Event Handlers: // Set Bumpers state changed event handler: BUMPERS_setStateChangedHandler(bumpersStateChanged); // --------------------------- powerON(); // Activate all important Systems and turn power LED on. // You always need to perform this command before you can // use the ACS! // Usually some of the RP6 Systems like the encoders, the ACS // (and thus also IRCOMM reception), // the current sensors and the power on LED are turned off to // save Battery power (saves about 10mA). // You can use powerOFF() to disable all those systems. // --------------------------- setACSPwrMed(); // Set ACS to medium power/range // These are the __alternative__ settings: // setACSPwrLow(); // Low power // setACSPwrHigh(); // High Power // and of course you can use: // setACSPwrOff(); to turn it off completely! // You can uncomment (= remove the "//" in front of a line) ONE of these // lines and test how it affects the maximum range of the ACS and which // Obstacles it can detect. // --------------------------- // selbst geschriebener Abschuss DDRA |= 1; // ADC0 auf Ausgang // Main loop while(true) { // This very very important function: task_RP6System(); // handles a lot of things for you. For this example, it controls the // ACS and sets the obstacle_right and obstacle_left values if it detects // an obstacle. If you registered an event handler (s. above), it calls this // event handler automatically as soon as one of these two values changes. // Nearly the same applies for the bumpers - you can check the state // of each bumper with bumper_left and bumper_right and everytime the // state changes the event handler is called automatically. // In some of the next examples you will see that this function also // controls the motors and some motion functionality. // But be careful with delay functions or other things that take a long // time (gets problematic if there are delays greater than 50ms) if you // use this! The delays may disturb the automatic control of all those // systems mentioned above. // Why do we need such a function? // Well, several things that the MEGA32 needs to take care about are not // that easy to understand (look at the task_ACS function // and some of the other functions in the RP6RobotBaseLib.c!) // and this makes it a lot easier for you! // The only thing you really need to take care about is to call // task_RP6System frequently! Then you will not have big problems usually. } return 0; }







 
			
			 
					
					
					
						 Zitieren
Zitieren

Lesezeichen