Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- void setup() {
- DDRD = 0xFF;
- PORTD = 0x00;
- #include <math.h>
- pinMode(10, OUTPUT);
- pinMode(2, OUTPUT);
- pinMode(4, OUTPUT);
- pinMode(5, OUTPUT);
- pinMode(3, OUTPUT);
- pinMode(11, OUTPUT);
- pinMode(12, OUTPUT);
- pinMode(13, OUTPUT);
- pinMode(A0, INPUT);
- pinMode(A1, INPUT);
- pinMode(A2, OUTPUT);
- pinMode(A3, OUTPUT);
- digitalWrite(4, LOW);
- digitalWrite(5, LOW);
- digitalWrite(3, LOW);
- }
- unsigned long cur_millis, lastTick, setTick = 0;
- int hours = 0;
- int mins = 39;
- int sec = 0;
- int time = 0;
- int hz = 0;
- int dgt[10]={0b00001100,0b00000000,0b00001000,0b00010100,0b00110000,0b00100100,0b00000100,0b00100000,0b00110100,0b00010000}; //задаем массив со значениями совкового дешифратора
- int factor_digits(int num, int *digits, int limit) //Обработка чисел в массивы по цифрам
- {
- int digits_count = 0;
- if (num == 0) {
- digits[0] = 0;
- return 1;
- }
- while (num > 0 && limit) {
- digits[digits_count++] = num % 10;
- num /= 10;
- limit--;
- }
- return num ? 0 : digits_count;
- }
- void loop() {
- tone(10, 25000);
- cur_millis = millis(); //time
- if (cur_millis - lastTick >= 1000) {
- lastTick = cur_millis;
- sec++;
- if (sec >= 60) {
- mins++;
- sec = 0;
- }
- if (mins >=60) {
- hours++;
- mins = 0;
- }
- if (hours >=24) {
- hours=0;
- mins = 0;
- }
- }
- int temphours = hours*10; //костыль
- int tempmins = mins*10;
- int factored_number1[10]={0,0,0,0,0,0,0,0,0,0};
- int factored_number2[10]={0,0,0,0,0,0,0,0,0,0};
- int factored_number3[10]={0,0,0,0,0,0,0,0,0,0};
- int factored_number_len;
- int i;
- // обрабатываем пин A0 часы
- if (digitalRead(A0) == HIGH) {
- if (hz > 800) {hours++; hz = 0; sec = 0;};
- if (hours == 24) {hours = 0; hz = 0; sec = 0;};
- factored_number_len = factor_digits(temphours, factored_number1, 10); // Раскладываем в массив часы
- PORTD = dgt[factored_number1[2]];
- digitalWrite(A2, HIGH); // включаем 4 сегмент
- delayMicroseconds(1500);
- digitalWrite(A2, LOW); //выключаем 4 сегмент
- delayMicroseconds(100);
- hz = hz+10;
- PORTD = dgt[factored_number1[1]];
- digitalWrite(13, HIGH); // включаем 3 сегмент
- delayMicroseconds(1500);
- digitalWrite(13, LOW); // выключаем 3 сегмент
- hz = hz+10;
- };
- // обрабатываем пин A1 - минуты
- if (digitalRead(A1) == HIGH) {
- if (hz > 800) {mins++; hz = 0; sec = 0;};
- if (mins == 60) {mins = 0; hz = 0; sec = 0;};
- factored_number_len = factor_digits(tempmins, factored_number2, 10);
- PORTD = dgt[factored_number2[2]];
- digitalWrite(12, HIGH); // включаем 2 сегмент
- delayMicroseconds(1500);
- digitalWrite(12, LOW); // выключаем 2 сегмент
- delayMicroseconds(100);
- hz = hz+20;
- PORTD = dgt[factored_number2[1]];
- digitalWrite(11, HIGH); // включаем 1 сегмент
- delayMicroseconds(1500);
- digitalWrite(11, LOW); // выключаем 1 сегмент
- hz = hz+20;
- };
- factored_number_len = factor_digits(temphours, factored_number1, 10); // Раскладываем в массив часы
- PORTD = dgt[factored_number1[2]];
- digitalWrite(A2, HIGH); // включаем 4 сегмент
- delayMicroseconds(1500);
- digitalWrite(A2, LOW); //выключаем 4 сегмент
- delayMicroseconds(100);
- PORTD = dgt[factored_number1[1]];
- digitalWrite(13, HIGH); // включаем 3 сегмент
- delayMicroseconds(1500);
- digitalWrite(13, LOW); // выключаем 3 сегмент
- delayMicroseconds(100);
- factored_number_len = factor_digits(tempmins, factored_number2, 10);
- PORTD = dgt[factored_number2[2]];
- digitalWrite(12, HIGH); // включаем 2 сегмент
- delayMicroseconds(1500);
- digitalWrite(12, LOW); // выключаем 2 сегмент
- delayMicroseconds(100);
- PORTD = dgt[factored_number2[1]];
- digitalWrite(11, HIGH); // включаем 1 сегмент
- delayMicroseconds(1500);
- digitalWrite(11, LOW); // выключаем 1 сегмент
- digitalWrite(A3, HIGH);
- delayMicroseconds(1500);
- digitalWrite(A3, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement