74CH595
- Войдите на сайт для отправки комментариев
Сб, 11/06/2016 - 17:32
Добрый день. Люди добрые скиньте пожалуйста пример скетча для управления последовательно включёнными регистрами 74CH595 в колличестве 24 штуки!!!!! Нужно чтобы на всех выводах поочереди появлялась 1, что то типо бегущей точки или последовательное включение светодиодов на выходах...
/* Программа поочередно включается все светодиоды, подключенные к двум сдвиговым регистрам 74HC595 .Created 22 May 2009 Modified 23 Mar 2010 by Tom Igoe */ //Пин подключен к ST_CP входу 74HC595 const int latchPin = 8; //Пин подключен к SH_CP входу 74HC595 const int clockPin = 12; //Пин подключен к DS входу 74HC595 const int dataPin = 11; char inputString[2]; void setup() { //устанавливаем режим OUTPUT pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); Serial.begin(9600); Serial.println("reset"); } void loop() { // проходим циклом по всем 16 выходам двух регистров for (int thisLed = 0; thisLed < 16; thisLed++) { // записываем сигнал в регистр для очередного светодиода registerWrite(thisLed, HIGH); // если это не первый светодиод, то отключаем предыдущий if (thisLed > 0) { registerWrite(thisLed - 1, LOW); } // если это первый светодиод, то отключаем последний else { registerWrite(15, LOW); } // делаем паузу перед следующией итерацией delay(250); } } // этот метод отсылает бит на сдвиговый регистр void registerWrite(int whichPin, int whichState) { // для хранения 16 битов используем unsigned int unsigned int bitsToSend = 0; // выключаем светодиоды на время передачи битов digitalWrite(latchPin, LOW); // устанавливаем HIGH в соответствующий бит bitWrite(bitsToSend, whichPin, whichState); // разбиваем наши 16 бит на два байта // для записи в первый и второй регистр byte registerOne = highByte(bitsToSend); byte registerTwo = lowByte(bitsToSend); // "проталкиваем" байты в регистры shiftOut(dataPin, clockPin, MSBFIRST, registerTwo); shiftOut(dataPin, clockPin, MSBFIRST, registerOne); // "защелкиваем" регистр, чтобы биты появились на выходах регистра digitalWrite(latchPin, HIGH); }Я нашол пример для двух регистров, а что исправить чтобы 24 заработали???
Создай массив из 24 байт, а потом в цикле заталкивай элементы массива в регистры - все просто.
Для заталкивания в регистр используй shiftout.
А можно по подробней, хотя бы пример скетча?