и желание у меня получилось с первого раза при минимальных знаниях ардуино.
итак начнем,для начала подключаем кнопки к плате ардуино.
выглядит так как на рисунке с права
пины на плате а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;
}
}