немогу разобраться как через сериал порт адресовать данные на конкретный сдвиговый регистр и на конкретный пин не затранивая остальные , перелопатил инет ч так и не нашел , или нашел но не понял как всё это осуществить , счас пытаюсь разобраться вот с этим кодом
в цикле void registerWrite() не работают глобальные переменные и сериал порт не работает или я просто не понимаю как это сделать , помогите пожалуйста знатоки
C++:
int latchPin = 10;
int clockPin = 11;
int dataPin = 9;
int bitToSet = 1;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
digitalWrite(latchPin, HIGH);
registerWrite(bitToSet, HIGH);// Записываем HIGH в позицию соответствующую bitToSet
}
void loop() { }
void registerWrite(int whichPin, int whichState)// этот метод отсылает бит на сдвиговый регистр
{
unsigned int bitsToSend = 0; // для хранения 16 битов используем unsigned int
digitalWrite(latchPin, LOW);// выключаем светодиоды на время передачи битов
bitWrite(bitsToSend, 3, 1);// устанавливаем HIGH в соответствующий бит
byte register1 = highByte(bitsToSend); // разбиваем наши 16 бит на два байта// для записи в первый и второй регистр
byte register2 = lowByte(bitsToSend);
shiftOut(dataPin, clockPin, MSBFIRST, register2); // "проталкиваем" байты в регистры
shiftOut(dataPin, clockPin, MSBFIRST, register1);
digitalWrite(latchPin, HIGH); // "защелкиваем" регистр, чтобы биты появились на выходах регистра
}