| Ваш IP: 18.212.92.235 | Online(12) - гости: 6, боты: 6 | Загрузка сервера: 1.3 ::::::::::::

Простой секундомер (модуль индикации 74НС595) (Arduino)

В предыдущей статье было рассмотрено использование модуля индикации 4-х разрядного 7-и сегментного на сдвиговых регистрах 74НС595. В этой статье будет простой пример реализации простого секундомера с использованием выше указанного модуля индикации.

Частотомер состроит из модуля индикации 74НС595, одной кнопки и платы Arduino Nano. Управление секундомером очень простое, при подачи питания на индикаторе отражается 00,00, при первом нажатии на кнопку запуска происходит отсчет времени с разрешением 0,01 с до 99,99 секунды, затем разрешение уменьшается до 0,1 сек. с 100,0 до 999,9 секунды, далее разрешение секундомера равно 1 секунде.  При втором нажатии на кнопку счет времени останавливается, третье нажатие обнуляет показание. Максимальное время измерения секундомера 9999 секунд.

#include <MsTimer2.h>
 
byte razr[5] = {0x08, 0x04, 0x02, 0x01, 0x00};// 0123         
byte digit[12] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xFF}; // 0123456789 
byte point = 0x80; //точка
float k=0.000;
int k1,t,n;
byte a[4];
unsigned long time,time1;
 
void setup(){
  MsTimer2::set(10, to_Timer);// задаем период 10...20 мс
  MsTimer2::start();// старт индикации
  pinMode(3, OUTPUT);  // RCLK
  pinMode(4, OUTPUT);  // SCLK
  pinMode(2, OUTPUT);  // DIO
  pinMode(10,INPUT); // кнопка старт / стоп
}
 
void to_Timer(){
  if(n==1){time++;}
}
 
void loop(){
  if(digitalRead(10)==HIGH&&n==0&&millis()-time1>200){n=1;time1=millis();}
  if(digitalRead(10)==HIGH&&n==1&&millis()-time1>200){n=2;time=time;time1=millis();}
  if(digitalRead(10)==HIGH&&n==2&&millis()-time1>200){time=0;n=0;time1=millis();}
 
  if(k<10){k1=round(k*100);t=1;}
  else if(k<100){k1=round(k*100);t=1;}
  else if(k<1000){k1=round(k*10);t=2;}
  else {k1=k;t=4;}
  a[0]=k1/1000;
  a[1]=k1/100%10;
  a[2]=k1/10%10;
  a[3]=k1%10%10;
  for(int i=0;i<5;i++){
  digitalWrite(3, LOW);
  if(i==t){shiftOut(2, 4, MSBFIRST, digit[a[i]] ^ point);}
  else{shiftOut(2, 4, MSBFIRST, digit[a[i]]);}
  shiftOut(2, 4, MSBFIRST, razr[i]);
  digitalWrite(3, HIGH);}
  k=(float)time/100;
  delay(5); // паузой от 1 до 10 мс можно регулировать яркость свечения индикатора 1 - макс. яркость, 10 - миним.
}

Если сравнивать скетч с кетчами на странице «Модуль индикации на 74НС595 (Arduino)» , то видно, что код индикатора выведен из функции to_Timer() и помещен в функцию loop() , это позволяет очень точно воспроизводить таймером интервал времени 10 мс, поэтому все временные задержки при нажатии кнопки используют функцию millis().

Скетчи на странице «Модуль индикации на 74НС595 (Arduino)» больше подойдут для применения совместно с различными датчиками которые имеют большое время опроса (датчики температуры, давления, влажности и др.), в этих скетчах код индикации помещен в функцию таймера и не зависит от времени исполнения кода помещенного в функцию loop().

Библиотека MsTimer2.h — MsTimer2.zip

Добавить комментарий

Случайные статьи

  • Преобразователи напряжения

    В связи с выключением электроэнергии возникла необходимость в других источниках питания. Я некоторое время работал с различными схемами преобразователей с 12 В АКБ в ~220 В, 50 Гц на различную мощность нагрузки, поэтому возникла возможность питать как лампы (свет в квартире), так и различную аппаратуру. Выключал автоматические пробки на счетчике, …Подробнее...
  • КЛАССИФИКАЦИЯ РАДИОИЗМЕРИТЕЛЬНЫХ ПРИБОРОВ СОГЛАСНО ГОСТ 15094-69

    КЛАССИФИКАЦИЯ РАДИОИЗМЕРИТЕЛЬНЫХ ПРИБОРОВ СОГЛАСНО ГОСТ 15094-69 Радиоэлектронные измерительные приборы (РИП) классифицируются по различным признакам (см. табл.) Классификация электронных радиоизмерительных приборов Признак классификации Разновидности измерительных приборов Выполняемые метрологические функции Эталоны, образцовые приборы, рабочие приборы Характер измерений, вид измеряемых величин, основные выполняемые функции, совокупность технических характеристик и очередность разработки Подгруппы, виды, типы …Подробнее...
  • Онлайн — калькулятор цветовой маркировки резисторов

    Онлайн — калькулятор цветовой маркировки резисторов

    Для резисторов с точностью 20 % используют маркировку с тремя полосками, для резисторов с точностью 10 % и 5 % маркировку с четырьмя полосками, для более точных резисторов с пятью или шестью полосками. Первые две полоски всегда означают первые два знака номинала. Если полосок 3 или 4, третья полоска означает …Подробнее...
  • Излучение и распространение радиоволн

    Излучение и распространение радиоволн

    Как известно, постоянный ток, проходящий по проводу создает вокруг него постоянное магнитное поле. Когда ток исчезает, то созданное им магнитное поле исчезая возвращает энергию в провод. При переменном токе вокруг провода создается переменное магнитное поле, напряженность которого меняется с частотой тока. Часть энергии магнитного поля возвращается в провод, другая часть …Подробнее...
  • Полицейская сирена на LM324

    Полицейская сирена на LM324

    Данная схема издает звук напоминающий полицейскую сирену. Схема основана на ОУ LM324 представляющий собой генератор ЗЧ. При нажатии на кнопку SA1 начнет быстро заряжаться С1, сирена начнет издавать звук. При размыкании контактов SA1  сирена будет работать до тех пор пока не разрядится через R2 конденсатор С1. Источник — http://www.eleccircuit.com/police-bicycle-siren-circuits/ скраб для …Подробнее...