Soy muy nuevo en cosas electrónicas. Estoy acostumbrado a desarrollar aplicaciones de escritorio y móviles, no para productos de hardware.
Intento conectar mi tarjeta Raspberry Pi con un potenciómetro digital MCP4131 . Pero no es muy fácil de entender. Intenté crear los proyectos desde este hilo anterior . Pero Chris (el original publicado en ese hilo) no ha suministrado un esquema del cableado ni el código fuente de ejecución exitoso, así que hice mi mejor esfuerzo para averiguarlo por mi cuenta:
¿CuáleselsignificadosiP0A,P0W,P0B?IntentémedirelvoltajeenP0AyP0Bperosiemprees0V.¿AquéconectoressedebeconectarunLED,unzumbador,...pararegular?(P0A-P0WoP0B-P0W)
ElaspectodemicódigodePythonessimilaralsiguiente(seintentóadaptarlasugerenciaconlaescrituradeocho0antesdelvalor):
importtimeimportRPi.GPIOasGPIOSPI_CS_PIN=17SPI_CLK_PIN=23SPI_SDISDO_PIN=22#mosiGPIO.setmode(GPIO.BCM)GPIO.setup(SPI_CS_PIN,GPIO.OUT)GPIO.setup(SPI_CLK_PIN,GPIO.OUT)GPIO.setup(SPI_SDISDO_PIN,GPIO.OUT)defset_value(value):print"here"
GPIO.output(SPI_CS_PIN, True)
GPIO.output(SPI_CLK_PIN, False)
GPIO.output(SPI_CS_PIN, False)
b = '{0:016b}'.format(value)
for x in range(0, 16):
print 'x:' + str(x) + ' -> ' + str(b[x])
GPIO.output(SPI_SDISDO_PIN, int(b[x]))
GPIO.output(SPI_CLK_PIN, True)
GPIO.output(SPI_CLK_PIN, False)
GPIO.output(SPI_CS_PIN, True)
while True:
for level in range(0, 128):
print 'level:' + str(level)
set_value(level)
time.sleep(0.1)
for level in range(127, -1, -1):
print 'level:' + str(level)
time.sleep(0.1)
¿Hay una manera más fácil de usar el MCP4131? Sé que RPi es compatible con el protocolo SPI, pero no estoy seguro de cómo manejar la multiplexación, ya que el RPi tiene un pin dedicado para SDI y SDO.