Ошибка в программе

Тема в разделе "Arduino & Shields", создана пользователем Kosss, 12 окт 2013.

  1. Kosss

    Kosss Нерд

    while ((getMeasurement()>40)||(digitalRead(A1)=HIGH) ||(digitalRead(A2)=HIGH))
    вот на что ругается IDE.
    lvalue required as left operand of assignment-вот такая вот ошибка.
    Помогите пожалуйста.
     
  2. Kosss

    Kosss Нерд

    (digitalRead(A1)=HIGH)-он ругается не на чтение цифрового сигнала с аналога!!!
    Тестил- все пашет
     
  3. NR55RU

    NR55RU Гик

    digitalRead(A1)=HIGH
    Это операция ПРИСВОЕНИЯ :) вы функции пытаетесь значение присвоить :))
    digitalRead(A1)==HIGH
    Вот так правильнее :) Два знака равно.
     
    CokeInn, frezer2 и Megakoteyka нравится это.
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    Правильнее читать "присвоить значение результату, возвращаемому функцией", а этот самый результат является константой, что и не нравится компилятору :)
    Присвоить функции - это digitalRead = 5;

    Кстати, погуглите "указатель на функцию" ради интереса - весьма забавный фокус ;)
     
    frezer2 нравится это.
  5. Kosss

    Kosss Нерд

    спасибо.
     
  6. NR55RU

    NR55RU Гик

    Мой косяк, ошибся, 2 часа ночи и все такое :)
     
    Последнее редактирование: 13 окт 2013
  7. #include <Strela.h>

    #define butt S1
    #define sleep 125

    byte lamps[] = {L4, L3, L2, L1};

    unsigned long last_press = 0;

    boolean butt_flag = LOW;
    boolean lamp_flag = LOW;

    int high_lamp = 0;

    void setup() {
    for (int i = 0; i <= 3; i++) {
    uPinMode(lamps, OUTPUT);
    }

    uPinMode(butt, INPUT);
    }

    void loop() {
    if (uDigitalRead(butt) && butt_flag == LOW && millis() - last_press > 200) {
    butt_flag = HIGH;
    lamp_flag = !lamp_flag;
    last_press = millis();
    }

    if (uDigitalRead(butt) == LOW && butt_flag) butt_flag = LOW;

    if (lamp_flag) {
    uDigitalWrite(lamps[high_lamp], HIGH);
    delay(sleep);
    uDigitalWrite(lamps[high_lamp], LOW);
    high_lamp++;

    if(high_lamp > 3) high_lamp = 0;
    }
    }

    Я как-то в этом скетче тоже с равенствами накосячил.
     

    Вложения:

    • Strela_Trig.ino
      Размер файла:
      729 байт
      Просмотров:
      422
  8. Код (C++):
    #include <Strela.h>

    #define butt  S1
    #define sleep 125

    byte lamps[] = {L4, L3, L2, L1};

    unsigned long last_press = 0;

    boolean butt_flag = LOW;
    boolean lamp_flag = LOW;

    int high_lamp = 0;

    void setup() {
      for (int i = 0; i <= 3; i++) {
        uPinMode(lamps[i], OUTPUT);
      }

      uPinMode(butt, INPUT);
    }

    void loop() {
      if (uDigitalRead(butt) && butt_flag == LOW && millis() - last_press > 200) {
        butt_flag = HIGH;
        lamp_flag = !lamp_flag;
        last_press = millis();
      }

      if (uDigitalRead(butt) == LOW && butt_flag) butt_flag = LOW;

      if (lamp_flag) {
        uDigitalWrite(lamps[high_lamp], HIGH);
        delay(sleep);
        uDigitalWrite(lamps[high_lamp], LOW);
        high_lamp++;

        if(high_lamp > 3) high_lamp = 0;
      }
    }
     

    Вложения:

    • Strela_Trig.ino
      Размер файла:
      729 байт
      Просмотров:
      383