Arduino: Опыт со сдвиговым регистром - работа над ошибками

Oct 07, 2016 15:00

Прошлый урок оказался неудачным и схема не заработала. Сегодня постараемся это исправить. В том уроке не было указано, какая плата Arduino берется, посчитаем, что не угадали с выходами. За основу в этот раз возьмем пример из http://www.instructables.com/id/Multiplexing-with-Arduino-and-the-74HC595/?ALLSTEPS. Тут уже управление сдвиговым регистром сделано из аналоговых выходов. Соединяем по новой схеме. Я подключил шесть из восьми выходов с микросхемы 74HC595, три на RGB светодиод и три выхода на разноцветные цветодиоды, включенные через резисторы 220 Ом.




Скетч взял оттуда же. Он небольшой, поэтому приведу его полностью почти, чтобы потом не искать, если он понадобится для справки:
#define latchPin A1
#define clockPin A0
#define dataPin A2
//looping variables
byte i;
byte j;
//storage variable
byte dataToSend;
void setup() {
//set pins as output
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
for (i=0;i<4;i++){
for (j=0;j<4;j++){
//bit manipulation (more info at http://arduino.cc/en/Reference/Bitshift , http://arduino.cc/en/Reference/BitwiseXorNot , and http://arduino.cc/en/Reference/BitwiseAnd)
dataToSend = (1 << (i+4)) | (15 & ~(1 << j));//preprare byte (series of 8 bits) to send to 74HC595
// setlatch pin low so the LEDs don't change while sending in bits
digitalWrite(latchPin, LOW);
// shift out the bits of dataToSend to the 74HC595
shiftOut(dataPin, clockPin, LSBFIRST, dataToSend);
//set latch pin high- this sends data to outputs so the LEDs will light up
digitalWrite(latchPin, HIGH);
delay(500);//wait
}
}
}
Скетч сделан немного для другого, но что-то делает. Поиграюсь с ним немного. Выясняется интересная вещь. Соответствие битов в посылаемом байте и номеров выходных ножек микросхемы обратное. Вычисляю байт данных так:
dataToSend = 1 << (7-i);
Цикл по j убираю, а i итерирую for (i=0;i<6;i++). Получается пробегание по всем ножкам RGB диода и по трем цветным светодиодам по порядку. Синий диод это байт 4 (два младших бита не используются, к выходам 7 и 8 ничего не подключено), зеленый - 8, а красный- 16.

image Click to view



Сегодня мы чему-то научились. Узнали, где в другой раз искать схему подключения и вообще.

arduino, видео, ябьютиблогер, лабораторный журнал

Previous post Next post
Up