Estoy tratando de controlar un pote digital MCP4131 desde mi Raspberry Pi usando esto biblioteca .
Al usar los pines GPIO, estoy "emulando" una interfaz SPI. Traigo el pin ChipSelect a bajo, escribo mi byte, luego lo coloco de nuevo.
Cuando enchufo mi medidor en el limpiaparabrisas, obtengo un voltaje constante. No está cambiando. ¿Hay algún problema con mi código en POT.cs
?
class Program {
static void Main(string[] args) {
GPIOMem cs = new GPIOMem(GPIOPins.GPIO_17);
GPIOMem clock = new GPIOMem(GPIOPins.GPIO_23);
GPIOMem sdisdo = new GPIOMem(GPIOPins.GPIO_22);
var pot = new POT(clock, sdisdo, cs);
while (true) {
for (uint level = 0; level <= 127; level++) {
pot.SetValue(level);
Thread.Sleep(100);
}
for (uint level = 127; level >= 0; level--) {
pot.SetValue(level);
Thread.Sleep(100);
}
}
}
}
Pot.cs
public class POT {
private GPIO clockpin;
private GPIO mosipin;
private GPIO cspin;
public POT(GPIO SPICLK, GPIO SPIMOSI, GPIO SPICS) {
clockpin = SPICLK;
mosipin = SPIMOSI;
cspin = SPICS;
}
public void SetValue(uint value) {
Console.WriteLine("here");
cspin.Write(true);
clockpin.Write(false); // #start clock low
cspin.Write(false); // #bring CS low
BitArray b = new BitArray(BitConverter.GetBytes(value));
Console.WriteLine(value);
for (int i = 8; i > 0; i--) {
mosipin.Write(b[i]);
clockpin.Write(true); //cycle the clock
clockpin.Write(false); //yucle the clock
}
cspin.Write(true);
}
}
Tenga en cuenta : todos los 3 pines GPIO funcionan como deberían.