Приветствую всех, я новичок на этом сайте а также и в работе с ардуино, поэтому даже в простейшем коде у меня есть... неполадки. Проблема в данном скетче в том, что else не видит if почему то. А вот почему, ума не приложу. Помогите пожалуйста. int switchPin = 8; int ledPin = 13; boolean lastButton = LOW; boolean ledOn = false; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(switchPin) == HIGH && lastButton == LOW); { ledOn = !ledOn; lastButton = HIGH; } { digitalWrite(ledPin, HIGH); } else { { lastButton = digitalRead(switchPin); } digitalWrite(ledPin, ledOn); } Возможно много скобок... Но без них не хочет работать.
О боже... Каким то образом проблема решилась простой перезагрузкой прораммы. Извиняюсь за трату вашего времени.
Alfamaxis,никакой мистики, блок if-then-else записывается так Код (C++): if ( выражение ) оператор_1; else оператор_2; Ваш код компилятор читал так Код (C++): if ( выражение ); оператор_1; оператор_2; else оператор_3; 1. после if точка с запятой не нужна 2. лишние фигурные скобки 3. отсутствие закрывающей скобки в главном цикле
Правильное оформление кода экономит массу времени и нервов и помогает находить вот такие ошибки. Этому посвящены целые книги. Не пренебрегайте этим!
Спасибо за совет, буду старатся! А можно ещё вопросик пожалуйста? Я ещё баловался с шаговиком но никак до меня не доходила идея о том как же все таки сделать так что бы с нажатием кнопки он менял своё направление. Пока что получаеться только полный поворот, и поле этого уже поворот в другую сторону. Да и то в 75% случаев. #include <StepperAK.h> #define gearratio 64 //1:64 const int stepsPerRevolution = 2048; boolean lastButton = LOW; boolean currentButton = LOW; int switchPin = 4; Stepper myStepper(stepsPerRevolution, 8,9,10,11); void setup() { / myStepper.setSpeed(0.15*gearratio); Serial.begin(9600); boolean debounce (boolean last) {boolean current = digitalRead(switchPin); if (last != current) { delay(5); current = digitalRead(switchPin); } return current; } void loop() { if digitalRead(current == HIGH) { Serial.println("clockwise"); myStepper.step(stepsPerRevolution); delay(500); } else Serial.println("counterclockwise"); myStepper.step(-stepsPerRevolution); delay(500); }