circuits
  • Registrieren

Article Index

Pythonscript

Um Werte auszulesen, kommen wir um etwas Programmierarbeit nicht herum. Es gibt ab jetzt viele Möglichkeiten, aber da die Raspberry Pi Foundation Python als bevorzugte Sprache für den Raspberry erkoren hat, wollen wir diese auch nutzen. Diese Anleitung soll kein Einstieg in die Programmierung darstellen. Anwender, die jetzt nicht unbedingt das Programmieren mit Python erlernen wollen ignorieren die Erläuterungen einfach und führen nur die notwendigen Schritte aus bzw. nutzen dann einfach das fertige Programm zum Testen.

Theoretisch könnten wir nun beginnen die Ansteuereung für die GPIOs von Grund auf zu programmieren. Aber da dies schon viele andere gemacht haben, nutzen wir das mal aus und installieren die Python-Programmbibliothek (eng.: Library) für die Nutzung der GPIOs. Falls noch nicht geschehen gehen wir dazu nach der Anleitung für die Installation der Python GPIO Library vor.

Haben wir das getan, können wir mit einem relativ einfachen Pythonscript unseren Testaufbau abfragen. Python soll wie gesagt nicht das Thema sein. Trotzdem hier der Quelltext, der im Aufbau dem Script read_mcp3008.py aus der Sammlung Erik Bartmanns entspricht:

#Python Timerklasse importieren
import time
#Python Raspberry Pi GPIO Klasse importieren
import RPi.GPIO as GPIO

# Festlegung der Nutzung der vorgegebenen Nummerierung der GPIOs
GPIO.setmode(GPIO.BCM)

# Namen von True und False zum besseren Verständnis festlegen (Klarnamen)
HIGH = True  # 3,3V Pegel (high)
LOW  = False # 0V Pegel (low)

# SCI Funktion
def getAnalogData(adCh, CLKPin, DINPin, DOUTPin, CSPin):
    # Pegel definieren
    GPIO.output(CSPin,   HIGH)    
    GPIO.output(CSPin,   LOW)
    GPIO.output(CLKPin, LOW)
        
    cmd = adCh
    cmd |= 0b00011000 # Kommando zum Abruf der Analogwerte des Datenkanals adCh

    # Bitfolge senden
    for i in range(5):
        if (cmd & 0x10): # 4. Bit prüfen und mit 0 anfangen
            GPIO.output(DINPin, HIGH)
        else:
            GPIO.output(DINPin, LOW)
        # Clocksignal negative Flanke erzeugen   
        GPIO.output(CLKPin, HIGH)
        GPIO.output(CLKPin, LOW)
        cmd <<= 1 # Bitfolge eine Position nach links verschieben
            
    # Datenabruf
    adchvalue = 0 # Wert auf 0 zurücksetzen
    for i in range(11):
        GPIO.output(CLKPin, HIGH)
        GPIO.output(CLKPin, LOW)
        adchvalue <<= 1 # 1 Postition nach links schieben
        if(GPIO.input(DOUTPin)):
            adchvalue |= 0x01
    time.sleep(0.5)
    return adchvalue

# Konfiguration Eingangskanal und GPIOs
CH = 0  # Analog/Digital-Channel
CLK     = 18 # Clock
DIN     = 24 # Digital in
DOUT    = 23  # Digital out
CS      = 25  # Chip-Select

# Pin-Programmierung
GPIO.setup(CLK, GPIO.OUT)
GPIO.setup(DIN, GPIO.OUT)
GPIO.setup(DOUT, GPIO.IN)
GPIO.setup(CS,   GPIO.OUT)

while True:
    print getAnalogData(CH, CLK, DIN, DOUT, CS)

Add comment

Security code
Refresh

Shopping Cart

0 Products - 0,00 EUR
Go to cart

Newest products

miniUSB Verbindungskabel 15cm (Code: MINIUSB15CM)
0,65 EUR
Raspberry Pi 3 Modell B+ (Code: RASPI3BPLUS)
36,50 EUR
3D Druck Gehäuse NanoPi NEO AIR (Code: GEHNANOPINEOAIR)
5,50 EUR
3D Druck Gehäuse NanoPi NEO (Code: GEHNANOPINEO)
4,50 EUR
NanoHat Proto (Code: NANOHATPROTO)
7,45 EUR