Сдвиговые регистры. Нужна помощь!
- Войдите на сайт для отправки комментариев
Пнд, 27/04/2015 - 23:38
Доброго времени суток!
Опять мучаю два сдвиговых регистра 74HC595.
Прошлый раз нашел ошибку заработало.
Но при изготовлении очередного устройства, опять вылазят ошибки с этими адскими микросхемами
Прошу помочь в освоении данного скетча
//Пин подключен к ST_CP входу 74HC595 int latchPin = 8; //Пин подключен к SH_CP входу 74HC595 int clockPin = 12; //Пин подключен к DS входу 74HC595 int dataPin = 11; void setup() { //устанавливаем режим OUTPUT pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { // отсчитываем от 0 до 255 и отображаем значение на светодиоде for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) { // устанавливаем синхронизацию "защелки" на LOW digitalWrite(latchPin, LOW); // передаем отсчет для вывода на зеленые светодиоды shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay); // передаем обратный отсчет для вывода на красные светодиоды shiftOut(dataPin, clockPin, MSBFIRST, 255-numberToDisplay); //"защелкиваем" регистр, тем самым устанавливая значения на выходах digitalWrite(latchPin, HIGH); // пауза перед следующей итерацией delay(500); } }
данная программа выводит значения от 0 до 255 на все шестнадцать светодиодов.
мне нужно, чтоб программа включала только один светодиод в зависимости от одной переменной, т.е. допустим а==0, значит горит самый первый светодиод, a==15 - последний, а все остальные не горят.
Прошу помощи, буду очень признателен
unsigned int плюс сдвиг
Tortik22, это значит
Будет зажигать светики Q0..Q15 по аргументу n=1..n=16. Если n=0, то все гасятся, если n>16 - ничего не делает.
Помочь мне можно парой соток на ЯД 410011919696337. Не на Балтику девятку, ессно, ибо я не пью вообще. Куплю себе пару шоколадок, говорят сладкое для мозга полезно...
ЗЫ: не стебусь, функция работает.
да так. только немного подправлю
По сути на выводных пинах сдвигового регистра получается число в двоичной форме. Т.е пишите 0b00000001 и загорается первый, 0b10000000 и загорается последний. 0b10101010 и будут гореть через один. Посмотрите даташит на сдвиговый регист, а конкретно вам поможет временная диаграмма, напишите свою функцию, которая будет зажигать только один светодиод.