Воскресенье, 05.05.2024, 09:21
Приветствую Вас Гость | RSS
Сделай сам
Главная
Регистрация
Вход
Меню сайта

Мини-чат
500

Главная » 2017 » Январь » 10 » Самодельные лед часы на ардуино нано+скетч
19:44
Самодельные лед часы на ардуино нано+скетч

для изготовления нам понадобится 

1. Лед дисплей четырех сегментный

2.плата ардуина

3.три кнопки

4.пищалка

5.провода

6.плата для заряда батареи

7.сама батарея от любого телефона

и желание у меня получилось с первого раза при минимальных знаниях ардуино.

 

 

итак начнем,для начала подключаем кнопки к плате ардуино.

выглядит так как на рисунке с права

пины на плате а0 а1 а2 и масса все подключается по схеме.

 

 

 

 

 

 

 

 

 

    далее подключаем пищалку а5 и масса все по схеме

 

 

пришло время для подключения лед дисплея.

для начала нужно прозвонить пины дисплея

более подробную информацию можно посмотреть  на сайте  http://arduino-project.net/led-chasy-na-arduino/  

 

  • подключаем сигменты A, B, C, D, E, F, G  к цифровым пинам на ардуино 2, 3, 4, 5, 6, 7, 8
  • подключаем разряды 1, 2, 3, 4 к цифровым пинам на ардуино 9, 10, 11, 12
  • сегменты которые отвечают за двоеточие подключаем к 13 пину на ардуино

после подключения дисплея  к плате ардуино вливаем скетч в плату

 

 

#define MIDDLE 0 // G
#define UPPER_L 1 // F
#define LOWER_L 2 // E
#define BOTTOM 3 // D
#define LOWER_R 4 // C
#define UPPER_R 5 // B
#define TOP 6 // A
// pin 13 для отображения двоеточия
int groundPins[7] = {8, 7, 6, 5, 4, 3, 2}; // G, F, E, D, C, B, A
int digitPins[4] = {12, 11, 10, 9}; 
int ON = HIGH; // HIGH для подключения с общим анодом, LOW для подключения с общим катодом
int OFF = LOW; // LOW для подключения с общим катодом, HIGH для подключения с общим анодом
int number[10][7]; // Содержит информацию о том, какие сегменты, необходимые для каждой из 10 цифр
int digit[4];
 
int hours = 00;
int minutes = 00;
int elapsedMinutes = 0;
int seconds = 0;
int secon;
int hourset = A1;
int hoursetv = 0;
int minuteset = A2;
int minutesetv = 0;
int showsw = A0;
int showswv = 0;
unsigned long prevtime;
int showtime = 16380;
int delaytime = 200;
void setup()
{
  pinMode(13, OUTPUT);
  pinMode(hourset, INPUT);
  pinMode(minuteset, INPUT);
  pinMode(showsw, INPUT);
  digitalWrite(hourset, HIGH);
  digitalWrite(minuteset, HIGH);
  digitalWrite(showsw, HIGH);
  initNumber();
  for(int i=0; i < 7; i++) {
    pinMode(groundPins[i], OUTPUT);
    digitalWrite(groundPins[i], HIGH); // HIGH для подключения с общим анодом, LOW для подключения с общим катодом
  }
  for(int i=0; i < 4; i++) {
    pinMode(digitPins[i], OUTPUT);
    digitalWrite(digitPins[i], LOW); // LOW для подключения с общим катодом, HIGH для подключения с общим анодом
  }
}
 
void loop() {
  int n = 0;
  unsigned long time = millis() - (elapsedMinutes * 60000);
  seconds = (time / 1000);
  if (seconds > 60) {
    seconds = 0;
    minutes++;
    elapsedMinutes++;
    if (minutes >= 60) {
      minutes = 0;
      hours++;
      if (hours > 23) {
        hours = 0;
      }
    }
  }
  n = (hours * 100) + minutes;
  setDigit(n);
 
  for(int g=0; g < 7; g++) {
    digitalWrite(groundPins[g], LOW); // HIGH для подключения с общим анодом, LOW для подключения с общим катодом
    for(int i=0; i < 4; i++) {
      if (digit[i] < 0) {
        continue;
      }
      digitalWrite(digitPins[i], number[digit[i]][g]);
    }
    getDelay(); 
    digitalWrite(groundPins[g], HIGH); // HIGH для подключения с общим анодом, LOW для подключения с общим катодом
  }
  if (time - prevtime > 500) {
    prevtime = time;
    if (secon == 1) {
      secon = 0;
      return;
    }
    if (secon == 0) {
      secon = 1;
      return;
    }
  }
if (secon == 1) {
  digitalWrite(13, HIGH);
}
if (secon == 0) {
  digitalWrite(13, LOW);
}
hoursetv = digitalRead(hourset); // Установка часов
if (hoursetv == LOW) {
hours++;
tone(19,10000);
delay(25);
noTone(19);
delay(100);
if (hours > 23) {
  hours = 0;
}
}
minutesetv = digitalRead(minuteset); // Установка минут
if (minutesetv == LOW) {
minutes++;
tone(19,10000);
delay(25);
noTone(19);
delay(100);
if (minutes > 59) {
  minutes = 0;
}
}
showswv = digitalRead(showsw); 
if (showswv == LOW) {
showtime = 16380;
delaytime = 200;
}
}
 
void setDigit(int n) {
  n = n % 20000;
  digit[0] = n % 10;
  digit[1] = (n / 10) % 10;
  if ((digit[1] == 0) && (n < 10)) {
    //digit[1] = -1;
  }
  digit[2] = (n / 100) % 10;
  if ((digit[2] == 0) && (n < 100)) {
    //digit[2] = -1;
  }
  digit[3] = (n / 1000) % 10;
  if (digit[3] == 0) {
    //digit[3] = -1;
  }
}
 
void getDelay() { 
  if (delaytime >= 7) {
  delay(delaytime);
  delaytime -= 1;
}
  if (delaytime < 7) {
  delayMicroseconds(showtime);
  showtime -= 35;
  if (showtime <= 1501) {
  showtime = 1500;
  }
  }

 
void initNumber() {
  number[0][MIDDLE]  = OFF;
  number[0][UPPER_L] = ON;
  number[0][LOWER_L] = ON;
  number[0][BOTTOM]  = ON;
  number[0][LOWER_R] = ON;
  number[0][UPPER_R] = ON;
  number[0][TOP]     = ON;
 
  number[1][MIDDLE]  = OFF;
  number[1][UPPER_L] = OFF;
  number[1][LOWER_L] = OFF;
  number[1][BOTTOM]  = OFF;
  number[1][LOWER_R] = ON;
  number[1][UPPER_R] = ON;
  number[1][TOP]     = OFF;
 
  number[2][MIDDLE]  = ON;
  number[2][UPPER_L] = OFF;
  number[2][LOWER_L] = ON;
  number[2][BOTTOM]  = ON;
  number[2][LOWER_R] = OFF;
  number[2][UPPER_R] = ON;
  number[2][TOP]     = ON;
 
  number[3][MIDDLE]  = ON;
  number[3][UPPER_L] = OFF;
  number[3][LOWER_L] = OFF;
  number[3][BOTTOM]  = ON;
  number[3][LOWER_R] = ON;
  number[3][UPPER_R] = ON;
  number[3][TOP]     = ON;
 
  number[4][MIDDLE]  = ON;
  number[4][UPPER_L] = ON;
  number[4][LOWER_L] = OFF;
  number[4][BOTTOM]  = OFF;
  number[4][LOWER_R] = ON;
  number[4][UPPER_R] = ON;
  number[4][TOP]     = OFF;
 
  number[5][MIDDLE]  = ON;
  number[5][UPPER_L] = ON;
  number[5][LOWER_L] = OFF;
  number[5][BOTTOM]  = ON;
  number[5][LOWER_R] = ON;
  number[5][UPPER_R] = OFF;
  number[5][TOP]     = ON;
 
  number[6][MIDDLE]  = ON;
  number[6][UPPER_L] = ON;
  number[6][LOWER_L] = ON;
  number[6][BOTTOM]  = ON;
  number[6][LOWER_R] = ON;
  number[6][UPPER_R] = OFF;
  number[6][TOP]     = ON;
 
  number[7][MIDDLE]  = OFF;
  number[7][UPPER_L] = OFF;
  number[7][LOWER_L] = OFF;
  number[7][BOTTOM]  = OFF;
  number[7][LOWER_R] = ON;
  number[7][UPPER_R] = ON;
  number[7][TOP]     = ON;
 
  number[8][MIDDLE]  = ON;
  number[8][UPPER_L] = ON;
  number[8][LOWER_L] = ON;
  number[8][BOTTOM]  = ON;
  number[8][LOWER_R] = ON;
  number[8][UPPER_R] = ON;
  number[8][TOP]     = ON;
 
  number[9][MIDDLE]  = ON;
  number[9][UPPER_L] = ON;
  number[9][LOWER_L] = OFF;
  number[9][BOTTOM]  = ON;
  number[9][LOWER_R] = ON;
  number[9][UPPER_R] = ON;
  number[9][TOP]     = ON;
}

 

и радуемся полуючившемуся

 

Всем удачи. СПАСИБО ЗА ИДЕЮ САЙТУ  http://arduino-project.net/led-chasy-na-arduino/

Просмотров: 3537 | Добавил: Викторович | Рейтинг: 5.0/1
Всего комментариев: 1
1   [Материал]
После установки кода на ардуино вони не показують время что зделать подскажите

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright MyCorp © 2024