Снова библиотеки...

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

  1. ИгорьК

    ИгорьК Гуру

    Сначала правильно вставлять код на форум, но у меня не получается достучаться. У Мегакотейки тоже.
     
  2. Unixon

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

  3. M0ln1a

    M0ln1a Гик

    А в чём ошибка то? Почему он не будет работать? Я же там пояснил , что у тех функций вот такие переменные и они должны быть и у моей функции!
     
  4. Unixon

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

    А теперь объясните компилятору, что C++ - это то, что вы написали, а не то, что в стандарте языка.
     
  5. M0ln1a

    M0ln1a Гик

    Как исправить?
     
  6. Unixon

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

    Вы сначала расскажите, что именно пытались сделать.
    #define у вас что должен делать по вашему представлению?
     
  7. M0ln1a

    M0ln1a Гик

    Давать имя светодиоду и указывать № пина
     
  8. M0ln1a

    M0ln1a Гик

    А PinMode показывает что этот пин - ВЫХОД, поэтому я написал: pinMode(pin, OUTPUT)
     
  9. Unixon

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

    Это так не работает. Препроцессор, встретив такой макрос, просто тупо заменит все буковки "name" дальше по тексту на буковки "pin" и только потом отдаст текст компилятору.
     
  10. M0ln1a

    M0ln1a Гик

    А как можно сделать глобальную функцию?
     
  11. M0ln1a

    M0ln1a Гик

    А как надо?
     
  12. Unixon

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

    #define и т.п. это директивы препроцессора. Препроцессор работает с текстом программы, он понятия не имеет о том, что у вас в программе есть какие-то там переменные. Ему на это наплевать, он работает с буковками.
     
  13. Unixon

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

    Возвращаемся к изначальному вопросу. Что должна эта функция делать? Идея в чем?
     
  14. Unixon

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

    Что значит "давать имя светодиоду"?
    Что значит "указывать номер пина"?
    Как вы представляете дальнейшую работу?
     
  15. M0ln1a

    M0ln1a Гик

    Всё по порядку.
    Эту библиотеку я делаю для маленького упрощения работы с электронными компонентами.
    Что Вы делаете для работы с таким компонентом? Правильно указываете функцию #define, в которой имеется выдуманное название (Имя) и номер пина (Номер пина).
    Вот код для мигания обычной и примитивной детали - "светика":
    Код (Text):

    #define LED 13

    void setup()
    {
      pinMode(LED, OUTPUT);
    }
    void loop()
    {
      digitalWrite(LED, HIGH);
      delay(100);
      digitalWrite(LED, LOW);
      delay(900);
    }
    Чем же занимаюсь я:
    Код (Text):

    #include "GeneralF.h"

    void setup()
    {
      LED.Choise(13, FLASH);
    }

    void  loop()
    {
      LED.NFull(Flash, 100, 900);
    }
    Я думаю посредством сравнения этих простых кодов вы поймете их без пояснений.
     
  16. M0ln1a

    M0ln1a Гик

    Лично мне 2-ой код нравится гораздо больше, так что если Вы поможете, то я продолжу создание этой библиотеки, а если есть какие идеи - говорите, это будет великолепно!
     
  17. Unixon

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

    Что такое FLASH и что такое Flash ? С точки зрения C++ и с вашей. Они по ходу не совпадают совсем. Да, и что такое LED.

    Это классы, объекты, константы, переменные, макросы? Что? Вы это никак не определили в коде.
     
    Последнее редактирование: 11 июн 2015
  18. Unixon

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

    Есть разные способы определить константу.
    Один из самых простых и тупых - сделать текстуальную подстановку с помощью препроцессора.
    #define - это не функция!

    Можно именовать пины так:
    const int PIN_LED = 13;
    но такое определение будет расходовать память, тут вся надежда на оптимизацию кода компилятором.
     
  19. Unixon

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

    Если номер пина меняется в процессе исполнения программы, вместо константы используете переменную.
     
  20. M0ln1a

    M0ln1a Гик

    LED это класс, а насчёт FLASH и Flash - это имя, которое я просто случайно поменял (Такого больше не повторится!)