Hallo,
auf der M32 wären schon fünf Taster drauf. (außer du willst sie selber bauen)
lg
Michi
Hallo,
ich würde gernen an meinen RP6 2 - 3 Taster anschließen.
Welche anschlüsse würden sich dafür eignen?
wie viele ports brauche ich dafür ?
wie kann ich außlesen ob ein taster gedrückt ist oder nicht ?
schon mal danke für die hilfe im voraus.
Hallo,
auf der M32 wären schon fünf Taster drauf. (außer du willst sie selber bauen)
lg
Michi
Nein aber ich hätte eigentlich vorgehabt direckt auf den RP6 Taster zubauen
sollen die taster auf den Erweiterungsflächen vom RP6
oder eine EXP ?
ein taster wird jeweils in reihe mit einem Widerstand geschaltet und dann alle Taster parrallel zueinander.
Dieses gebilde benutzt man zusammen mit einem zweiten wiederstand der konstand bleibt als Spannungsteiler.
auskommen tus du so mit nur einem ADC, eine aussage ob 2taster gleichzeitig gedrückt werden ist nicht möglich, wenn mans so macht.
Mit hochohmigen Grüßen
Virus
Es lebe der Digitalkäse !
Hallo und vielen dank für die hilfe
ich habs jetzt hinbekommen.
Ich habe mir den schaltpaln von der erweiterung angesschaut und dies nachgebaut (auf eine extra lochplatiene). Danach habe ich alles an ACD 0 angeschlossen. Hab die leibrary datei auf den richtigen port umgeschrieben.
(Hab von der librarydatei vom M32 abgeschaut)
Jetzt funktionierts !!!
Hab jetst doch ein problem wenn ich z.b. flogenden progrtammcode
starte, leuchten die LEDs dauernt egal ob ich den taster drück oder nicht.
Code:#include "RP6RobotBaseLib.h" int main(void) { initRobotBase(); writeString_P("\n\n _______________________\n"); writeString_P(" \\| RP6 ROBOT SYSTEM |/\n"); writeString_P(" \\_-_-_-_-_-_-_-_-_-_/\n\n"); setLEDs(0b000000); powerON(); while(true) { task_RP6System(); uint8_t key = getPressedKeyNumber(); if(key == 1) { writeString_P("Bin gedrückt !!!!!!\n"); setLEDs(0b111111); } else { setLEDs(0); } } return 0; }
Hallo julianf123,
die Funktion "getPressedKeyNumber()" ist ja in der RP6RobotBaseLib nicht vorhanden, weil der RP6 keine "freien" Taster hat. Es hilft auch nicht, die Funktion aus der RP6ControlLib zu kopieren. Man sollte die Libraries auch nicht ändern.
Wenn du den/die Taster mit einem Spannungsteiler an ADC0 des RP6 angeschlossen hast, kannst du sie auch so auslesen, wie in der RP6-Anleitung Seite 90 beschrieben:
uint16_t adc0 = readADC(ADC_ADC0);
Gruß Dirk
Ich hab es in eine extra Library kopiert und es auch geändert und ins makefile eingetragen (soweit hat es auch funktioniert und das beispielprogramm jetzt auch), aber wenn ich eine taste drücke (egal welche) es ist immer die taste 1.
Wo habe ich den fehler gemacht ?
Ok, dann bleibt nur, dass du mal deine extra Library, dein Hauptprogramm und einen Schaltplan von den Tastern reinstellst!
Gruß Dirk
Der fehler war an meinen Liebrarys gelegen.
Aber es funktionirt immer noch nicht.
Ich weiß zwar wie man den port adc 0 ausließt ob eine taste gedrückt ist oder nicht.
Aber ich weiß nicht wie man festelt welche taste gedrückt ist ich hab zwischen jeder taste einen 10 k wiederstand eingefügt.
(unten ist mein Schaltplan)
kann mir jemand sagen wie ich auslesen kann welche tastegedrückt istCode:#include "RP6RobotBaseLib.h" int main(void) { initRobotBase(); writeString_P("\n\n _______________________\n"); writeString_P(" \\| RP6 ROBOT SYSTEM |/\n"); writeString_P(" \\_-_-_-_-_-_-_-_-_-_/\n\n"); uint16_t keys; setLEDs(0b111111); mSleep(1000); setLEDs(0b000000); mSleep(500); while(true) { keys = readADC(ADC_ADC0); if(keys != 1023); { setLEDs(0b111111); mSleep(1000); setLEDs(0b000000); } } return 0; }
denn keys ist bei mir immer null egal welche taste ich drücke:
hier mein Schaltpalan:
Lesezeichen