Advertisement
Guest User

Untitled

a guest
Aug 29th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.42 KB | None | 0 0
  1. #include <math.h>
  2. void setup() {
  3. DDRD = 0xFF;
  4. PORTD = 0x00;
  5. #include <math.h>
  6. pinMode(10, OUTPUT);
  7. pinMode(2, OUTPUT);
  8. pinMode(4, OUTPUT);
  9. pinMode(5, OUTPUT);
  10. pinMode(3, OUTPUT);
  11. pinMode(11, OUTPUT);
  12. pinMode(12, OUTPUT);
  13. pinMode(13, OUTPUT);
  14. pinMode(A0, INPUT);
  15. pinMode(A1, INPUT);
  16. pinMode(A2, OUTPUT);
  17. pinMode(A3, OUTPUT);
  18. digitalWrite(4, LOW);
  19. digitalWrite(5, LOW);
  20. digitalWrite(3, LOW);
  21. }
  22.  
  23.  
  24. unsigned long cur_millis, lastTick, setTick = 0;
  25. int hours = 0;
  26. int mins = 39;
  27. int sec = 0;
  28. int time = 0;
  29. int hz = 0;
  30. int dgt[10]={0b00001100,0b00000000,0b00001000,0b00010100,0b00110000,0b00100100,0b00000100,0b00100000,0b00110100,0b00010000}; //задаем массив со значениями совкового дешифратора
  31.  
  32. int factor_digits(int num, int *digits, int limit) //Обработка чисел в массивы по цифрам
  33. {
  34.     int digits_count = 0;
  35.  
  36.     if (num == 0) {
  37.         digits[0] = 0;
  38.         return 1;
  39.     }
  40.  
  41.     while (num > 0 && limit) {
  42.         digits[digits_count++] = num % 10;
  43.         num /= 10;
  44.         limit--;
  45.    }
  46.    return num ? 0 : digits_count;
  47. }
  48.  
  49.  
  50.  
  51. void loop() {
  52.  tone(10, 25000);
  53.    cur_millis = millis(); //time
  54.  
  55.   if (cur_millis - lastTick >= 1000) {
  56.     lastTick = cur_millis;
  57.     sec++;
  58.  
  59.     if (sec >= 60) {
  60.       mins++;
  61.       sec = 0;
  62.     }
  63.  
  64.     if (mins >=60) {
  65.       hours++;
  66.       mins = 0;
  67.     }
  68.  
  69.     if (hours >=24) {
  70.       hours=0;
  71.       mins = 0;
  72.     }
  73.   }
  74.  
  75.  
  76. int temphours = hours*10; //костыль
  77. int tempmins = mins*10;
  78.  
  79. int factored_number1[10]={0,0,0,0,0,0,0,0,0,0};  
  80. int factored_number2[10]={0,0,0,0,0,0,0,0,0,0};
  81. int factored_number3[10]={0,0,0,0,0,0,0,0,0,0};
  82. int factored_number_len;
  83. int i;
  84.  // обрабатываем пин A0 часы
  85. if (digitalRead(A0) == HIGH) {  
  86.         if (hz > 800) {hours++; hz = 0; sec = 0;};
  87.         if (hours == 24) {hours = 0; hz = 0; sec = 0;};
  88.         factored_number_len = factor_digits(temphours, factored_number1, 10); // Раскладываем в массив часы
  89.         PORTD = dgt[factored_number1[2]];
  90.         digitalWrite(A2, HIGH); // включаем 4 сегмент
  91.         delayMicroseconds(1500);
  92.         digitalWrite(A2, LOW); //выключаем 4 сегмент
  93.         delayMicroseconds(100);
  94.         hz = hz+10;
  95.         PORTD = dgt[factored_number1[1]];
  96.         digitalWrite(13, HIGH); // включаем 3 сегмент
  97.         delayMicroseconds(1500);
  98.         digitalWrite(13, LOW); // выключаем 3 сегмент
  99.         hz = hz+10;
  100.   };
  101.        
  102. // обрабатываем  пин A1 - минуты
  103. if (digitalRead(A1) == HIGH) {  
  104.         if (hz > 800) {mins++; hz = 0; sec = 0;};
  105.         if (mins == 60) {mins = 0; hz = 0; sec = 0;};
  106.         factored_number_len = factor_digits(tempmins, factored_number2, 10);
  107.         PORTD = dgt[factored_number2[2]];
  108.         digitalWrite(12, HIGH); // включаем 2 сегмент
  109.         delayMicroseconds(1500);
  110.         digitalWrite(12, LOW); // выключаем 2 сегмент
  111.         delayMicroseconds(100);
  112.         hz = hz+20;
  113.         PORTD = dgt[factored_number2[1]];
  114.         digitalWrite(11, HIGH); // включаем 1 сегмент
  115.         delayMicroseconds(1500);
  116.         digitalWrite(11, LOW); // выключаем 1 сегмент
  117.         hz = hz+20;
  118.   };
  119.  
  120.  factored_number_len = factor_digits(temphours, factored_number1, 10); // Раскладываем в массив часы
  121. PORTD = dgt[factored_number1[2]];
  122.  digitalWrite(A2, HIGH); // включаем 4 сегмент
  123.  delayMicroseconds(1500);
  124.  digitalWrite(A2, LOW); //выключаем 4 сегмент
  125.  delayMicroseconds(100);
  126. PORTD = dgt[factored_number1[1]];
  127.  digitalWrite(13, HIGH); // включаем 3 сегмент
  128.  delayMicroseconds(1500);
  129.  digitalWrite(13, LOW); // выключаем 3 сегмент
  130.  delayMicroseconds(100);
  131. factored_number_len = factor_digits(tempmins, factored_number2, 10);
  132. PORTD = dgt[factored_number2[2]];
  133.  digitalWrite(12, HIGH); // включаем 2 сегмент
  134.  delayMicroseconds(1500);
  135.  digitalWrite(12, LOW); // выключаем 2 сегмент
  136.  delayMicroseconds(100);
  137. PORTD = dgt[factored_number2[1]];
  138.  digitalWrite(11, HIGH); // включаем 1 сегмент
  139.  delayMicroseconds(1500);
  140.  digitalWrite(11, LOW); // выключаем 1 сегмент
  141.  digitalWrite(A3, HIGH);
  142.  delayMicroseconds(1500);
  143.  digitalWrite(A3, LOW);
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement