Änderungen

KY-023 Joystick Modul (XY-Achsen)

3.270 Byte hinzugefügt, 15:50, 6. Apr. 2016
/* Keine Zusammenfassung */
Der Raspberry Pi besitzt im Gegensatz zum Arduino keine analogen Eingänge bzw. es ist kein ADC (analog digital Converter) im Chip des Raspberry Pi's integriert. Dies schränkt den Raspberry Pi ein, wenn man Sensoren einsetzen möchte, wo nicht digital Werte ausgegeben werden [Spannungswert überschritten -> digital EIN | Spannungswert unterschritten -> digital AUS | Beispiel: Knopf gedrückt [<span style="color: #99cc00;">EIN</span>] Knopf losgelassen [<span style="color: #ff0000;">AUS</span>]], sondern es sich hier um einen kontinuierlichen veränderlichen Wert handeln sollte (Beispiel: Potentiometer -> Andere Position = Anderer Spannungswert)
Um diese Problematik zu umgehen, besitzt unser ''Sensorkit X40'' mit dem '''KY-053''' ein Modul mit 12 16 Bit genauen ADC, welches Sie am Raspberry nutzen können, um diesen um 4 analoge Eingänge erweitern zu können. Dieses wird per I2C an den Raspberry Pi angeschlossen, übernimmt die analoge Messung und gibt den Wert digital an den Raspberry Pi weiter.
Somit empfehlen wir, bei analogen Sensoren dieses Sets das KY-053 Modul mit dem besagten ADC dazwischenzuschalten. Nähere Informationen finden Sie auf der Informationsseite zum [[KY-053 Analog Digital Converter|'''KY-053'''   Analog Digital Converter]]
<span style="color: #ff6600;">!! <span style="color: #ff0000;">Achtung</span> !! <span style="color: #99cc00;">Analoger Sensor</span>  !! <span style="color: #ff0000;">Achtung</span> !!</span>
Das Programm nutzt zur Ansteuerung des ADS1115 ADC die entsprechenden ADS1x15 und I2C Python-Libraries der Firma Adafruit. Diese wurden unter dem folgenden Link [[https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]] unter der BSD-Lizenz [[https://opensource.org/licenses/BSD-3-Clause Link]] veröffentlicht. Die benötigten Libraries sind im unteren Download-Paket enthalten.
Das Programm liest die aktuellen Werte der Eingang-Pins und gibt diese in der Konsole als Wert in [mV] aus.
<pre class="brush:py"># Benoetigte #!/usr/bin/python# coding=utf-8 ################################################################################################################ Copyright by Joy-IT### Published under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License### Commercial use only after permission is requested and granted###### KY-023 Joystick Module - Raspberry Pi Python Code Example################################################################################################################  # Dieser Code nutzt die ADS1115 und die I2C Python Library fuer den Raspberry Pi# Diese ist unter folgendem Link unter der BSD Lizenz veroeffentlicht# [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]from Adafruit_ADS1x15 import ADS1x15from time import sleep # Weitere benoetigte Module werden importiert und eingerichtetimport time, signal, sys, os
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False) # Benutzte Variablen werden initialisiertdelayTime = 0.2 # Adresszuweisung ADS1x15 ADC ADS1015 = 0x00 # 12-bit ADCADS1115 = 0x01 # Hier 16-bit # Verstaerkung (Gain) wird der Eingangsausgewaehltgain = 4096 # +/-Pin deklariert, an dem der Sensor angeschlossen ist4. Zusaetzlich wird auch der PullUP Widerstand am Eingang aktiviert096VGPIO_PIN # gain = 242048 # +/- 2.048VGPIO# gain = 1024 # +/- 1.setup(GPIO_PIN, GPIO024V# gain = 512 # +/- 0.IN, pull_up_down 512V# gain = GPIO256 # +/- 0.PUD_UP256V # Abtasterate des ADC (SampleRate)wird ausgewaehlt# sps = 8 # 8 Samples pro Sekunde# sps = 16 # 16 Samples pro Sekunde# sps = 32 # 32 Samples pro Sekundesps = 64 # 64 Samples pro Sekunde# sps = 128 # 128 Samples pro Sekundeprint "Sensor-Test [druecken Sie STRG+C, um den Test zu beenden]"# sps = 250 # 250 Samples pro Sekunde# sps = 475 # 475 Samples pro Sekunde# Diese AusgabeFunktion wird bei Signaldetektion ausgefuehrtsps = 860 # 860 Samples pro Sekundedef ausgabeFunktion(null): print# ADC-Channel ("Signal erkannt"1-4)wird ausgewaehlt x_adc_channel = 0 # Channel 0 für die x-Achsey_adc_channel = 1 # Beim Detektieren eines Signals Channel 1 für die y-Achse# adc_channel = 2 # Channel 2# adc_channel = 3 # Channel 3 # Hier wird der ADC initialisiert - beim KY-053 verwendeten ADC handelt es sich um einen ADS1115 Chipsatzadc = ADS1x15(fallende Signalflankeic=ADS1115) wird die Ausgabefunktion ausgeloest Button_PIN = 24GPIO.add_event_detectsetup(GPIO_PINButton_PIN, GPIO.FALLINGIN, callbackpull_up_down =ausgabeFunktion, bouncetime=100GPIO.PUD_UP) ############################################################################################################# # ########
# Hauptprogrammschleife
# ########
# Das Programm liest die aktuellen Werte der Eingang-Pins
# und gibt diese in der Konsole aus
 
try:
while True:
#Aktuelle Werte werden aufgenommen x = adc.readADCSingleEnded(x_adc_channel, gain, sps) y = adc.readADCSingleEnded(y_adc_channel, gain, sps)  # Ausgabe auf die Konsole if GPIO.input(Button_PIN) == True: print "X-Achse:", x,"mV, ","Y-Achse:", y,"mV, Button: nicht gedrückt" else: print "X-Achse:", x, "mV, ", "Y-Achse:", y, "mV, Button: gedrückt" print "---------------------------------------"  # Reset + Delay button_pressed = False time.sleep(1delayTime) # Aufraeumarbeiten nachdem das Programm beendet wurde 
except KeyboardInterrupt:
GPIO.cleanup()
'''Anschlussbelegung Raspberry Pi:'''
Sensor KY-023 {| style="height: 58px85px; padding-left: 30px;" width="228441"
|-
||SignalKnopf
||=
||GPIO24
||[Pin 18(RPi)]|-||Y-Position||=||Analog 1||[Pin A1 (ADS1115 - KY-053)]|-||X-Position||=||Analog 0||[Pin A0 (ADS1115 - KY-053)]
|-
||+V
||=
||3,3V
||[Pin 1(RPi)]
|-
||GND
||=
||Masse
||[Pin 6(RPi)]
|}
 
ADS1115 - KY-053:
 
{| style="height: 127px; padding-left: 30px;" width="436"
|-
||VDD
||=
||3,3V
||[Pin 01]
|-
||GND
||=
||Masse
||[Pin 09]
|-
||SCL
||=
||GPIO03 / SCL
||[Pin 05 (RPi)]
|-
||SDA
||=
||GPIO02 / SDA
||[Pin 03 (RPi)]
|-
||A0
||=
||s.o.
||[Sensor: X-Position (KY-023)]
|-
||A1
||=
||s.o.
||[Sensor: Y-Position (KY-023)]
|}
 
'''Beispielprogramm Download'''
[[Medium:SensorTest_RPiKY-023_RPi_JoystickModule.zip|SensorTest_RPiKY-023_RPi_JoystickModule.zip]]
Zu starten mit dem Befehl:
<pre class="brush:bash">sudo python SensorTest_RPiKY-023_RPi_JoystickModule.py
</pre>
Bürokrat, Administrator
611
Bearbeitungen