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

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

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

Сообщение GhostX » 29 янв 2016, 01:05

Слушай, а как в симуляторе время симулирования ускорить?
А то там 1 секунда идет, ждать устанешь...

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

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

Сообщение ilay » 29 янв 2016, 01:06

GhostX писал(а):Слушай, а как в симуляторе время симулирования ускорить?
А то там 1 секунда идет, ждать устанешь...
Никак...это сервер так работает. Поставь не 5 сек. а 3 или 2.

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

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

Сообщение GhostX » 29 янв 2016, 02:39

Сервер этот меня психом чуть не сделал, своей обалденной скоростью.
Короче пришлось собирать дуньку с кнопками. И в 5 сек все нашлось. Там проблема была в ИЛИ.
Кнопка там одна нажата, другая нет, в итоге какая первая в условии стояла, та и работала, другая мозги пудрила. меняешь местами кнопки в условии ИЛИ и они менялись.
Вот код, вроде как рабочий.

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

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

void setup()
{
 pinMode(ledPin, OUTPUT);
 pinMode(pinButton, INPUT);
 pinMode(pinButton2, INPUT);
}
 
void loop()
{
	digitalWrite(ledPin,ledState); // включаем или гасим диод в зависимости от переменной ledState
	
	if (millis()- previousMillis >= OnTime){ // таймер пяти секунд
		ledState = LOW; //потушить по истечении времени
	}

    if ((digitalRead(pinButton2) == LOW) && (keyLOW == false)) keyLOW = true;// триггер на отжатие кнопки, пока не отожмешь не пустит в если где проверяет нажатие.
	if ((digitalRead(pinButton2) == HIGH) && (keyLOW == true)){ // если нажата кнопка и ключ true то
		previousMillis = millis(); // запоминаем время когда она нажалать
		ledState = HIGH; // взводим ключ на включение.
		keyLOW = false;
    }
	if ((digitalRead(pinButton) == LOW) && (key == false)) key = true;
	if ((digitalRead(pinButton) == HIGH) && (key == true)){ // если нажата кнопка и ключ true то
		previousMillis = millis(); // запоминаем время когда она нажалать
		ledState = HIGH; // взводим ключ на включение.
		key = false;
    }
}

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

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

Сообщение ilay » 29 янв 2016, 07:45

GhostX писал(а):Сервер этот меня психом чуть не сделал, своей обалденной скоростью.
Короче пришлось собирать дуньку с кнопками. И в 5 сек все нашлось. Там проблема была в ИЛИ.
Кнопка там одна нажата, другая нет, в итоге какая первая в условии стояла, та и работала, другая мозги пудрила. меняешь местами кнопки в условии ИЛИ и они менялись.
Вот код, вроде как рабочий.
Ура! Все работает! Я вчера тоже операнд "и" ставил, но у меня не работало...горели пока не отпустишь.
Спасибо! Огромное! 2 недели мучался.

Этот скетч как пример. На самом деле мне нужно управлять внешним реле, который управляет втягивающей катушкой. Напрямую не сделать...там 220в везде. Но кнопку нажимает человек. Работа реле по времени примерно 200-300мс, как быстро человек отпустит кнопку, или насколько долго будет ее держать, предугадать сложно. Вот для этого и нужен был этот скетч.

Респект Вам! Я бы за месяц не разгреб.
Урок бы сделать на основе этого скетча. Нету ведь нигде. А нубяты вроде меня мучаются.

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

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

Сообщение gurvinok » 29 янв 2016, 10:35

Ну для таких целей 555 таймер за глаза бы был, а это уже стрельба из пушки по воробьям. :lol:
Если долго мучиться, может быть получится.

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

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

Сообщение ilay » 29 янв 2016, 11:12

gurvinok писал(а):Ну для таких целей 555 таймер за глаза бы был, а это уже стрельба из пушки по воробьям. :lol:
Таймер не подходит. Я уже пробовал. Т.к. режим работы реле не постоянный. Изменяться будет дип переключателем. Этот скетч только 10% от всего кода...там еще много чего будет прикручиваться.

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

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

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

ilay писал(а):Урок бы сделать на основе этого скетча. Нету ведь нигде. А нубяты вроде меня мучаются.
Это благородные мучения, так могзи развиваются больше. :)

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

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

Сообщение gurvinok » 29 янв 2016, 12:38

Когда я изучал язык С, по книге препода информатики Питерского ВУЗа, так вот он писал что нужно пытаться найти решения своих задач самому, а если переписывать постоянно примеры, то никогда не научитесь программировать. Это связано с тем, что переписывание примеров не развивает мышление.
Если долго мучиться, может быть получится.

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

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

Сообщение ilay » 30 янв 2016, 15:57

Хм...а зачем тогда учителя нужны? Давай всем мануалы раздадим и учителей всех уволим....(сори за флуд).

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

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

Сообщение ilay » 30 янв 2016, 17:01

GhostX писал(а):Сервер этот меня психом чуть не сделал, своей обалденной скоростью.
Вот прога для локальной эмуляции. _fritzing В поиске забей.... халявная....не стал прямую ссыль выкладывать.

Ответить