Folgende Warnungen sind aufgetreten:
Warning [2] Undefined variable $unreadreports - Line: 34 - File: global.php(961) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 34 errorHandler->error_callback
/global.php 961 eval
/showthread.php 28 require_once
Warning [2] Undefined property: MyLanguage::$thread_modes - Line: 43 - File: showthread.php(1621) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php(1621) : eval()'d code 43 errorHandler->error_callback
/showthread.php 1621 eval




Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
GPIO Orginal auto navigations panel benutzen -GPIO
#1
Hallo nochmals an alle,

Erst mal wieder lob an die ganzen Entwickler hier und die die mithelfen. Da ich es mit dem Radio Modul Problem aufgeben habe, dachte ich mir endlich die notwendige stoeurung zum laufen zu bringen und das ganze endlich ins Auto zu schmeißen. 

Also ich brauche: Play/pause, next song, previous und volume control. Ich dachte das ganze mit dem orginal bedienteil der navigation zu machen da ich nicht wirklich platz habe funktionel die buttons einzubauen.
Das problem liegt jetzt erst mal irgeneine aktion mit den buttons anzusteuerun und danach den rotary encoder zum laufen zu bringen wenn das uberhaupt geht da es so einer ist:


[Bild: image.jpg]

Und mithilfe dieser plastik werden die impulse/phasen erstelletn:

[Bild: image.jpg]



Hier noch die shematic:

[Bild: image.jpg]




Mit der python skript teste ich ob die knopf drucke erkant werden - die knopfe funktioniern. Jetzt wurde ich gern noch den encoder testen, weil ich an den Pins die im shematicn gekennzeichnet sind als encoder ( 6 und 7 wenn ich richtig liege) ich kein funktion kriege ( der wiederstand ist da zu gross, 1M ohm, da es noch durch einen stromkreis geht mit transistoren und kondenzatoren) habe aber schnitstellen gefunden wo ich das signal direkt ubernehemn konnte wenn es bedarf gibt.

Also jetz noch mall im kurzem meine bitte: Wo und was muss ich ( nur in der gpio_descritpion? ) machen damit ich mit denn buttons Play/Pause, Next und Previous bedinnen kann und wenn mir jemand mit dem rotary helfen konnte ( oder gibt es so kleine rotary encoders zum kaufen dann kann ich Ihn vielleicht ersetzen).

Python Skript:
[Bild: image.png]

GPIO_description:



Code:
# Raspberry PI GPIO XBMC Controller configuration file
# Ip address of the XBMC machine
[ip]:localhost

# Radio volume and XBMC volume are unified
unified_volume:1

# Debouncing settings
click_skip:0
click_hold:500000
encoder_hold:200000

# Left Control
button:10:system_mode_toggle
encoder:sl:2:sr:2:clk:11:dt:9:volume_minus:volume_plus

# Right Control
encoder:sl:2:sr:2:clk:22:dt:27:radio_seek_down+xbmcbuiltin_PlayerControl(previous):radio_seek_up+xbmcbuiltin_PlayerControl(next)
button:17:KB_Enter
button:0:KB_Enter
#zum testen



################################################################################
#########################  CLARIFICATION ON SETTINGS  ##########################
 


Vielen Dank im voraus.


Mfg
[Bild: logodzj.png]
Zitieren
#2
Anybody? Sad
[Bild: logodzj.png]
Zitieren
#3
Also ich sehe auf diesem Bild keinen Roter Encoder. Wo soll der sein und bist du sicher, dass das Teil welches du meinst auch wirklich ein Encoder ist?
Was mir sonst noch auffällt: schmeiß' das "button:0:KB_Enter" raus oder kommentiere es wenigstens aus. Das gehört da nicht hin. Abgesehen davon sollte die gpio_description für das was du tun möchtest passen. Falls es halt einen Encoder gibt, der auch richtig angeschlossen ist.
Zitieren
#4
Danke Jack fur deine antwort.

Also wenn ich mich nicht irre, sind die zwei blech teile, im ersten bild zu sehen ein stuck unter dem mittel knopf, als kontakte vom rotary encoder. Die konakte stehen wie auf dem bild zu sehen auseinander, werden von dem plastik teil auf bild zwei zusammen gefuhrt. Und das sollte doch das prinzip von einem rotary encoder sein, wenn ich falsch liege bitte korriegert mich.

[Bild: td_libs_Encoder_pos1.png]


Ich sehe aber nirgendwo in der gpio_descprition zeilen die die knopfe konfiguriren und weiss ich selber nicht, habe es versucht.
Also an ich auf die Pins 33,35,37 (GPIO 13,19,26) die jeweilgen knopfe anstecke, was mus ich noch in die gpio schreiben damit die als play/pause,next,previous funktionieren?

Danke

Edit: Hier das bild vom ganzen kontroll-panel... Nur meins ist eins mit 2  knopfen und ein rotary mit knopf.

[Bild: %24_58.JPG]
[Bild: logodzj.png]
Zitieren
#5
Ich glaube ich verstehe was du meinst. Ich zweifle aber, ob das wirklich dem Prinzip eines Rotary Encoders entspricht. Wie wird dabei zwischen einem Links- und einem Rechtsdreh unterschieden? Es ist ebenfalls völlig offen, ob da auch die nötigen Pull-up Widerstände verbaut sind.

Zur Erklärung der gpio_description:
Code:
# Right Control
encoder:sl:2:sr:2:clk:22:dt:27:radio_seek_down+xbmcbuiltin_PlayerControl(previous):radio_seek_up+xbmcbuiltin_PlayerControl(next)
button:17:KB_Enter

Die Anschlüsse musst du beachten und entsprechend ändern oder deinen Encoder entsprechend verkabeln:
clk: GPIO Pin, auf dem der CLK Pin des Encoders angeschlossen ist
dt:  GPIO Pin, auf dem der DT Pin des Encoders angeschlossen ist
button:  GPIO Pin, auf dem der Button des Encoders angeschlossen ist

Natürlich hast du jetzt wohl das Problem, dass die Anschlüsse deines "Encoders" wahrscheinlich nicht entsprechend benannt sind. Und an der Stelle kann ich dich nur warnen, dass der Pi schnell mal gegrillt ist, wenn falsche Ströme in die GPIO-Pins geleitet werden. Ich kann selber ein Lied davon singen …

Was die Befehle in der gpio_description angeht:
Code:
radio_seek_down+xbmcbuiltin_PlayerControl(previous):radio_seek_up+xbmcbuiltin_PlayerControl(next)

1. Die Befehle für Links-/Rechtsdreh sind durch einen Doppelpunkt ":" getrennt. Was vor dem Doppelpunkt steht wird bei Linksdreh ausgeführt, was rechts davon steht entsprechend bei Rechtsdreh.

2. Sowohl Links- als auch Rechtsdreh haben jeweils eine Doppelbelegung (getrennt durch das "+"). Je nachdem, welcher Modus aktiv ist (Radio oder eben nicht Radio) wird der entsprechende Befehl ausgeführt:
Links - radio_seek_down = Radio Suchlauf Frequenz absteigend
Links - xbmcbuiltin_PlayerControl(previous) = gehe zum vorigen Track
Rechts - radio_seek_up = Radio Suchlauf Frequenz aufsteigend
Rechts - xbmcbuiltin_PlayerControl(next) = gehe zum nächsten Track
Button - KB_Enter = Enter
Zitieren
#6
Jack, vielen dank fur die ganze eklareung. 

Was den rotary encoder angehet, meiner meinung sollte es funktionieren, weil das plastik teil wenn man den knopf dreht zuerst ein paar von den blechen zusamenfuhrt und dan denn anderen. Wie in den bild zu sehen, wenn man links dreht, kommt zuerst "pin2" hoch, dann pin1,bei einem rechtsdreh andersrum. 
Was die pull up wiederstande angehet, ist nur an einem knopf ein wiederstand und zwar nur 450ohm. Habe aber gelesen das mann die internen wiederstande nutzen kann mit pull_up_down=GPIO.PUD_UP (wenn es bedarf gibt kann ich auch noch ein dazwischen loten).

Also nochmal zur zusammenfassung;
Mit diesen zeilen im gpio_descritpion:

button:16:PlayPause
button:20:xbmcbuiltin_PlayerControl(next)
button:21:[i]xbmcbuiltin_PlayerControl(previous)[/i]




Wenn ich die drei knopfe an die letzen drei rechten pins ( 36,38,40) oder GPIO 16,20 und 21 sollten ich reaktion am CarPi bekommen ( play/pause, next und previous)?
[Bild: logodzj.png]
Zitieren
#7
Mit dieser Funktionsweise darf man aber nicht von einem "Rotary Encoder" reden. Dann sind das einfach zwei Schalter, die über einen relativ vorsintflutlichen Mechanismus betätigt werden. Ob das damit funktioniert, darüber wage ich keine Aussage.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
RasPiCarProjekt