В данной статье рассмотрю первый этап сборки LED часов на Arduino. Весь процесс сборки разделю на 4 этапа:
1. Паяем схему управления 26 светодиодами. Подключение к Ардуино и тестирование.
2. Подключаем к Arduino семи сегментный индикатор, датчик температуры и влажности.
3. Подключаем к Arduino модуль реального времени, семи сегментный индикатор и Ir приемник. Настраиваем время с помощью пульта ду.
4. Сборка часов в корпус. Доработка программы.
Сейчас
расскажу по порядку про сборку схемы
управления 26 светодиодами который будут
выводить время с точностью до 1 минуты.
Вот так выгладит подключение к Arduino UNO 5 сдвиговых регистров 74HC595N и 26 светодиодов. Также подключил фото резистор для управления яркостью свечения светодиодов. А в дальнейшем и управление яркостью семисегментного индикатора.
Принципиальная схем подключения к Arduino UNO 5 сдвиговых регистров 74HC595N и 26 светодиодов.
Чтобы проверить
работоспособность схемы написал тестовый
скетч в среде Arduino IDE
int dataPin = 2; //Пин подключен к DS входу 74HC595
int latchPin = 3; //Пин подключен к ST_CP входу 74HC595
int clockPin = 4; //Пин подключен к SH_CP входу 74HC595
int pwmPin = 5; //Пин подключен к OE входу 74HC595 для управления ШИМ
int fr = 0; //и фоторезистора
byte path[9]= {
B00000000,
B00000001,
B00000010,
B00000100,
B00001000,
B00010000,
B00100000,
B01000000,
B10000000
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(pwmPin, OUTPUT);
}
void loop() {
for (int chas = 1; chas < 12; chas++) { // В переменной хранится позиция изменяемого бита
for (int min = 0; min < 60; min++) { // В переменной хранится позиция изменяемого бита
int photocell = analogRead(fr); // получаем данные фото резистора
int LED = map(photocell, 6, 680, 200, 10); /// приводим к нужному диапазону значений
analogWrite(pwmPin,LED); // Назначаем выходу ШИМ разные значения
int val = map(min, 0, 59, 0, 12); // приводим к 12 так как у нас не 60 а 12
digitalWrite(latchPin, LOW); // Открыли регистр
int x = min % 5; // x остаток от деления на 5
shiftOut(dataPin, clockPin, MSBFIRST, path[x]); // передаем последовательно на dataPin - в первом регистре значение B01001100
if (val < 9)
{
shiftOut(dataPin, clockPin, MSBFIRST, path[0]); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
shiftOut(dataPin, clockPin, MSBFIRST, path[val]); // передаем последовательно на dataPin - в первом регистре значение B01001100
}
else if (val >= 9) // если минут больше 8*5 выводи на второй микросхеме
{
int val1 = val-8; //
shiftOut(dataPin, clockPin, MSBFIRST, path[val1]); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
shiftOut(dataPin, clockPin, MSBFIRST, path[0]); // передаем последовательно на dataPin - в первом регистре значение B01001100
}
delay(200); // ждем
if (chas < 9)
{
shiftOut(dataPin, clockPin, MSBFIRST, path[0]); // передаем последовательно на dataPin - в первом регистре значение B01001100
shiftOut(dataPin, clockPin, MSBFIRST, path[chas]); // передаем последовательно на dataPin - в первом регистре значение B01001100
}
else if (chas >= 9) // если минут больше 8*5 выводи на второй микросхеме
{
int chas1 = chas-8; //
shiftOut(dataPin, clockPin, MSBFIRST, path[chas1]); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
shiftOut(dataPin, clockPin, MSBFIRST, path[0]); // передаем последовательно на dataPin - в первом регистре значение B01001100
}
digitalWrite(latchPin, HIGH); /// Закрываем регистр тем самым передаем значение на выводы
}
}
}
Программа
не применима для работы часов. Но для
проверки работоспособности подключения
к Arduino UNO 5 сдвиговых регистров 74HC595N
и 26 светодиодам подойдет отлично.
Понравилась статья? Поделитесь ею с друзьями:
Вернуться в раздел: Проекты на Arduino Дата публикации 30 марта , 2017
Читайте также
Какие группы светодиодов подключенные к сдвигавым регистрам что показывают?
Сначала пишет "Часы на Arduino. Паяем 74HC595N для управления LED. Часть 1" а потом - "Программа не применима для работы часов.". ништяк
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.