Здравствуйте, помогите пожалуйста новичку...

Тема в разделе "Arduino & Shields", создана пользователем Alfamaxis, 11 июн 2016.

  1. Alfamaxis

    Alfamaxis Нуб

    Приветствую всех, я новичок на этом сайте а также и в работе с ардуино, поэтому даже в простейшем коде у меня есть... неполадки. Проблема в данном скетче в том, что 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);
    }
    Возможно много скобок... Но без них не хочет работать.
     
  2. Alfamaxis

    Alfamaxis Нуб

    О боже... Каким то образом проблема решилась простой перезагрузкой прораммы. Извиняюсь за трату вашего времени.
     
  3. ZAZ-965

    ZAZ-965 Гуру

    Alfamaxis,никакой мистики, блок if-then-else записывается так
    Код (C++):
     if ( выражение )
            оператор_1;
        else
            оператор_2;
    Ваш код компилятор читал так
    Код (C++):
    if ( выражение );
            оператор_1;
            оператор_2;
        else
            оператор_3;
    1. после if точка с запятой не нужна
    2. лишние фигурные скобки
    3. отсутствие закрывающей скобки в главном цикле
     
  4. Faberge

    Faberge Administrator Администратор

    Правильное оформление кода экономит массу времени и нервов и помогает находить вот такие ошибки. Этому посвящены целые книги. Не пренебрегайте этим!
     
  5. Alfamaxis

    Alfamaxis Нуб

    Спасибо за совет, буду старатся!
    А можно ещё вопросик пожалуйста? Я ещё баловался с шаговиком но никак до меня не доходила идея о том как же все таки сделать так что бы с нажатием кнопки он менял своё направление. Пока что получаеться только полный поворот, и поле этого уже поворот в другую сторону. Да и то в 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);
    }