Помогите разобраться с кодом
- Войдите на сайт для отправки комментариев
Чт, 05/12/2013 - 15:37
Здравствуйте. Имеется код в котором при нажатии на кнопку на СОМ порт ПК передается значение "H" а при повторном нажатии - "L", интересует как можно сделать еще одно событие а именно: при нажатии на кнопку на порт передается значение "H", при нажатии еже раз - "Р", а при удержании клавиши одну секунду на СОМ порт должен передаваться значение "L". Выкладываю имеющийся код, подскажите пожалуйста. Если что то будет не ясно я объясню
int switchPin = 12; int ledPin = 13; boolean lastBut = LOW; boolean curBut = LOW; boolean ledOn = false; int val=0; void setup() { pinMode (switchPin, INPUT); pinMode (ledPin, OUTPUT); Serial.begin(9600); } boolean debounce(boolean last) { boolean cur=digitalRead(switchPin); if (last!=cur) { delay(5); cur = digitalRead(switchPin); } return cur; } void loop() { curBut=debounce (lastBut); if (lastBut == LOW && curBut == HIGH) { ledOn =!ledOn; } lastBut = curBut; digitalWrite(ledPin,ledOn); if (ledOn == HIGH) { Serial.println("H"); } else { Serial.println("L"); } delay(100); }
Не раскрыт вопрос - как программа должна реагировать на нажатие, следующее за односекундным (L). Т.е. должна ли она после "L" начинать сначала, т.е. с "H" или продолжать попеременно переключаться между "H" и "P". Другими словами:
H-P-H-L-P... или
H-P-H-L-H...
Думаю нужно ввести как минимум еще одну проверку нажатия кнопки, а для отсчета времени использовать millis()
при нажатии на кнопку - Н-Н-Н...
при повторном нажатии - Р-Р-Р...
а при нажатии с задержкой в 1 секунду - L-L-L... и так будет пока кнопка не нажмётся еще раз, потом снова Н-Н-Н...
То есть когда нажать кнопку то Н-Н-Н если еще раз нажать кнопку то Р-Р-Р если повторно нажать кнопку то опять Н-Н-Н но у когда нажать удерживая секунду то L-L-L
надеюсь я объяснил...
С какого это перепугу у вас вдруг пошли по три одинаковых состояния подряд ("при нажатии на кнопку - Н-Н-Н... при повторном нажатии - Р-Р-Р...")?
Вот скелет для вашего случая:
мясо навесите сами
если чесно какраз мася не могу навесить, не понимаю что нужно делать...
если чесно какраз мася не могу навесить, не понимаю что нужно делать...
Суть вашего кода я понял но не могу переписать под свой... не силен в программировании...
Суть вашего кода я понял но не могу переписать под свой... не силен в программировании...
Помогите пожалуйста разобраться...