Python

Hubo verwendet Hardwarekomponenten, welche auch in vielfältigen anderen Projekten zum Einsatz gelangt. Insofern ist es nicht verwunderlich, daß die Programmierung auch in anderen Sprachen als C++, z.B. Python, sehr einfach ist. Anbei seien zwei Beispiele angeführt, wie die analogen und digitalen Eingänge des Hubo eingelesen und die digitalen Ausgänge gesetzt werden können.

Sollte Ihr Betriebssystem noch nicht über die Voraussetzungen zur Programmierung unter Python verfügen, so können Sie das der Hubo C++ Library beiliegende Installationsscript ausführen, welches ihnen die notwendigen Bibliotheken und Tools für  Python installiert.

 

Einlesen der analogen Eingänge des Hubo mittels Python

Das folgende Beispiel liest 10 mal im Abstand von 1s den analogen Kanal 0 des Hubo ein und gibt ihn auf der Konsole aus.

#!/usr/bin/python
import spidev
import time
# Hubo MCP3208 Demo - simple reading of the MCP3208 analog input.
def Open_SPI_ADC ():
    spiADC = spidev.SpiDev()
    spiADC.open(0, 0)
    spiADC.max_speed_hz = (50000)
    return spiADC
    
def Get_AI_Channel (spiADC, channel):
    if ((channel > 7) or (channel < 0)): print 'Illegal channel number (0 through 7)' return 0.0 result = spiADC.xfer2([6 + (channel >> 2), channel << 6, 0])
    count = ((result[1] & 0x0F) << 8) + (result[2])
    # Use a reference voltage of 2.53V.
    voltage = (2.53 * count) / 4096
    return voltage
    
# Read 10 values from analog input 0.
spiADC = Open_SPI_ADC()
for i in range(0, 9):
    print Get_AI_Channel (spiADC, 0)
    time.sleep(1)
spiADC.close();

 

Einlesen und setzen der digitalen Ein- und Ausgänge des Hubo mittels Python

Dieses Beispiel liest in einer Endlosschleife alle 8 digitalen Eingänge des Hubo ein und gibt sie unmittelbar danach auf dessen 8 Analogausgängen wieder aus.

#!/usr/bin/python
import smbus
import time
# Hubo MCP23017 Demo - simple reading and writing of the MCP23017 digital IO.
IODIRA = 0x00
IODIRB = 0x01
GPPUB  = 0x0D
GPIOA  = 0x12
GPIOB  = 0x13
global g_ioaddress
g_ioaddress = 0x20  # I2C address - Hubo master modules use 0x20
def Initialize_MCP23017 ():
    i2cbus = smbus.SMBus(1)                            # Use 1 for the model B variants, use 0 for Banana Pi.
    i2cbus.write_byte_data (g_ioaddress, IODIRA, 0x00) # Configure port A as output
    i2cbus.write_byte_data (g_ioaddress, IODIRB, 0xFF) # Configure port B as input
    i2cbus.write_byte_data (g_ioaddress, GPPUB,  0xFF) # Activate  port B's internal pull up resistors
    return i2cbus
    
def Get_DI_Channels (i2cbus):
    return i2cbus.read_byte_data(g_ioaddress, GPIOB)
def Set_DI_Channels (i2cbus, value):
    return i2cbus.write_byte_data(g_ioaddress, GPIOA, value)
    
    
# Read values from the digital input port and output the value on the digital output port.
i2cbus = Initialize_MCP23017()
while True:
    value = Get_DI_Channels (i2cbus)
    Set_DI_Channels(i2cbus, value)
    print value
    time.sleep(0.1)

Kommentare sind geschlossen.