Сам я в программировании специалистом совсем не являюсь, поэтому хочу спросить мнение у специалистов. Накропал для Ардуины вот такой код:
Спойлер
Код: Выделить всё
#include <lgt328p.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // Подключаем дисплей
volatile bool intFlag = false;
unsigned long delayFront; // Переменная для времени задержки включения выхода
void setup() {
interrupts();
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
lcd.clear(); // очистить дисплей
lcd.setCursor(0,0);
lcd.print("Setting A");
lcd.setCursor(0,1);
lcd.print("Delay mS");
lcd.setCursor(0,2);
lcd.print("Voltage V");
lcd.setCursor(0,3);
lcd.print("Carrent A");
delayFront == 0;
Serial.begin(9600);
pinMode(2,INPUT);
pinMode(3,OUTPUT);
pinMode(7,INPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
digitalWrite(3,LOW);
attachInterrupt(0, event, RISING);
}
void event() {intFlag = true;}
void loop() {
if(digitalRead(7)==HIGH)delayFront=1; if(digitalRead(8)==HIGH)delayFront=2; if(digitalRead(9)==HIGH)delayFront=5; if(digitalRead(10)==HIGH)delayFront=10;
Serial.println(delayFront);
lcd.setCursor (12, 1);
lcd.print(delayFront);
lcd.print(" ");
if (intFlag) {
intFlag = false; // сбрасываем флаг
ЗДЕСЬ ДОЛЖНА БЫТЬ ФУНКЦИЯ ЗАДЕРЖКИ НА [b]delayFront[/b] МИЛЛИСЕКУНД
digitalWrite(3,HIGH); // включение выхода
Serial.println("Interrupt!");
}
}
P.S. Задержка включения выхода нужна на десятки и даже сотни миллисекунд. Поэтому delayMicroseconds(time) получается что не подходит.


