Как объявить функцию в Ардуино?

Тема в разделе "Arduino & Shields", создана пользователем bvv, 30 окт 2012.

  1. bvv

    bvv Нерд

    Попробовал я сочинить произвольную функцию. До тех пор, пока в скобочках, что идут после названия функции пусто, все работает. Но как только я решил прописать в скобках некие параметры, чтоб передать их в функцию, компилятор начал ругаться. Пишет: "Too few arguments to function ..." И чего с этим делать? Каковы правила объявления функций? Из того, что я вычитал, не понял, где у меня ошибка. Код (с ошибкой) ниже.
    Код (Text):
    void setup ()
    {
      Serial.begin(9600);
    }
     
    void Sleep (int H)
    {
      long SleepV = H * 3600000;
      //long SleepV = 28800000;
      int Start;
      SL:
      if (SleepV > 32000)
      {
        Start = 32000;
        delay(Start); // Этой задержкой устанавливаем, когда начнется работа программы
        SleepV = SleepV - Start;
        goto SL;
      }
      else
      {
        Start = SleepV;
        delay(Start);
      }
    }
     
    void loop ()
    {
      char msgIn[40];
      char msgOut[40];
      String msgInS = String(msgIn);
      String msgOutS = String(msgOut);
      String MsgAllS;
     
      Sleep();
     
      Serial.println("FirstSleep");
     
      Sleep();
     
      Serial.println("SecondSleep");
     
      Sleep();
     
      Serial.println("ThirdsSleep");
       
    }
     
     
  2. iliask

    iliask Нерд

    Объявление void Sleep (int H) - подразумевает что при вызове Sleep ей будет передан аргумент int.
    К примеру Sleep(1000)
     
    leo141198 нравится это.
  3. bvv

    bvv Нерд

    Понял. Я то думал, что оно ругается на объявление функции. А ругалось на вызов оной :) Без параметров. Пасиб.
     
  4. Unixon

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

    bvv, учите C и C++ , 99% вопросов отпадут сами собой. :)
     
  5. bvv

    bvv Нерд

    Так я чем и занимаюсь :) На практике. К сожалению, заняться этим систематизированно нереально. Ибо основная деятельность далека от программирования.
     
  6. Megakoteyka

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

    Внимательно читайте сообщения компилятора и большинство вопросов отпадут сами собой.
    Например, "Too few arguments to function ..." = "Слишком мало параметров передается в функцию...".
    А теорию учить надо, на одной практике далеко не уедете.
     
  7. bvv

    bvv Нерд

    Кто ж спорит то. Надо. Стараюсь по мере возможности :)
     
  8. ut4uar

    ut4uar Нуб

    Также как и в C и C++ function ..
    Вот недавно натолкнулся на ребят с Arduino, возможно кому будет полезно http://pam.biz.ua/desktops/
     
  9. apomelov

    apomelov Нерд

    Рекомендую начать с освоения языка C. Прочитайте книжку Б. Керниган, Д. Ритчи "язык программирования C". Это маленькая книга в мягкой обложке (Страуструп отдыхает:)), но по программированию ардуино она покроет подавляющее число вопросов.
     
  10. roggedhorse

    roggedhorse Гик

    Страуструп красавчик. Но читать его все равно, что читать "Капитал" Маркса :)
     
  11. apomelov

    apomelov Нерд

    Ну, собственно, если C++ -- это инструмент, которым зарабатываешь на хлеб, то читать надо. А для мигания светодиодами и кручения сервомоторами Кернигана-Ритчи хватит сполна.
     
  12. Securbond

    Securbond Гуру

    Добрых суток, а как возвращается переменная, если она изменилась в функции ? Или это происходит автоматически ?
     
  13. Unixon

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

    Нет, не автоматически. Есть разные способы.
    1) через возвращаемое значение функции;
    2) через аргумент, передаваемый по указателю или ссылке;
    3) через глобальную переменную;
     
  14. Securbond

    Securbond Гуру

  15. Sindbad

    Sindbad Гик

    А, так в этом смысле...
    Глобальные переменные (объявленные вне всех функций) можно изменять в любой функции и эти изменения применяются сразу и доступны другим функциям. Только тут термин возвращать не совсем подходит.
     
  16. Securbond

    Securbond Гуру

    Спасибо, буду знать!
     
  17. Iguana

    Iguana Нерд

    Датчик препятствий, две функции "назад влево" и "назад вправо". По отдельности все работает хорошо. Но решил сделать случайный выбор или "назад влево" или "назад вправо" и вот тут уперся. В массив функции просто так не загоняются , какой может быть путь?)
     
  18. rkit

    rkit Гуру

    Зачем их загонять в массив? Это можно, но зачем? Берете случайное число и обычное логическое ветвление.
     
  19. Iguana

    Iguana Нерд

    Эмммм... Т.е. тот же массив из двух чисел 1 и 2. Рэндомно выбирается одно из них. И дальше если выпало 2 то вызывается функция назад вправо, если 1 то назад влево?
     
  20. rkit

    rkit Гуру

    Что у вас за фиксация на массивах такая? Не нужен массив. Совсем.