atmega 8 датчики холла и rgb светодиод

Тема в разделе "Arduino & Shields", создана пользователем sanik, 10 мар 2014.

  1. geher

    geher Гуру

    Подозреваю, что параметр Trig1 в объявлении функции sonar1 заменяется на 14. Компиллятор скорее всего делает стойку все-таки на эту строку.
     
    rav_75 нравится это.
  2. Aref

    Aref Нуб

    А что мне делать, чтобы подобного не возникало?
     
  3. rav_75

    rav_75 Гик

    Смотря как Вы используете данную функцию. Если вводные не нужны и постоянно используются только Trig1 и Echo1, то возможно стоит объявить функцию без аргументов
    int sonar1(){....}
    Если вводные нужны и функция вызывается так
    int result1 = sonar1(Trig1, Echo1);
    int result2 = sonar1(Trig2, Echo2);
    то объявляем функцию так
    int sonar1 (int Trig, int Echo){...}
    и в теле функции меняем Trig1 на Trig и Echo1 на Echo
    т.е. не используйте при объявлении функции предопределенные переменные и константы
    #define - это директива препроцессора, макрос. В итоге перед компиляцией везде где встречается Trig1 (и прочее) подменяется его значением и компилятору достаются строки (в Вашем случае)
    int sonar1 (int 14, int 15){...} и т.д., (о чем и писал выше тов. geher) а не то, что Вам нужно. Отсюда и ошибки компилирования. Вроде как-то так. Надеюсь понятно объяснил :)
     
    Aref нравится это.