Помощь в программировании со сдвиговыми регистрами 74НС595
- Войдите на сайт для отправки комментариев
Здравствуйте! Появился такой вопрос. У меня проект по сути являющийся бегущим огоньком. В этом проекте у меня будет подключено n-количество сдвиговых регистров и к каждой ноге выхода будет подключен светодиод через резистор. Каскадом у меня получилось подключить сдвиговые регистры информацию под черпнул здесьhttp://asio5.ru/?p=454 и здесь http://arduino.ru/Tutorial/registr_74HC595 скетч более подходящий нашел вот тутhttp://asio5.ru/?p=454
//Пин 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() { // Цикл обхода 16 светодиодов for (int i = 0; i < 16; i++) { // Запись в регистр registerWrite(i, HIGH); // Задержка 0.5 с. delay(500); // Отключение предыдущего светодиода if (i > 0) { registerWrite(i - 1, LOW); } // Отключение последнего светодиода // ("предыдущий" для первого" else { registerWrite(15, LOW); } } } // Метод для отсылки данных в регистры void registerWrite(int num, int state) { // Для хранения 16 битов используется unsigned int unsigned int bitsToSend = 0; // 0b000000000000000 // Инициализируем начало приема данных digitalWrite(ST_CP, LOW); // Устанавливаем 1 в соответствующий бит bitWrite(bitsToSend, num, state); // 16 бит необходимо разделить на два байта: // И записать каждый байт в соответствующий регистр byte register1 = highByte(bitsToSend); byte register2 = lowByte(bitsToSend); // Последовательная передача данных на пин DS shiftOut(DS, SH_CP, MSBFIRST, register2); shiftOut(DS, SH_CP, MSBFIRST, register1); // Инициализируем окончание передачи данных. // Регистры подадут напряжение на указанные выходы digitalWrite(ST_CP, HIGH); }
Этот скетч немного мне не подходит т.к. он зажигает только один светодиод а мне нужно что бы он оставлял гореть и предыдущие светодиоды и второе работать скетч начинает со второго сдвигового регистра при включение т.е. сначала загорается 9 и последующие светодиоды а мне нужно чтобы с первого начинал загорать светодиод. Помогите доработать скетч. Хочу сделать шкалутку виде такой http://vk.com/video-42128136_164506984 или такой http://www.youtube.com/watch?v=B_itSC3oGpg
Нашел на этом форуме похожий скетч но также предыдущие светодиоды гаснут http://arduino.ru/forum/programmirovanie/pomogite-razobratsya-s-74hc595-64bit
Пишите yaryarikyar@ya.ru
Неужели трудно самому найти http://arduino.ru/Tutorial/registr_74HC595
прочитать и понять принцип ее работы ?
там "защелка", гоните биты, а потом защелкиваете ее, на выводах комбинация ваших бит.