#include <TimerOne.h>
#include <SevSeg.h>
byte SegmentPins[] = {2,3,4,5,6,7,8,9};
byte DigitPins[] = {10};
SevSeg sevseg;
unsigned long time;
const long interval = 1000;
int counter = 0;
#define button 11
void setup() {
sevseg.begin(COMMON_ANODE, 1, DigitPins, SegmentPins, false, 100, false, false);
sevseg.setBrightness(100);
pinMode(button, INPUT);
}
void loop() {
unsigned long nowtime = millis();
if (nowtime - time >= interval) {
time = nowtime;
counter ++;
sevseg.setNumber(counter);
sevseg.refreshDisplay();
delay (10);
if (counter >= 9) {
counter = 0;
}
int push = digitalRead(button);
if (push != LOW) {
counter = 0;
}
}
}
//Вопрос 1
//Аналоговый сигнал - непрерывный сигнал который обрабатывается аналого-цифровым преобразователем микроконтроллера. Это сигнал от 0 до 5 вольт
//Может поступать от датчиков, устройств. АЦП принимает на вход аналоговый и преобразует в цифровой(амплитуда это сигнала)
//Аналоговые сигналы считываются с помощью функции analogWrite. Работа АЦП: Сэмплирование(делается снимок сигнала с определенной частотой), Квантизация
//Сигнал преобразуется в специальный цифровой код. Кодирование(преобразуется в двоичный код и обрабатывается мк). В ардуино АЦП 10 битный т.е. может производить 1024 числа
//Время преобразования АЦП зависит от тактовой частоты микроконтроллера.
//Существует функция map которая позваляет масштабировать полученное значение: на вход пять аргументов: значение, которое нужно преобразовать, минимальное и максимальное
//значения исходного диапазона, а также минимальное и максимальное значения желаемого диапазона.
//Вопрос 2
//Порты ввода-вывода INPUT/OUTPUT используются для взаимодействия с внешними устройствами каждый порт обычно состоит из нескольких пинов, которые могут исполбзоваться для
//ввода-вывода или в качестве общего двунаправленного интерфейса. Каждый порт имеет 3 основных регистра. DDR: Data Direction Register(используется для определения направления порта если
// бит 1 то это выход, если 0 как вход). Port-register: управляет логическим состоянием выходных пинов. если 1 то высокий уровень, если 0 низкий. Input Pin Register - чтение состояния
//входных пинов - если бит 1 значит находится в высоком уровне, если 0 - в низком. Работа с регистрами на низком уровне позволяет более эффективно управлять состоянием портов. Например, при
//использовании битовых операций, можно изменять состояние отдельных пинов без необходимости переписывать весь регистр.
//В Arduino, например, каждый порт имеет связанный с ним регистр, и с помощью функций можно управлять его состоянием.
//'Пример' DDRB |= (1 << DDB0); // Установить бит 0 порта B на 1 (выход)