привет всем В общем в общем у меня есть две колбы, на них 2 клапана. На клапаны код работает, т.е даешь питание на плату и все начинает работать как надо.Но понадобилось этим управлять, включать/выключать/ставить на таймер по работе/сбрасывать таймер. Но пока приступил к кнопке старта, но появилась проблема Кнопка работает, печатает на монитор, но клапаны не запускаются в нужном режиме, как прописано в коде. Включается все так...тыкаешь 1 раз на клавишу, вырубается 1 клапан, тыкаешь еще несколько раз врубается 1 вырубается 2. Т.е даже не запускается работа клапанов в автоматическом режиме. Уже разные варианты пробовал...скину тот который кажется должен работать, но не работает. Используется обычная мембранная клавиатура 4х4.
Я в этом деле новичек(в ардуино), подскажите, как запустить кнопкой это все, тыкните носом в чем может быть проблема, что добавить, что убавить
Через bool пробовал сохранять флаг при нажатии, тоже не получилось.
Заранее всем спасибо за ответы, какой бы он не был
Я в этом деле новичек(в ардуино), подскажите, как запустить кнопкой это все, тыкните носом в чем может быть проблема, что добавить, что убавить
kolby:
#include "Keypad.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // (RS, E, DB4, DB5, DB6, DB7)
//колбы и таймер
#define flask1 22 //задаем выход на плате
#define flask2 23
unsigned long timeArray[] = {2000, 5000, 7000, 10000}; //обьявляем массив (значение времени срабатывания)
unsigned long int timer = 0; //обьявляем переменную таймер и то что она равно 0
unsigned long int time1; //обьявляем переменную для миллис()
//клавиатура
const byte ROWS = 4; // количество рядов
const byte COLS = 4; // количество столбцов
char keys[ROWS][COLS] = { // определяем массив символов соответствующий распределению кнопок на клавиатуре:
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'#', '0', '*', 'D'}
};
byte rowPins[ROWS] = {47, 46, 45, 44};
byte colPins[COLS] = {43, 42, 41, 40};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
//клавиатура
void setup()
{
Serial.begin(9600);
//колбы
pinMode(flask1, OUTPUT); //указываем что Pin 22 это выход
pinMode(flask2, OUTPUT); //указываем что Pin 23 это выход
digitalWrite(flask1, LOW);
digitalWrite(flask2, LOW);
//монитор
lcd.begin(16, 2); //иницилизируем(16 столбов, 2 строчки)
lcd.setCursor(0, 0);
lcd.print("start:"); // Набор текста на первой строке
lcd.setCursor(0, 1); // Установка курсора в начало первой строки
lcd.print("time:"); // Набор текста на первой строке
//монитор
}
void loop()
{
char key = keypad.getKey();//указываем что key хранит нажатие
if (key == 'A') //нажата кнопка А
{
lcd.setCursor(0, 0);
lcd.print("start:ON ");
time1 = millis();
if (time1 - timer >= timeArray[0]) // если больше или равно 2000 милисекунд
{
digitalWrite(flask2, HIGH); //отключает колбу 2 через 2 с. работы
}
if (time1 - timer >= timeArray[1]) // если больше или равно 5000 милисекунд
{
digitalWrite(flask2, LOW); //включаем колбу2 на 5с работы
}
if (time1 - timer >= timeArray[2]) // если больше или равно 7000 милисекунд
{
digitalWrite(flask1, HIGH); //отключаем колбу1 на 7с работы
}
if (time1 - timer >= timeArray[3]) //включаем колбу1 на 10с работы(т.е через 3 секунды)
{
digitalWrite(flask1, LOW);
timer = millis();
}
}
}
Заранее всем спасибо за ответы, какой бы он не был