public byte Read() { gpio.SetPinMode(sda, PinMode.Input); int i = 0; byte temp = 0; PinValue ack; for (i = 0; i < 8; i++) { temp = (byte)(temp * 2); gpio.Write(scl, PinValue.Low); System.Threading.Thread.Sleep(I2C_IDLE); gpio.Write(scl, PinValue.High); System.Threading.Thread.Sleep(I2C_IDLE); PinValue data = gpio.Read(sda); temp += data.Equals(PinValue.High) ? (byte)0x01 : (byte)0x00; System.Threading.Thread.Sleep(I2C_IDLE); gpio.Write(scl, PinValue.Low); System.Threading.Thread.Sleep(I2C_IDLE); } gpio.Write(scl, PinValue.Low); System.Threading.Thread.Sleep(I2C_IDLE); gpio.Write(scl, PinValue.High); System.Threading.Thread.Sleep(I2C_IDLE); gpio.SetPinMode(sda, PinMode.Input); ack = gpio.Read(sda); //Console.WriteLine(ack.ToString()); gpio.Write(scl, PinValue.Low); return(temp); }
static void BlinkLight() { controller.OpenPin(LEDPin, PinMode.Output); PinValue pinState = PinValue.High; while (!ct.IsCancellationRequested) { controller.Write(LEDPin, pinState); pinState = pinState.Equals(PinValue.High) ? PinValue.Low : PinValue.High; Thread.Sleep(1000); } }