Не работает простой код

Тема в разделе "Arduino & Shields", создана пользователем БиЛл ШиФр2, 18 янв 2018.

  1. Не работает код для 3-х кнопок и 3-х светодиодов. Выдает:
    Arduino: 1.8.2 (Windows 7), Плата:"Arduino/Genuino Uno"

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:32:0,

    from sketch\sketch_jan18a.ino.cpp:1:

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/binary.h:31:12: error: expected unqualified-id before numeric constant

    #define B1 1

    ^

    C:\Users\Елена\Desktop\sketch_jan18a\sketch_jan18a.ino:4:11: note: in expansion of macro 'B1'

    exit status 1
    Ошибка компиляции для платы Arduino/Genuino Uno.

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"

    А вот код (на всяк случ):


    const int L1 = 9;
    const int L2 = 10;
    const int L3 = 11;
    const int B1 = 2;
    const int B2 = 3;
    const int B3 = 4;

    void setup()
    {
    pinMode(L1, OUTPUT);
    pinMode(L2, OUTPUT);
    pinMode(L3, OUTPUT);
    pinMode(B1, INPUT);
    pinMode(B2, INPUT);
    pinMode(B3, INPUT);
    }

    void loop()
    {
    if (digitalRead(B1) == LOW)
    {
    digitalWrite(L1, LOW);
    }
    else
    {
    digitalWrite(L1, HIGH);
    }
    if (digitalRead(B2) == LOW)
    {
    digitalWrite(L2, LOW);
    }
    else
    {
    digitalWrite(L2, HIGH);
    }
    if (digitalRead(B3) == LOW)
    {
    digitalWrite(L3, LOW);
    }
    else
    {
    digitalWrite(L3, HIGH);
    }
    }
    Причем любой другой код без проблем грузит. Закон подлости или что-то другое?
     
  2. DIYMan

    DIYMan Guest

    1. Вставьте код правильно (кнопка "<>" на панели редактора);
    2. Приведите полный код - в том, что вы привели, нет ни одного #define, на который ругается.
     
  3. Это полный код. Не в коде ошибка, а ошибка КОМПИЛЯЦИИ.
     
  4. DIYMan

    DIYMan Guest

    Понял в чём дело. Дайте другие имена переменным, ибо B1 - это в binary.h определение для двоичного представления числа 1. Короче, B1 как имя переменной - лучше не юзать.
     
    arkadyf и ИгорьК нравится это.
  5. b707

    b707 Гуру

    Более того, вообще любые имена переменных, состоящие только из заглавных букв и цифр - лучше не юзать. Такие имена принято использовать для макросов препроцессора.
    Так что советую во всех ваших переменных заменить большие буквы маленькими...
     
    arkadyf и ИгорьК нравится это.
  6. Спасибо, попробую
     
  7. Программа загрузилась, спасибо. А вот работает как-то странно. По идее, светодиоды должны включаться и выключаться нажатием соответствующих кнопок, а они просто мигают.
     
  8. ZAZ-965

    ZAZ-965 Гуру

    БиЛл ШиФр2 нравится это.
  9. Спасибо, уже разобрался
     
  10. vvr

    vvr Инженерище

    козляра даже не знает, что названия городов пишутся с большой букы))))
     
  11. НАБ

    НАБ Нуб

    ИСПОЛЬЗУЙ SWITCH CASE
     
  12. b707

    b707 Гуру

    не используй капслок.
    Смотри на даты сообщений, когда отвечаешь.