Hallo
nun würde ich gerne wissen warum das led lauflicht in diesem programm nicht funktioniert?
Du meinst vermutlich, warum die LEDs während der Fahrt nicht laufen. Das liegt am true in move() und rotate(). Mit diesen true wird der blockierende Modus dieser Funktionen eingeschaltet, das bedeutet, der RP6 macht nicht anderes bis das Ziel der jeweiligen Fahrt erreicht ist.
Mit einem false als Parameter und dem Task-System des RP6 kann man das ändern. Allerdings muss man dann dafür sorgen, das der entsprechende Task (in diesem Fall "task_motionControl()") regelmässig aufgerufen wird:
Code:
#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase(); // Mikrocontroller initialisieren
startStopwatch1(); // Stopwatch1 starten!
powerON();
uint8_t runningLight = 1;
while(true)
{
move(60, FWD, DIST_MM(300), false);
while(!isMovementComplete()) // solange wir fahren
{
// Ein kleines LED Lauflicht:
if(getStopwatch1() > 100) // Sind 100ms (= 0.1s) vergangen?
{
setLEDs(runningLight); // LEDs setzen
runningLight <<= 1; // Nächste LED (shift Operation)
if(runningLight > 32) // Letzte LED?
runningLight = 1; // Ja, also wieder von vorn beginnen!
setStopwatch1(0); // Stopwatch1 auf 0 zurücksetzen
}
task_motionControl();
}
rotate(50, LEFT, 180, false);
while(!isMovementComplete()) // solange wir fahren
{
// Ein kleines LED Lauflicht:
if(getStopwatch1() > 100) // Sind 100ms (= 0.1s) vergangen?
{
setLEDs(runningLight); // LEDs setzen
runningLight <<= 1; // Nächste LED (shift Operation)
if(runningLight > 32) // Letzte LED?
runningLight = 1; // Ja, also wieder von vorn beginnen!
setStopwatch1(0); // Stopwatch1 auf 0 zurücksetzen
}
task_motionControl();
}
}
return 0;
}
Gruß
mic
Lesezeichen