Некорректная работа каскада сдвиговых регистров.
- Войдите на сайт для отправки комментариев
Вс, 24/02/2013 - 16:56
Подключил три регистра 74HC595 по этой схеме http://arduino.ru/Tutorial/registr_74HC595 (не допетрил как вставить отдельную картинку...) Зажигаю поочередно светодиоды, но загораются сразу три-по одному в каждов ряду. Вот код (на всякий...);
//Пин подключен к ST_CP входу 74HC595 int latchPin = 8; //Пин подключен к SH_CP входу 74HC595 int clockPin = 12; //Пин подключен к DS входу 74HC595 int dataPin = 11; int reg=0; int led_1=1; void setup() { //устанавливаем режим OUTPUT pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(led_1, OUTPUT); } void loop() { int x=0; int del=50; delpin=random(50, 500); registerWrite(2, HIGH); delay(del); //registerWrite(0, LOW); delay(del); } // Этот метот записывает байт в регистр void registerWrite(int whichPin, int whichState) { // инициализируем и обнуляем байт byte bitsToSend = 0; //Отключаем вывод на регистре digitalWrite(latchPin, LOW); // устанавливаем HIGH в соответствующем бите bitWrite(bitsToSend, whichPin, whichState); // проталкиваем байт в регистр shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend); // "защелкиваем" регистр, чтобы байт появился на его выходах digitalWrite(latchPin, HIGH); }
Сохранение картинок на форуме
Регистры работают корректно, просто вы ими так управляете, а точнее вы пытаетесь управлять тремя регистрами как одним.
Вы были правы-теперь все ОК) Спасибо за совет и потраченное время.
ситх, опубликуйте пожалуйста исправленный скетч.
Где у Вас была ошибка?
В сообщении #1 разверните код.
Аналогичный вопрос, только у меня будет 8шт выходных регистров и работать по SPI, надыбал текст для двух регистров, а как сделать для 8ми не пойму. Косяк в правильной последовательности отправки байтов я думаю... перечитал кучу инфы пока эфекта ноль. Уважаемые знатоки помогите начинающему!