Ursprünglich wollte ich das Anlocken ja nur mit Bordmitteln des RP6 lösen:
PHP-Code:
// Projekt Ladestation Step 1: RP6 anlocken mic 9.2.2011
#include "RP6RobotBaseLib.h"
// ACS als LED-Sensor: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=39560
uint8_t getACS(void)
{
DDRD |= ACS_PWR; // Pins als Ausgang
DDRB |= ACS_PWRH;
PORTD &= ~ACS_PWR; // Anoden gegen GND schalten
PORTB &= ~ACS_PWRH;
sleep(10); // Kurz warten und Stoppuhr starten
setStopwatch1(0);
startStopwatch1();
DDRD &= ~ACS_PWR; // Anoden als Eingang
DDRB &= ~ACS_PWRH;
while(!(PIND & ACS_PWR)); // Warten bis Pegel wieder high ist
stopStopwatch1();
// writeInteger(getStopwatch1(), 10); writeString_P("\n\r"); mSleep(100); // debug
return(getStopwatch1()); // Messwert zurückgeben
}
int main(void)
{
initRobotBase(); // sollte man nicht vergessen
powerON(); // Achtung! Der RP6 kann sich bewegen!
enableACS(); // ACS muss für die Helligkeitsmessung
setACSPwrHigh(); // eingeschaltet sein
while(1)
{
moveAtSpeed(0, 150);
while(getACS() > 20) task_motionControl();
moveAtSpeed(200, 150);
while(getACS() < 20) task_motionControl();
}
return(0);
}
Das funktioniert, aber das Ausrichten des Lasers ist quasi unmöglich.
Inzwischen habe ich den Bootlader als Problem ausgemacht. Wenn man zum Laden den Akku vom Kontroller trennt, startet der RP6 nach Beenden des Ladens nicht mehr. Also muss man wohl mit angeschlossenem RP6 laden, der Kontroller könnte dabei selbst die Ladekontrolle übernehmen. Ansatz wäre viellecht ein Sleep-Modus aus dem ihn sein Watchdog regelmässig wieder aufweckt.
Warum soll der RP6 verschiedenfarbige LEDs auf der Station erkennen können? Welche Informationen willst du ihm zublinken?
Lesezeichen