Ich versuche derzeit einen Potentiometer mit einem "Wandler" auszulesen.
Der Potentiometer ist richtig angeschlossen (eine LED ist damit dimmbar).
Ich habe das Problem, dass ich in meinem Python-Programm jedoch nur zwei Werte auslesen kann (0 und 1).
Ich würde gerne mehr Werte auslesen, als diese zwei.
Mein Fall wird folgend beschrieben:
1.: Ich habe fünf Maschinen
2.: Ich möchte mittels dem Potentiometer eine von den fünf Maschinen auswählen können
3.: Der Knopf ist auch bereits Funktionstüchtig.
Der Wert springt in etwa bei der Hälfte von 0 auf 1 um.
Versuche, den Wert mit einem Faktor hoch zu skalieren oder anderes ändern die Ausgabe von 0 und 1 auf 0 und 100 o.ä.
Muss ich hier mit (Habe Erfahrungen mit dem Arduino sammeln können) einer ähnlichen Map-Funktion arbeiten?
Habe richtig Freude an der Elektrotechnik gefunden (bisher zumindest xD)
Danke im Voraus
Kampfgummibaerlie
GPIO Board - analoge Signale auslesen
Hallo,
wie hast du den Poti denn genau angeschlossen und welcher ist es?
Wie sieht denn der Code aus?
Welcher Knopf?
Es gibt einige Tutorials zu Potentiometer und Raspberry Pi(oder hast du einen Pico?), falls du einem gefolgt bist, bitte verlinken.
Grüße
Dennis
Edit: Vielleicht hilft dir die Seite weiter, sah auf den ersten Blick fürs Verständnis nicht schlecht aus:
https://newbiely.com/tutorials/raspberr ... entiometer
wie hast du den Poti denn genau angeschlossen und welcher ist es?
Wie sieht denn der Code aus?
Welcher Knopf?
Es gibt einige Tutorials zu Potentiometer und Raspberry Pi(oder hast du einen Pico?), falls du einem gefolgt bist, bitte verlinken.
Grüße
Dennis
Edit: Vielleicht hilft dir die Seite weiter, sah auf den ersten Blick fürs Verständnis nicht schlecht aus:
https://newbiely.com/tutorials/raspberr ... entiometer
"When I got the music, I got a place to go" [Rancid, 1993]
-
- User
- Beiträge: 27
- Registriert: Freitag 18. Juni 2021, 14:44
a) Ein Dreh-Potenziometer, wenn das mehr aussagt
b) nachdem ich nur 0er und 1er auslese, habe ich nicht viel weiter geschrieben...
aber hier ein paar Zeilen:
EDIT: Es handelt sich um einen Raspberry Pi 4 und ich habe das ganze eigenständig zusammengesteckt (kein Guide)...
nur eckdaten ergoogelt, aber keinem Guide 1:1 gefolgt...
b) nachdem ich nur 0er und 1er auslese, habe ich nicht viel weiter geschrieben...
aber hier ein paar Zeilen:
Code: Alles auswählen
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(12, GPIO.IN)
while True:
print(GPIO.input(12))
time.sleep(0.5)
nur eckdaten ergoogelt, aber keinem Guide 1:1 gefolgt...
Schau dir mal den Link an.
Hast du einen Analog-to-digital-Converter verbaut oder wie ist der Poti angeschlossen?
Der Pin hat eine bestimmte Spannung (kenne den Wert nicht sicher auswendig), ab dem er von Low zu High wechselt und du stellst mit deinem Poti gerade die Spannung von dem einen in den anderen Bereich. Da kann so eigentlich nicht mehr wie 0 und 1 raus kommen.
Grüße
Dennis
Hast du einen Analog-to-digital-Converter verbaut oder wie ist der Poti angeschlossen?
Der Pin hat eine bestimmte Spannung (kenne den Wert nicht sicher auswendig), ab dem er von Low zu High wechselt und du stellst mit deinem Poti gerade die Spannung von dem einen in den anderen Bereich. Da kann so eigentlich nicht mehr wie 0 und 1 raus kommen.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
-
- User
- Beiträge: 27
- Registriert: Freitag 18. Juni 2021, 14:44
Ich habe mehrere PCF8591 bei mir... reichen diese aus?
Sorry, wenn ich mich ahnungslos verhalte
Sorry, wenn ich mich ahnungslos verhalte
Einer müsste reichen. Der kann maximal 3,3V Input und stellt den Bereich von 0-3,3V in einem Bereich von 0-255 dar:
https://www.makershop.de/download/YL_40_PCF8591.pdf
Dann hast du fünf "51"er-Bereiche für die Ansteuerung deiner 5 Maschinen.
Grüße
Dennis
https://www.makershop.de/download/YL_40_PCF8591.pdf
Dann hast du fünf "51"er-Bereiche für die Ansteuerung deiner 5 Maschinen.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
-
- User
- Beiträge: 27
- Registriert: Freitag 18. Juni 2021, 14:44
Soda, nachdem meine Quelle ein Buch ist, kann ich hier nur schwer einen Link vergeben.
Ich habe das Problem gelöst, mein Fehler war, dass ich den GPIO-Pin nicht im Vorhinein als Input oder Output deklariert habe.
Der Rest funktioniert, einfach das PCF8591 entsprechend angeschlossen, SCL an Pi SCL(1) und SDA an Pi SDA(1) und den analogen Eingang vom Drehpotentiometer an AIN1 am PCF8591 angeschlossen.
VCC an 3.3Volt angeschlossen und die GND entsprechend geerdet.
Bin sehr froh das Problem gelöst zu haben und bin sogar stolz darauf, die Lösung auf eigenem Wege gefunden zu haben und komme drauf, ich sollte mich wirklich durch mehr solche Praxisbücher arbeiten ^^
In meinem Fall habe ich ein Exemplar von "Raspberry Pi - Handbuch für Einsteiger"
PS: Wieder ausreichend geschafft für heute, Gute Nacht ;D
LG Kampfgummibaerlie
EDIT:
Hier mein Python Code
Ich habe das Problem gelöst, mein Fehler war, dass ich den GPIO-Pin nicht im Vorhinein als Input oder Output deklariert habe.
Der Rest funktioniert, einfach das PCF8591 entsprechend angeschlossen, SCL an Pi SCL(1) und SDA an Pi SDA(1) und den analogen Eingang vom Drehpotentiometer an AIN1 am PCF8591 angeschlossen.
VCC an 3.3Volt angeschlossen und die GND entsprechend geerdet.
Bin sehr froh das Problem gelöst zu haben und bin sogar stolz darauf, die Lösung auf eigenem Wege gefunden zu haben und komme drauf, ich sollte mich wirklich durch mehr solche Praxisbücher arbeiten ^^
In meinem Fall habe ich ein Exemplar von "Raspberry Pi - Handbuch für Einsteiger"
PS: Wieder ausreichend geschafft für heute, Gute Nacht ;D
LG Kampfgummibaerlie
EDIT:
Hier mein Python Code
Code: Alles auswählen
import smbus
import time
address = 0x48
A0 = 0x41
bus = smbus.SMBus(1)
while True:
bus.write_byte(address,A0)
value = bus.read_byte(address)
print(int(value/50))
time.sleep(0.25)
- __blackjack__
- User
- Beiträge: 13241
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Das `SMBus`-Objekt sollte man am Programmende schliessen und `int()` kann man sich sparen wenn man die ganzzahlige Division macht:
Code: Alles auswählen
#!/usr/bin/env python3
import time
from contextlib import closing
import smbus
ADDRESS = 0x48
def main():
with closing(smbus.SMBus(1)) as bus:
while True:
bus.write_byte(ADDRESS, 0x41)
print(bus.read_byte(ADDRESS) // 50)
time.sleep(0.25)
if __name__ == "__main__":
main()
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.