-
-
Benutzer
Stammmitglied
RP6: Porterweiterung/M128 Probleme
Hallo ,
Ich hab mir einen RP6 + M128 Board + LCD gekauft. Da die C-Control Einheit nicht gleich verfügbar war hab ich mich erst mal etwas mit der Base beschäftigt.
Da ich ne Beleuchtung wie beim Auto haben wollte hab ich einen PCF8574AP an den I2C Bus angeschlossen und möchte über den sämtliche LEDs steuern. (siehe Schaltplan)
Allerdings wenn ich den RP6 jetzt einschalte leuchten alle LEDs - liegt wohl daran das beim PowerOn alle Ports auf HIGH gesetzt werden.
Hab irgendwo hier im Board was von negativer Logik gelesen - was ist den das nun wieder? Könnte mir das helfen das beim einschalten die LEDs nicht leuchten?
Des weiteren hab ich mit der Programmierung so meine Probleme (bin absoluter Einsteiger):
Wie kann ich einzelne Ports des PCF8574AP ein/ausschalten ? Hab dazu überhaupt nix gefunden - das I2C Master 01 Beispiel hilft mir gar nicht / versteh ich nicht.
Nun zum M128:
Da vor ein paar Tagen die C-Control Einheit eingetrudelt ist hab ich mal ein paar Beispiele ausprobiert.
Allerdings reagiert der RP6 nicht auf die Bumper / IR Sensoren - der klatscht mit vollem Hurra gegen die Wand. Hab schon alle Beispiele durch Sensors 1-5, Movement 1-4.
Er registriert zwar das der Bumper geschaltet hat (LED leuchtet) reagiert aber nicht darauf - fährt volles Rohr weiter. Oder beim Movement 4 Programm bleibt er nach 30cm stehen und macht nix mehr.
Am LCD steht zwar Moving aber der RP6 steht, auch 10min. lang.
Irgendwie sieht das M128 Board aus als obs mal nass geworden ist - die Taster sind rostig, bedeckt mit Grünspan - vielleicht das Board defekt?
Gruss
ScummVM
-
Erfahrener Benutzer
Robotik Einstein
Hallo ScummVM,
zum Thema Ansteuerung des Portexpanders:
Ein gutes Beispiel ist RP6Base_I2CMaster_01.c . Da wird die Ansteuerung mit einem Lauflicht gezeigt. Wenn die Hardware stimmt, müßte das Lauflicht zu sehen sein.
zum Thema Hardware:
Normalerweise kann man einen Transistor nicht so direkt an den PCF8574 schalten, weil er an den Ports nur wenige uA bei HI liefert, was gel. Transistoren nicht voll durchschaltet. Bei deinen kleinen Low-Current LEDs klappt das aber anscheinend (sie leuchten ja ...). Für diese LEDs brauchst du auch normal keine Transistoren, sondern kannst die LEDs vom Port (mit Vorwiderstand!) gegen VCC schalten. Dann leuchten sie, wenn du den Port LO setzt.
zum Thema M128:
Was tut sich beim Selftest-Programm? Ist da alles ok?
Wenn der RP6 auf nichts reagiert (M128 als I2C-Master): Hast du das I2C-Slave-Programm auf der RP6Base laufen?
Gruß Dirk
-
Benutzer
Stammmitglied
Hallo,
zum Thema Ansteuerung des Portexpanders:
Das RP6Base_I2CMaster_01.c Programm läuft - habs auch schon ein bisschen verlangsamt damit man den Effekt besser sieht. Was ich aber noch wissen möchte ist wie ich gezielt einzelne Ports des PCF8574 ein bzw. ausschalte. (High/Low)
Ich hab auch schon ein Programm hier gefunden das alle Ports auf LOW setzt (und somit alle LEDs abschaltet), nur warum das so ist hab ich immer noch nicht kapiert.
Zur Hardware:
Ja stimmt die Transistorschaltung ist eigentlich ein Overkill - es leuchten sogar alle LEDs, auch die weißen. Ich werde das aber noch ändern - sieht auch nicht schön aus - soviel Zeugs auf der Base
Nur leider muss ich dann jede weiße LED extra über einen Port schalten.
zum M128:
Das Selbsttest-Programm läuft ohne Probleme.
Das Slave-Programm ist in der Base.
Das Problem ist er reagiert weder mit den ACS Sensoren noch mit den Bumpern.
Wenn ich einen Bumper drücke wird noch die LED auf der Base geschaltet (SL6 bzw. SL3) - aber es wird nicht darauf reagiert.
Mit der Base alleine funktionierts.
Getestet hab ich nur mit der Base + M128, LCD und den Portexpander hab ich abgehängt.
Gruß
ScummVM
-
Erfahrener Benutzer
Roboter Genie
> reagiert der RP6 nicht auf die Bumper / IR Sensoren
Jumper (=Steckbrücken) auf dem M128 Modul überprüfen - s. Anleitung standard positionen.
Die Interrupt Jumper werden wohl falsch gesteckt sein.
MfG,
SlyD
-
Benutzer
Stammmitglied
Hallo,
Jup das wars - PE6 war auf INT2 und PE5 auf INT3. Hab das Board aber schon so bekommen.
Thx
-
Erfahrener Benutzer
Roboter-Spezialist
Hi,
die Pins vom PC8574 haben die Wertigkeit 1,2,4,8,16,32,64 und 128
Wenn Du also LED an Pin 3 ändern willst sendest DU 4, wenn Du LED 3 und 6 ändern willst dann eben 36
also
pin=36;I2CTWI_transmitByte(PCF8574_1, ~pin);
Trainmen
-
Benutzer
Stammmitglied
Danke, müsst ich das schon hinbekommen \/
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen