Hier kann es um die mitgelieferte Software des RP6 gehen.
Welche Funktionen enthält die RP6Lib? Was könnte man verbessern? Probleme mit den Demos? usw. usw.
Schaun wir 'mal, was da in C auf uns zu kommt! O:)
Gruß Dirk
Druckbare Version
Hier kann es um die mitgelieferte Software des RP6 gehen.
Welche Funktionen enthält die RP6Lib? Was könnte man verbessern? Probleme mit den Demos? usw. usw.
Schaun wir 'mal, was da in C auf uns zu kommt! O:)
Gruß Dirk
Es wäre schöner, wenn die LEDs wie die zugeordeten Bits von 0 bis 5 gezählt würden.
Aktuell:
Schöner wäre doch so:Code:setLEDs(0b000001); // Und dieser schaltet StautsLED1 an und alle anderen aus.
(Der Tippfehler im Komentar ist übrigens aus der Doku, im Kapitel "4.6.4. Status LEDs und Bumper")Code:setLEDs(0b000001); // Und dieser schaltet StautsLED0 an und alle anderen aus.
Im LED-Struct der BaseLib.h:
Und die Reserve vielleicht 6+7?Code:struct {
unsigned LED1:1;
unsigned LED2:1;
unsigned LED3:1;
unsigned LED4:1;
unsigned LED5:1;
unsigned LED6:1;
unsigned reserved1:1;
unsigned reserved2:1;
};
Man könnte dann viel einfacher Bitmanipulationen im Bitfeld machen wenn die LED-Namen mit 0 starten. Es fehlt auch eine getLEDS()-Funktion.
Gruß
mic
Hallo mic,
es gibt beim RP6 6 Status LEDs.
Die heissen SL1 bis SL6 was eine Abkürzung für StatusLED1 bis StatusLED6 ist.
Das ist mit SL1 bis 6 auf dem Mainboard beschriftet, würde ich daher eigentlich ungern ändern.
Hier verstehe ich nicht ganz was Du mir eigentlich sagen willst?Zitat:
Man könnte dann viel einfacher Bitmanipulationen im Bitfeld machen wenn die LED-Namen mit 0 starten.
Was hat der Name einer LED mit Bitmanipulationen zu tun?
Die LEDs heissen einfach so! Habe auch noch nirgendwo eine LED0 gesehen ;)
Könnte man noch hinzufügen - ja. Braucht man aber nicht unbedingt - wenn dann würde ein Makro reichen.Zitat:
Es fehlt auch eine getLEDS()-Funktion.
Über diese Union (aus RP6RobotBaseLib.h):
kannst Du einfach auf das Status LEDs byte und die einzelnen LED Bits zugreifen.Code:union {
uint8_t byte;
struct {
unsigned LEDsR:3;
unsigned LEDsL:3;
unsigned reserved:2;
};
struct {
unsigned LED1:1;
unsigned LED2:1;
unsigned LED3:1;
unsigned LED4:1;
unsigned LED5:1;
unsigned LED6:1;
unsigned reserved1:1;
unsigned reserved2:1;
};
} statusLEDs;
Wird in der Anleitung auch beschrieben wie das geht.
(Schreiben zumindest - lesen ist aber nicht viel anders)
Du kannst direkt die Variable "statusLEDs.byte" verwenden.
Oder statusLEDs.LED1 bis 6
Hier ein Auszug aus einem Beispielprogramm:
Code:if(obstacle_left && obstacle_right) // Obstacle in the middle?
statusLEDs.byte = 0b100100;
else
statusLEDs.byte = 0b000000;
statusLEDs.LED5 = obstacle_left;
statusLEDs.LED4 = (!obstacle_left); // Inverted LED5!
statusLEDs.LED2 = obstacle_right;
statusLEDs.LED1 = (!obstacle_right); // Inverted LED2!
// Update the LED values:
updateStatusLEDs();
-------
Die beiden reservierten Bits sind da eigentlich nur um den Rest vom Byte auch noch bitweise zugänglich zu machen. Brauchst Du abernicht. Mache ich einfach immer so um zu kennzeichnen das da noch Bits frei sind in dem Byte...
MfG,
SlyD
Hallo
Ich bitte um Nachsicht, ich bin doch noch c-Neuling. Den lesenden Zugriff mit .byte habe ich inzwischen auch entdeckt. Und das mit LED1 das Bit 0 gemeint ist , werde ich mir schon merken können.
Kann ich mit der Libary auch die PWRON-LED steuern? Ich finde das nirgends.
Für blinken links/rechts zum BeispielZitat:
Mache ich einfach immer so um zu kennzeichnen das da noch Bits frei sind in dem Byte...
Gruß
mic
Hallo mic,
Hatte ich schon fast wieder vergessen ;) Sorry ;)Zitat:
Ich bitte um Nachsicht, ich bin doch noch c-Neuling.
Ja die PWRON Led kannst Du mit den Funktionen
powerON()
und
powerOFF()
steuern.
Es sind eigentlich keine richtigen Funktionen - sind nur Makros, die einen I/O Pin umschalten (s. RP6RobotBase.h):
Die LED zeigt an, ob beide Encoder, Stromsensoren und ACS angeschaltet sind. Wenn man das alles inkl. POWERON LED ausschaltet, spart man insgesamt etwa 10mA an Strombedarf.Code:// Enable/Disable Encoders, IR Receiver and Current Sensors to
// save power when not moving.
#define powerON() PORTB |= PWRON
#define powerOFF() PORTB &= ~PWRON
Da hat mich adrisch schon drauf hingewiesen - das fehlt noch im Handbuch. Da wird bisher nur drauf hingewiesen, dass ohne powerON auszuführen die Encoder, Motorstromsensoren und das ACS nicht funktionieren.
Das füge ich natürlich noch ein.
MfG,
Dominik
Hallo
Alles klar, dass hatte ich auch gelesen und powerON() und powerOFF() auch schon in meine Kurzreferenz eingefügt. Da dann aber auch die LEDs der Sensoren ausgehen, dachte ich, es gibt vielleicht eine Möglichkeit die PWRLED einzeln anzusteuern. Das geht aber nicht laut Schaltplan, da hätte ich auch gleich reinschauen können.
Danke für die Infos.
Gruß
mic
Da ja in einem anderen Thread mehr Infos von den Testern des RP6 gefordert wurden, will ich euch mal ein bisschen was über die Demoprogramme erzählen:
Es werden 20 Beispielprogramme für die "Base-Platine" und 11 für die Erweiterungsplatine mitgeliefert. Zusätzlich ist ein Selftestprogramm dabei.
Alle Demos sind jeweils in zwei Ausführungen dabei, einmal in kommentierter Form (sehr ausführlich!!, ideal für Einsteiger) und einmal unkommentiert.
Die Base- Demos reichen vom Klassiker "LEDs" ansteuern, über ACS, Statemachine und Lightfollowing bis hin zu I2C Master/Slave.
Die "Qualität" der Demos ist durchweg einwandfrei, also sehr lehrreich.
Hallo
Ich muss nun auch mal dem "Druck der Öffentlichkeit" nachgeben und euch ein paar (wie bei meinen Beiträgen üblich eher unspektakuläre) Videos meiner Tests zeigen:
Eines der Demos (Move4) prüft beim Fahren die Bumper und weicht bei Kontakt aus:
http://radbruch.roboterbastler.de/rp...-move4-org.mpg
(ca. 7MB, 320X240)
Wie man deutlich sieht, ist die KI dieses Demos noch nicht wirklich ausgereift. Aber das sind ja auch nur (super kommentierte, allerdings in Englisch) Beispiele die wohl zum Nachdenken (das hatten wir doch schon) und verbessern anregen sollen. Eine kleine Änderung und der RP6 kann's schon deutlich besser:
http://radbruch.roboterbastler.de/rp...move4-neu1.mpg
http://radbruch.roboterbastler.de/rp...move4-neu2.mpg
(je ca. 2MB)
Der RP6 rasseln zwar etwas beim Fahren, aber daran stört sich mein Hund (Sally, ein 11jähriges Dobermannmädchen) nicht besonders. O:)
Unglaublich, draußen ist super Sommer und ich hocke in der Bude und spiele mit dem RP6. Ich bin eindeutig suchtgefährdet... ;)
Gruß
mic
Hi Leute!
Ja es schein wieder Sommer zu werden ;-)
Ist passend hab Urlaub :-)
Dickes Lob! Jetzt wird das ganze schon Informativer.
@Radbruch: Ich weis nicht ob du auch den RP5 hast oder in Betrieb kennst, aber ist das neue Getrieb viel leiser als das vom RP5?
Schönes Wochenende Ulli
Ich hab den RP5 hier, und mach auch zu dem Thema gerade ein Video... einen Moment noch...