Просмотр документа Centry.txt
/// А1 тиристтор /// А2 реле двиг /// 3 кнопка на D3 // пример работы в режиме интервалов #include "GyverTimer.h" // подключаем библиотеку GTimer myTimer(MS); // создать миллисекундный таймер (ms) (по умолч. в режиме интервала) //GTimer myTimer(MS, 1000); // можно сразу указать период (по умолч. в режиме интервала) //GTimer myTimer(US, 5000); // или микросекундный (us), на 5000 мкс (по умолч. в режиме интервала) // без указания периода таймер автоматически не запустится! unsigned int counter = 0; // переменная-счётчик до 30 000 uint8_t count_1s = 0, count_ob = 0; uint8_t count_0_2s ++; // Счет до 1/5 c для плавности пуска uint8_t set_obrt = 0; // текущее задание оборотов //Конечные уст обороты uint8_t fin_set_obrt = 20; //= 1000 об/с / 50Гц = 20 // для кнопки bool flag = false; uint32_t btnTimer = 0; //// void setup() { pinMode(A1, OUTPUT); // на выход pinMode(A2, OUTPUT); // на выход pinMode(3, INPUT_PULLUP); //нажатие кнопки // подключили кнопку на D3 и GND digitalWrite(A1, LOW); //Откл тирис digitalWrite(A2, LOW); //Откл реле Serial.begin(9600); myTimer.setInterval(20); //50Гц // запуск в режиме интервала 500 мс myTimer.stop(); // "остановить" таймер // подключили датчик оборотов на D2 и GND pinMode(2, INPUT_PULLUP); //INT 0 - D2; INT 1 - D3; attachInterrupt(0, Oborotov, FALLING); //Прерывание по пину // myTimer.start(); // запустить (перезапустить) таймер // myTimer.reset(); // сбросить период // myTimer.resume(); // продолжить работу после stop } void Oborotov() { count_ob ++; // + оборотов } void Start_drive() { myTimer.start(); // запустить (перезапустить) таймер digitalWrite(A2, HIGH); // Вкл реле двиг //count_ob ++; // + оборотов } void Stop_drive() { myTimer.stop(); // "остановить" таймер digitalWrite(A1, LOW); //Откл тирис digitalWrite(A2, LOW); //Откл реле на двиг //count_ob ++; // + оборотов } void Slow_sart() { } void loop() { // когда 20 мс прошло if (myTimer.isReady()) { // Счет до 10 мин counter ++; if (counter>30000) { counter = 0; Stop_drive(); //// } //else {} // -Счет до 10 мин- //корректируем вращ if (count_ob > set_obrt) { digitalWrite(A1, LOW); //Откл тирис //PinM = 0; } else { //PinM = 1; digitalWrite(A1, HIGH); //Вкл тирис } //-корректируем вращ- // Счет до 1c count_1s ++; // Счет до 1c if (count_1s>50) { count_1s = 0; Serial.println(count_ob); // 1 раз в секунду вывести } // -Счет до 1c - //Плавный разгон count_0_2s ++; // Счет до 1/5 c if (count_0_2s > 10) { count_0_2s = 0; // Значит 1/5 сек if (set_obrt < fin_set_obrt) //если меньше уставки {set_obrt++; } //добавляем оборотов } //-Плавный разгон- } // -когда 20 мс прошло- //обработка нажатия кнопки // читаем инвертированное значение для удобства // D3 bool btnState = !digitalRead(3); if (btnState && !flag && millis() - btnTimer > 100) { flag = true; btnTimer = millis(); Serial.println("press"); } if (!btnState && flag && millis() - btnTimer > 100) { flag = false; btnTimer = millis(); //Serial.println("release"); Start_drive(); // Запуск счета и пуск } //-обработка нажатия кнопки- }
Сводка по файлу
Добавил:
Незарегистрирован
Дата добавления:
27.03.2024
Колекция:
Без колекции
Название файла:
Centry.txt
Размер файла:
0.00 MB
Категория:
Просмотрели:
137 и Вы
Скачали:
2
Тех. информация:
Cкачать оригинал через: 0 сек.
Комментариев еще нет.