Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const byte digit_pins[2] = {5,6}; // пины для переключения индикатора
- const byte indication_pins[7] = { 100, 101, 102, 103, 104, 105, 106, 107 }; // пины куда прицеплены индикаторы
- unsigned long tm, next_flick, secs;
- const unsigned int to_flick = 1; // как часто переключать индикацию
- const unsigned int change_every_sec = 1; // как часто увеличивать счетчик
- byte digit = 0;
- unsigned int counter = 1; // старт счетчика
- const unsigned int max_counter = 100; // максимальное значение счетчика
- // какие пины надо выставлять в высокий уровень
- // чтобы получилась нужная цифра
- const byte digits[10] = {
- B11101110,
- B10000010,
- B11011100,
- B11010110,
- B10110010,
- B01110110,
- B01111110,
- B11000010,
- B11111110,
- B11110110
- };
- // выставляем цифру на индикаторе
- void fill( byte d ){
- for(char i=0; i<8; i++){
- digitalWrite(indication_pins[i], digits[d] & (1<<i));
- }
- }
- // выставляем число на индикаторах
- void setDigit( byte digit, unsigned int counter ){
- byte d = 0;
- switch ( digit ){
- case 0:
- digitalWrite(digit_pins[1], LOW);
- d = counter % 10;
- fill(d);
- digitalWrite(digit_pins[0], HIGH);
- break;
- case 1:
- digitalWrite(digit_pins[0], LOW);
- d = (counter % 100) / 10;
- fill(d);
- digitalWrite(digit_pins[1], HIGH);
- break;
- // эта часть не нужна, если у тебя 2 индикатора
- //case 2:
- // digitalWrite(digit_pins[1], LOW);
- // d = ( counter % 1000 ) / 100;
- // fill(d);
- // digitalWrite(digit_pins[2], HIGH);
- // break;
- }
- }
- void setup() {
- for(int i=0; i<2; i++)
- {
- pinMode(digit_pins[i], OUTPUT);
- }
- for (int i = 0; i < 8; i++)
- {
- pinMode(indication_pins[i], OUTPUT);
- }
- pinMode(13, OUTPUT);
- }
- void loop() {
- tm = millis();
- if (tm > secs)
- {
- secs = tm + change_every_sec;
- counter++;
- if (counter >= max_counter)
- counter = 1;
- }
- if( tm > next_flick ){
- next_flick = tm + to_flick;
- digit++;
- if( digit == 2 )
- digit = 0;
- setDigit( digit, counter );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement