Logo

Cлучайные товары

Драйвера L9110S
СNC shield v3 + A4988

Посмотреть товар в Магазине »

Мы в соц сетях


Подпишись на канал
Мы на facebook

Часы на Arduino. Паяем 74HC595N для управления LED. Часть 1

.Часы на Arduino. Паяем 74HC595N для управления LED. Часть 1

В данной статье рассмотрю первый этап сборки LED часов на Arduino. Весь процесс сборки разделю на 4 этапа:

1. Паяем схему управления 26 светодиодами. Подключение к Ардуино и тестирование.

2. Подключаем к Arduino семи сегментный индикатор, датчик температуры и влажности.

3. Подключаем к Arduino модуль реального времени, семи сегментный индикатор и Ir приемник. Настраиваем время с помощью пульта ду.

4. Сборка часов в корпус. Доработка программы.

Сейчас расскажу по порядку про сборку схемы управления 26 светодиодами который будут выводить время с точностью до 1 минуты.

подключение к Arduino UNO 5 сдвиговых регистров 74HC595N и 26 светодиодов


Вот так выгладит подключение к Arduino UNO 5 сдвиговых регистров 74HC595N и 26 светодиодов. Также подключил фото резистор для управления яркостью свечения светодиодов. А в дальнейшем и управление яркостью семисегментного индикатора.

Принципиальная схем подключения к 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

Яндекс.Метрика

Portal-PK (Портал ПК) © 2015 - 2017 MiniYiiCMS Заказать сайт: f-studio.biz
Обратная связь
Вопрос-Ответ