Загрузка данных


int digit[4]={28,27,22,14}; // массив значений для PORTB, для переключения 4-х разрядов и включения точки int number[10]={126,12,182,158,204,218,250,14,254,222}; // массив значений цифр для PORTD // подсказка 0 1 2 3 4 5 6 7 8 9 int d; // переменная для переключения разряда () int n=0; // переменная для выбора цифры в массиве (от 0 до 9), изначально = 0 int t0; // переменная для "обнуления" текущего времени int t; // переменная для хранения времени прошедшего с момента нажатия кнопки int dig1; // цифра для 1 разряда int dig2; // цифра для 2 разряда int dig3; // цифра для 3 разряда int dig4; // цифра для 4 разряда bool start=false; // логический триггер для старта/остановки секундомера void setup(){ DDRD=254; // все пины с 1 по 8 - на выход DDRB=31; // пины с 9 по 12 - на выход, 13 - на вход PORTB=30; // выключаем все разряды (пины 9-12), } void loop(){ if (digitalRead(13)==1){ // если кнопка нажата, то... start=!start; // переключаем логический триггер в противоположное положение t0=millis(); // создаём нулевую точку времени delay(200); // пауза для предотвращения двойного срабатывания кнопки } if (start==true){ // если логический триггер в положении true, то... t=(millis()-t0)/10; // считаем время с точностью до 1/100 секунды и... out(t); // вызываем функция для вывода значения времени } else { // если логический триггер в положении false, то... out(t); // вызываем функция для вывода значения времени } } void out(int value){ // функция для вывода значений на индикатор dig1=value/1000; // получаем цифру для 1 разряда dig2=(value%1000)/100; // получаем цифру для 2 разряда dig3=((value%1000)%100)/10; // получаем цифру для 3 разряда dig4=value%10; // получаем цифру для 4 разряда for (d=0; d<=3; d++){ // начинаем вывод на индикатор, переключаем значение разряда в массиве PORTB=digit[d]; // включаем последовательно 1,2,3,4 разряды switch (d) { case 0: PORTD=number[dig1]; break; // получаем цифру для 1 разрядаcase 1: PORTD=number[dig2]; break; // получаем цифру для 2 разрядаcase 2: PORTD=number[dig3]; break; // получаем цифру для 3 разрядаcase 3: PORTD=number[dig4]; break; // получаем цифру для 4 разряда} delay(5); // делаем задержку в 5 мс } }