И опять сложные кнопки

Здесь обсуждаем Arduino
Аватара пользователя
gurvinok
Сообщения: 1491
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: И опять сложные кнопки

Сообщение gurvinok » 29 янв 2016, 00:22

Мой вариант.

Код: Выделить всё

int ledPin = 13; // пин со светодиодом
long OnTime = 5000; // время свечения светодиода, мс
bool ledState = false;
int pinButton = 7; // пин, к которому подключена кнопка
int pinButton2 = 8; // пин, к которому подключена кнопка2
bool button_flag = true; // Флаг нажатой кнопки
unsigned long previousMillis = OnTime; //это, чтоб работало сразу, а не по прошествии 5 сек после старта.
 
void setup()
{
 pinMode(ledPin, OUTPUT);
 pinMode(pinButton, INPUT);
 pinMode(pinButton2, INPUT);
}
 
void loop()
{
    // если кнопка нажата и сброшен флаг - включаем светодиод
    if (digitalRead(pinButton2) & !button_flag)
    {
        digitalWrite(ledPin,HIGH);
    }
    
      if ((millis()- previousMillis >= OnTime) & !button_flag) // таймер пяти секунд
      {
         previousMillis = millis();
         digitalWrite(ledPin,LOW);
         button_flag = true;
      }

    // Если кнопка отпущена сбросить флаг
    if (!digitalRead(pinButton2)) button_flag = false;  // Сбрасываем флаг
}
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: И опять сложные кнопки

Сообщение GhostX » 29 янв 2016, 00:28

ай ай ай, это я накосячил

Код: Выделить всё

int ledPin = 13; // пин со светодиодом
long OnTime = 5000; // время свечения светодиода, мс
int ledState = LOW;
int pinButton = 7; // пин, к которому подключена кнопка
int pinButton2 = 8; // пин, к которому подключена кнопка2
unsigned long previousMillis = 0;
bool key = true;
bool keyLOW = true;

void setup()
{
 pinMode(ledPin, OUTPUT);
}
 
void loop()
{
	digitalWrite(ledPin,ledState); // включаем или гасим диод в зависимости от переменной ledState
	
	// тут работает тригер в виде ключа кнопку нажал, ключ сбросил и запустил таймер. Таймер вышел, выключил диод и взвел ключ.
	//пока ключ не взведен условие включения диода не сработает.
	if (millis()- previousMillis >= OnTime){ // таймер пяти секунд
		ledState = LOW; //потушить по истечении времени
		key = true; //ключ сброс на true
	}
    if ((digitalRead(pinButton2) || digitalRead(pinButton) == LOW) && keyLOW == false) keyLOW = true;
	if ((digitalRead(pinButton2) || digitalRead(pinButton) == HIGH) && key == true && keyLOW == true){ // если нажата первая или вторая кнопка и ключ true то
		previousMillis = millis(); // запоминаем время когда она нажалать
		ledState = HIGH; // взводим ключ на включение.
		key = false;
		keyLOW = false;
    }
}
строчку скопировал, а ключ не исправил
строка 25

ilay
Сообщения: 31
Зарегистрирован: 28 янв 2016, 21:15

Re: И опять сложные кнопки

Сообщение ilay » 29 янв 2016, 00:33

Работает! Одна кнопка.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: И опять сложные кнопки

Сообщение GhostX » 29 янв 2016, 00:35

gurvinok код написал, который с одной кнопкой?

ilay
Сообщения: 31
Зарегистрирован: 28 янв 2016, 21:15

Re: И опять сложные кнопки

Сообщение ilay » 29 янв 2016, 00:35

GhostX писал(а):gurvinok код написал, который с одной кнопкой?
Да

ilay
Сообщения: 31
Зарегистрирован: 28 янв 2016, 21:15

Re: И опять сложные кнопки

Сообщение ilay » 29 янв 2016, 00:37

GhostX писал(а):ай ай ай, это я накосячил строчку скопировал, а ключ не исправил
строка 25
Теперь вторая кнопка горит пока не отпустишь. Первая нормально.

Аватара пользователя
gurvinok
Сообщения: 1491
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: И опять сложные кнопки

Сообщение gurvinok » 29 янв 2016, 00:37

Ну блин вторую по аналогии добавить. :roll:
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: И опять сложные кнопки

Сообщение GhostX » 29 янв 2016, 00:41

у gurvinok'а по тексту только одна кнопка подключена.
ща попробую на сайт с эмулятором заглянуть.
а то как то не понятно как вторая кнопка может гореть, а первая нормально. Там условие ИЛИ стоит...

ilay
Сообщения: 31
Зарегистрирован: 28 янв 2016, 21:15

Re: И опять сложные кнопки

Сообщение ilay » 29 янв 2016, 00:41

gurvinok писал(а):Ну блин вторую по аналогии добавить. :roll:
Вот ща добавил по аналогии...тоже просто горит не гаснет.

Аватара пользователя
gurvinok
Сообщения: 1491
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: И опять сложные кнопки

Сообщение gurvinok » 29 янв 2016, 00:50

Шайтан.
Если долго мучиться, может быть получится.

Ответить