hi Dirk,
also schauen wir mal was mitte juli geht...
schönen urlaub noch...
Druckbare Version
hi Dirk,
also schauen wir mal was mitte juli geht...
schönen urlaub noch...
Zu dem Problem mit den Bumpern der Code
Es funktioniert leider noch nicht ob wohl ich im vergleich zum letzten mal task_MULTIIO_BUMPERS(); erweitert habe.Code:/*****************************************************************************/
// Includes:
#include "RP6M256Lib.h"
#include "RP6I2CmasterTWI.h" // I2C Master Library
#include "RP6M256_I2CMasterLib.h"
#include "RP6M256_LFSBumperLib.h"
#include <string.h>
/**
* Bumpers Event handler
*/
void bumpersStateChanged(void)
{
if(bumper_left && bumper_right)
{
wifiControl.dir = FWD;
wifiControl.speed_left = 0;
wifiControl.speed_right = 0;
clearPosLCD(3,0,16);
setCursorPosLCD(3, 0);
writeStringLCD_P("stop");
moveCommand(&wifiControl);
}
else if(bumper_left)
{
wifiControl.dir = FWD;
wifiControl.speed_left = 0;
wifiControl.speed_right = 0;
clearPosLCD(3,0,16);
setCursorPosLCD(3, 0);
writeStringLCD_P("stop");
moveCommand(&wifiControl);
}
else if(bumper_right)
{
wifiControl.dir = FWD;
wifiControl.speed_left = 0;
wifiControl.speed_right = 0;
clearPosLCD(3,0,16);
setCursorPosLCD(3, 0);
writeStringLCD_P("stop");
moveCommand(&wifiControl);
}
}
// ... //
int main(void)
{
initRP6M256();
initLCD();// IMPORTANT:
lfsbumper_init(); // LFS & Bumper init!!!
// ---------------------------------------
I2CTWI_initMaster(100);
I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);
I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
MULTIIO_BUMPERS_setStateChangedHandler(bumpersStateChanged);
BUMPERS_setStateChangedHandler(bumpersStateChanged);
// ... //
while(true)
{
task_checkINT();
task_I2CTWI();
behaviourController();
//task_webserver();
task_MULTIIO_BUMPERS();
}
return 0;
}
Thorben W
Hi,
sollte Deine Eventhandler nicht
void MULTIIO_BUMPERS_stateChanged(void)
heißen ? den Du da aufrufst ist der für die alten Bumper.
Ich rufe beide auf den für "vorne" und den für "hinten"
Thorben W
ja Du rufst beide in der Main auf, Du sagst aber nur dem alten was er machen soll wenn Kontakt da ist.
Reicht nicht auch einer für beide? Probier ich dann mal aus
Thorben
Dirk benutzt ja in den Libs andere Variablen die abgefragt werden müssen, als die der alten Bumper.
Wie sollte das in Deinem Code funktionieren ? Kontakt vorn - ...fahre Vorwärts Kontakt hinten - ...fahre Vorwärts wäre ja dann Deine Programm Logik und das wäre ja unsinn. Du mußt also schon die Zustände aller 4 Bumper abfragen und je nach dem reagieren.
@inka:
Wenn du vorher schon mal was machen willst:Zitat:
also schauen wir mal was mitte juli geht...
Setz mal in der Demo (RP6Control_MultiIO_05) die I2C-Busgeschwindigkeit weiter runter.
Und zwar in 10er Schritten von 100 kHz auf 90, 80, 70. Jeweils neu kompilieren und testen.
Zeile: I2CTWI_initMaster(100);
@Dirk,
habe den wert versuchsweise auf 70, 50 und 20 geändert, das programm reagiert wie gehabt, wird also nach einer einmaligen anzeige der minIMU werte beendet und kehrt zu der "READY TO GO!" LCD-anzeige zurück...
@inka:
Dein Programm beendet sich selbst.
Was du probieren kannst:
1. Lade das Beispiel und die Libs nochmal komplett runter.
2. Prüfe nochmal den elektrischen Anschluß der MinIMU.
3. Ändere I2CTWI_initMaster(100) auf I2CTWI_initMaster(70).
4. Kompiliere das neu.
Wenn das Programm jetzt immer noch aussteigt, weiß ich erstmal nicht weiter.