Меню
закрыть

Просмотр документа 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 сек.
Комментарии
Комментариев еще нет.
Дополнительная информация о файле.
закрыть
Получить QR-код
закрыть