Всем привет, хочу управлять 8-ю светодиодами через сдвиговый регистр. Такой вопрос: как при изменении чего-либо, например при срабатывании датчика, зажечь только определенный светодиод, а остальные оставить незатронутыми? ну т.е. управлять какими либо определенными, но не менять состояния других? Использую вот этот код: Код (Text): //Пин SH_CP int SH_CP = 4; //Пин ST_CP int ST_CP = 3; //Пин DS int DS = 2; void setup() { // Настраиваем выходы SH_CP, ST_CP, DS pinMode(SH_CP, OUTPUT); pinMode(ST_CP, OUTPUT); pinMode(DS, OUTPUT); } void loop() { for (int i = 0; i < 256; i++) { // Инициализируем начало приема данных digitalWrite(ST_CP, LOW); // Последовательная передача данных на пин DS shiftOut(DS, SH_CP, MSBFIRST, i); // Инициализируем окончание передачи данных. // Регистр подаст напряжение на указанные выходы digitalWrite(ST_CP, HIGH); // Задержка 0.5 секунды delay(500); } }
Вся проблема заключается в том, что я заранее не знаю состояния каждого светодиода и определяю зажечь или погасить его из функции "if" Код (Text): / Загорится первый светодиод shiftOut(DS, SH_CP, MSBFIRST, 0b10000000); // Загорятся 2, 4, 6, 8 светодиоды shiftOut(DS, SH_CP, MSBFIRST, 0b01010101); // Загорится первый светодиод - порядок передачи битов обратный shiftOut(DS, SH_CP, MSBLAST, 0b00000001);