Der RP6 hält nach einigen Sekunden alle Motoren an, lässt die vier roten LEDs blinken und gibt folgendes aus:
Das hier ist mein Programmcode:Code:##### EMERGENCY SHUTDOWN ##### ##### ALL OPERATIONS STOPPED TO PREVENT ANY DAMAGE! ##### ### ENCODER (OR MOTOR) MALFUNCTION! ### Affected channel:LEFT! (s. task_motorControl() function in RP6Lib!) You need to check Encoder/Motor assembly (or your software). The Robot needs to be resetted now.
Wenn ich moveAtSpeed(100,100) durch moveAtSpeed(0,100) ersetze passiert dasselbe, nur dass der Affected Channel dann RIGHT ist.Code:#include "RP6RobotBaseLib.h" #include "RP6I2CmasterTWI.h" #define SRF02 0xE2 uint8_t srfbuffer[2]; uint16_t distance = 200; void obstacle(void) { moveAtSpeed(0,0); } // Main: int main(void) { initRobotBase(); setLEDs(0b111111); mSleep(1000); setLEDs(0b100100); I2CTWI_initMaster(100); moveAtSpeed(100,100); // Main loop while(true) { task_motionControl(); task_ADC(); I2CTWI_transmit2Bytes(SRF02, 0, 81); mSleep(65); I2CTWI_transmitByte(SRF02, 2); I2CTWI_readBytes(SRF02, srfbuffer, 2); distance = (srfbuffer[0] << 8) + srfbuffer[1]; if( (distance < 50)) obstacle(); //writeString_P("\n distance:"); //writeInteger(distance,DEC); mSleep(500); } return 0; }
Das Selftest-Programm läuft einwandfrei, d.h. ein Hardwarefehler ist auszuschliessen.







Zitieren
Lesezeichen