inka
12.10.2014, 14:39
hallo,
folgender code (abgespeckte version der RP6Control_MultiIO_03.c)
/************************************************** ***************************/
// Includes:
#include "RP6ControlLib.h" // The RP6 Control Library.
// Always needs to be included!
#include "RP6I2CmasterTWI.h" // Include the I2C-Bus Master Library
/************************************************** ***************************/
/************************************************** ***************************/
// Include our new "RP6Control LFS Bumper library":
// (This is the library for accessing the LFS and Bumper Board!)
#include "RP6Control_LFSBumperLib.h"
/************************************************** ***************************/
void writeDouble(double number, uint8_t width, uint8_t prec)
{char buffer[width + 1];
dtostrf(number, width, prec, &buffer[0]);
writeString(&buffer[0]);
}
/************************************************** ***************************/
// I2C Error handler
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR --> TWI STATE IS: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}
/************************************************** ***************************/
// Main function - The program starts here:
int main(void)
{
initRP6Control(); // Always call this first! The Processor will not
// work correctly otherwise.
initLCD(); // Initialize the LC-Display (LCD)
// Always call this before using the LCD!
writeString_P("\n\nRP6Control Multi IO Selftest 3!\n");
// IMPORTANT:
I2CTWI_initMaster(100); // Initialize the TWI Module for Master operation
// with 100kHz SCL Frequency
// Register the event handler:
I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);
uint16_t distsrf_1;
startStopwatch1();
// IMPORTANT:
lfsbumper_init(); // LFS & Bumper init!!!
//setServoPower(1); // Servo power ON!
while(true)
{
if(getStopwatch1() > 1000) // 1s
{
// SRF02 sensors test:
distsrf_1 = SRF02_measure(CH_SRF02_1, MODE_CM);
writeString("\nSRF02 SENSOR_1 ->");
writeString("\nDistance: ");
writeInteger(distsrf_1, DEC);
mSleep(500);
setStopwatch1(0);
}
task_I2CTWI();
}
return 0;
}
- der SRF02 hängt direkt an der multiIO, steckplatz 1, der code ist entsprechend angepasst, die zeilen für radar und sharps in der "RP6Control_LFSBumperLib.h" sind auskommentiert
- der RP6 steht ca. 50 cm von der wand entfernt, der SRF ist auf einem servo montiert, so dass ich ihn drehen kann ohne den roby bewegen zu müssen
- der code wird ohne fehlermeldungen kompiliert
- flashe und starte ich ihn, werden als abstand 34cm angezeigt ( es sind gemessen 50cm)
- verändere ich den code von: "distsrf_1 = SRF02_measure(CH_SRF02_1, MODE_CM);" in: "............._INCH" wird nach kompilieren, flashen und starten 18 inch angezeit, (18x2,5=ca.45)
- ändere ich den code wieder zurück in "........_CM", werden nach kompilieren, flaschen und starten 51cm angezeigt. Damit wäre ich sehr zufrieden, es bleibt aber nur bis zum AUS- und Einschalten, dann sind es wieder 34cm.
das gleiche passiert mit der original "RP6Control_MultiIO_03.c"....
ich verstehe es nicht, kann mir da bitte jemand helfen was da schiefläuft?
folgender code (abgespeckte version der RP6Control_MultiIO_03.c)
/************************************************** ***************************/
// Includes:
#include "RP6ControlLib.h" // The RP6 Control Library.
// Always needs to be included!
#include "RP6I2CmasterTWI.h" // Include the I2C-Bus Master Library
/************************************************** ***************************/
/************************************************** ***************************/
// Include our new "RP6Control LFS Bumper library":
// (This is the library for accessing the LFS and Bumper Board!)
#include "RP6Control_LFSBumperLib.h"
/************************************************** ***************************/
void writeDouble(double number, uint8_t width, uint8_t prec)
{char buffer[width + 1];
dtostrf(number, width, prec, &buffer[0]);
writeString(&buffer[0]);
}
/************************************************** ***************************/
// I2C Error handler
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR --> TWI STATE IS: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}
/************************************************** ***************************/
// Main function - The program starts here:
int main(void)
{
initRP6Control(); // Always call this first! The Processor will not
// work correctly otherwise.
initLCD(); // Initialize the LC-Display (LCD)
// Always call this before using the LCD!
writeString_P("\n\nRP6Control Multi IO Selftest 3!\n");
// IMPORTANT:
I2CTWI_initMaster(100); // Initialize the TWI Module for Master operation
// with 100kHz SCL Frequency
// Register the event handler:
I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);
uint16_t distsrf_1;
startStopwatch1();
// IMPORTANT:
lfsbumper_init(); // LFS & Bumper init!!!
//setServoPower(1); // Servo power ON!
while(true)
{
if(getStopwatch1() > 1000) // 1s
{
// SRF02 sensors test:
distsrf_1 = SRF02_measure(CH_SRF02_1, MODE_CM);
writeString("\nSRF02 SENSOR_1 ->");
writeString("\nDistance: ");
writeInteger(distsrf_1, DEC);
mSleep(500);
setStopwatch1(0);
}
task_I2CTWI();
}
return 0;
}
- der SRF02 hängt direkt an der multiIO, steckplatz 1, der code ist entsprechend angepasst, die zeilen für radar und sharps in der "RP6Control_LFSBumperLib.h" sind auskommentiert
- der RP6 steht ca. 50 cm von der wand entfernt, der SRF ist auf einem servo montiert, so dass ich ihn drehen kann ohne den roby bewegen zu müssen
- der code wird ohne fehlermeldungen kompiliert
- flashe und starte ich ihn, werden als abstand 34cm angezeigt ( es sind gemessen 50cm)
- verändere ich den code von: "distsrf_1 = SRF02_measure(CH_SRF02_1, MODE_CM);" in: "............._INCH" wird nach kompilieren, flashen und starten 18 inch angezeit, (18x2,5=ca.45)
- ändere ich den code wieder zurück in "........_CM", werden nach kompilieren, flaschen und starten 51cm angezeigt. Damit wäre ich sehr zufrieden, es bleibt aber nur bis zum AUS- und Einschalten, dann sind es wieder 34cm.
das gleiche passiert mit der original "RP6Control_MultiIO_03.c"....
ich verstehe es nicht, kann mir da bitte jemand helfen was da schiefläuft?