Мне нужно подключить выключатель(не путать с тактовой кнопкой) к Ардуино уно. При включении этого выключателя должна вызываться функция. Функция вызывается до тех пор, пока не вернуть выключатель в первоначальное положение. Как осуществить?
Также как и с тактовой кнопкой, если выключатель с возвратом. А Если с фиксацией положения, то немного будет отличаться. Какой у вас выключатель? И нарисуйте схему. НУ и код не помешал бы хоть какой то.
const int buttonPin = 2; const int ledPin = 13; int buttonState = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT);} void blink() { digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); delay(200); } void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { blink(); } } И да, выключатель с фиксацией положения
Конструкция if - else решит эту задачу. А то и просто if, если в другом случае ничего делать не надо. В этом же случае можно так: Код (C++): while (!digitalRead (PIN)); // пока выкл крутимся тут // тут сама функция
Неоднозначно. Надо жестко сидеть внутри этой функции, пока активен выключатель, или надо при активном выключателе тупо вызывать функцию, параллельно делая что-то еще?
проблема в том, что при таком использовании функция вызывается лишь один раз и то после того как выключатель возвращается в исходное положение.
Если после возвращение а исходное, то надо ждать нуля, то есть if(!buttonState), и вооще вот так: Код (C++): while (digitalRead(PIN)): // ждем вкл while(!digitalRead(PIN)) { // ждем выкл // тут функция } Если не будет работать, то вцкл знак переставить в первое условие, а во втором убрать. Не знаю как у вас притянут переключатель.