Есть динамич. 7-сегм. индикатор и LED контроллер типа tm (int tm_dio = D1; int tm_clk = D2; int tm_stb = D3;)
Есть метод отправки данных с типом байт на пин dio:
void t_send(byte data)
{
for (int i = 0; i < 8; i++) {
digitalWrite(clockPin, LOW);
digitalWrite(dataPin, data & 1 ? HIGH : LOW);
data >>= 1;
digitalWrite(clockPin, HIGH);
}
}
void t_sendData(byte address, byte data)
{
t_sendCommand(0x44);
digitalWrite(strobePin, LOW);
t_send(0xC0 | address);
t_send(data);
digitalWrite(strobePin, HIGH);
}
отправка
адрес число
t_sendData(0b11000000, 0b00000110); // 1-й сегмент (число один)
Как правильно прочитать запись строки digitalWrite(tm_dio, data & 1 ? HIGH : LOW);
что она означает.
Каждый цикл for(0-8) передаётся 1 бит? или серия из 8 битов?
digitalWrite на пине tm_dio записывает HIGH или LOW и собирает запись типа 0b01011001?
или эта строка просто интерпретирует данные data = 0b00000110 (число один на сегменте) и загоняет их на пин в нужном порядке и режиме (rising edge), но почему тогда на диаграмме поле DIO имеет две чёрных линии которые пересекаются перед падением CLK.
Например, метод digitalWrite имеет два параметра,
первый это указание пина, второй параметр data, но у него есть указатель на число 1 и тернарный оператор ? и варианты LOW или HIGH,
после идёт сдвиг data на 1 бит вправо.
спасибо.