Я использую I2C I / O расширитель для чтения до 8 входов.
Расширитель ввода / вывода обеспечивает 8-битный выход .... 1 байт.
Поскольку расширитель ввода / вывода имеет внутренние подтягивания, все 8 бит равны 1, когда все порты не подключены к GND.
Таким образом, на выходе получается 255 ... B11111111
когда все порты подключены к GND .. все 8 бит становятся 0.
Таким образом, выходной сигнал равен 0 ... B00000000
Все хорошо, но я мог бы инвертировать сигналы, когда все порты не подключены к GND, выход должен быть: 0 ... B00000000.
А когда все порты подключены к GND, выход должен быть 255 ... B11111111
Использование Bitwise NOT не совсем то, что я хочу.
от 255 до -1
Что такое логич, потому что упомянул это на своем сайте:
Ссылка
Код, который у меня есть, на самом деле не работает ...
byte OutputI2C;
byte OutputI2CInvert;
byte InputModbus;
void setup() {
Serial.begin(9600);
}
void loop() {
Wire.requestFrom(B0111000, 1); //connect to i/o expander
OutputI2C = Wire.read(); // Read data
OutputI2CInvert = OutputI2C; // make copie
delay(250);
Serial.print(~OutputI2CInvert); // invert
}
Так что я надеюсь, что кто-то знает, как инвертировать байт без отрицательного вывода.