Con questo progetto andremo a gestire un Joystick, usando la scheda di sviluppo FTDI FT232H (di cui esiste una pagina dedicata su questo sito) e la scheda di sviluppo TI ADS1115 (di cui esiste una pagina dedicata su questo sito).
Il Joystick deve essere collegato alla scheda di sviluppo TI ADS1115. I connettori di collegamento sono elencati qui di seguito:
Immagine | Scheda FT232H | Scheda ADS1115 | Joystick |
---|---|---|---|
AD0 | SCL | ------ | |
AD1 + AD2 | SDA | ------ | |
+5V | VDD | ------ | |
GND | GND | ------ | |
GND | ------ | GND | |
+5V | ------ | +5V | |
------ | A0 | VRX | |
------ | A1 | VRY | |
------ | A2 | SW |
Per gestire il Joystick, è richiesta la presenza della libreria "Adafruit CircuitPython ADS1x15".
Il seguente esempio di codice Python visualizza sia il valore attuale (in formato "raw") sia il voltaggio attuale dei tre parametri (asse X, asse Y, pulsante) forniti dal Joystick:
import time import board import busio import adafruit_ads1x15.ads1115 as ADS from adafruit_ads1x15.analog_in import AnalogIn # Create the I2C bus i2c = busio.I2C(board.SCL, board.SDA) # Create the ADC object using the I2C bus ads = ADS.ADS1115(i2c) # Create single-ended input on channel 0,1,2 chanX = AnalogIn(ads, ADS.P0) chanY = AnalogIn(ads, ADS.P1) chanB = AnalogIn(ads, ADS.P2) print("{:>6}\t{:>6}\t{:>6}\t{:>6}\t{:>6}\t{:>6}".format("raw_X", "volt_X", "raw_Y", "volt_Y", "raw_B", "volt_B")) try: while True: print("{:>6}\t{:>6.3f}\t{:>6}\t{:>6.3f}\t{:>6}\t{:>6.3f}".format(chanX.value, chanX.voltage, chanY.value, chanY.voltage, chanB.value, chanB.voltage)) time.sleep(0.25) except KeyboardInterrupt: # Capture keyboard ^C to exit the program print('\nYou terminated the program. The program ends!')
Per gestire il Joystick, è richiesta la presenza della libreria "ADS1115_FTDI".
Il seguente esempio di codice Python visualizza sia il valore attuale (in formato "raw") sia il voltaggio attuale dei tre parametri (asse X, asse Y, pulsante) forniti dal Joystick:
import time import ads1x15 as ADS # Create the ADC object using the I2C bus ads = ADS.ADS1115() # Create single-ended input on channel 0,1,2 chanX = ADS.AnalogIn(ads, ADS.P0) chanY = ADS.AnalogIn(ads, ADS.P1) chanB = ADS.AnalogIn(ads, ADS.P2) print("{:>6}\t{:>6}\t{:>6}\t{:>6}\t{:>6}\t{:>6}".format("raw_X", "volt_X", "raw_Y", "volt_Y", "raw_B", "volt_B")) try: while True: print("{:>6}\t{:>6.3f}\t{:>6}\t{:>6.3f}\t{:>6}\t{:>6.3f}".format(chanX.value, chanX.voltage, chanY.value, chanY.voltage, chanB.value, chanB.voltage)) time.sleep(0.25) except KeyboardInterrupt: # Capture keyboard ^C to exit the program print('\nYou terminated the program. The program ends!')