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

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

  1. M0ln1a

    M0ln1a Гик

    Может для Вас этот вопрос не сложный, но я нахожусь в тупике. Сколько не перепробовал проектов, новых идей, простых библиотек, а в итоге... ничего! Как-то раз кое-что получилось, и то с помощью двух хороших людей (vvr и geher). Сейчас попробовал создать библиотеку (если кто видел мои прошлые темы, Вы поймете, что было много разных попыток).
    В итоге получилась библиотека для невероятно примитивной функции - работы светодиодов...
    Вот список ошибок:

    C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF/GeneralF.h:5:0: error: unterminated #ifndef
    #ifndef GeneralF_h

    C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF/GeneralF.h:12:3: error: 'Public' does not name a type
    Public:

    C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF/GeneralF.h:13:22: error: expected ';' at end of member declaration
    Pin(int pin; int name);

    C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF/GeneralF.h:13:26: error: expected unqualified-id before ')' token
    Pin(int pin; int name);

    C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF/GeneralF.h:16:3: error: 'Private' does not name a type
    Private:

    C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF/GeneralF.h:25:3: error: 'Public' does not name a type
    Public:

    Вопросы:
    1) В чём подвох, если вставки Public и Private используются постоянно? И объясните пожалуйста ошибки 1, 3 и 4.
    2) Если нетрудно, подскажите какую-нибудь идею)
     
  2. Unixon

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

    Опечатки. Что за библиотека?
     
  3. Megakoteyka

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

    Тащите код сюда, покажем ошибки.

    Public и Private надо писать с маленькой буквы.
    Pin(int pin; int name); - параметры через запятую, а не точку с запятой.
    #ifndef GeneralF_h - забыли написать #endif в конце?
     
  4. M0ln1a

    M0ln1a Гик

    #ifndef GeneralF_h
    #define GeneralF_h // ОШИБКА

    #include "Arduino.h"

    class Led
    {
    Public: // ОШИБКА
    Pin(int pin; int name); // ОШИБКА
    void Full();
    void NFull();
    Private: // ОШИБКА
    int _pin;
    int _time;
    int _name;
    int _stop;
    };

    class Termistor
    {
    Public:

    Private:

    };





    #include "Arduino.h"
    #include "GeneralF.h"

    Led::pin(pin; name) // Пины
    {
    #define name pin
    pinMode(pin; OUTPUT);
    }

    void Led::Full(name; time) // Постоянное горение
    {
    Led.Pin(pin; name);
    if(time=0) // Если вместо time стоит 0,
    {
    digitalWrite(pin; HIGH); // то горим до выключения платы
    }
    else // В другом случае
    {
    digitalWrite(pin; HIGH); // горим выделенное время
    delay(time);
    }
    }

    void Led::NFull(name; time; stop) // Мигание
    {
    Led.Pin(pin; name);
    digitalWrite(pin; HIGH);
    delay(time);
    digitalWrite(pin; LOW);
    delay(stop);
    }


    Здесь тоже исправлю!
    Спасибо!
     
  5. M0ln1a

    M0ln1a Гик

    Смайлика там быть не должно (автоматом сработало при : и буквы P)
     
  6. M0ln1a

    M0ln1a Гик

    А в первом коде define нужен?
     
  7. Megakoteyka

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

    Форматируйте код (Ctrl+T в Artduino IDE) и используйте тэг CODE для вставки на форум (кнопка с символами "<>" в редакторе сообщений).
     
  8. M0ln1a

    M0ln1a Гик

    А это уже отдельная тема! Каким образом можно писать библиотеки в IDE? Я уже везде обыскался с такими уроками. Вот те сайты: arduino.ru/.ua/.com, amperka, robocraft, habrahabr; просил Кирилла Короткова в ВК, чтобы кто-нибудь чего-нибудь сделал (прошло 2 месяца, а может и больше). В итоге получилось написать файл .h в WordPad, а .cpp в Блокноте. Ни там ни там форматирование не сохраняется.
    А кстати, можно ли с помощью функции ino писать коды и библиотеки в Microsoft Visual Studio 2015?
    Там надо будет писать такие же коды как в IDE, или на C++, C#, Basic, Java?
    Я просто еще не скачивал, но кажется это будет проще, чем возиться с разными программами.
     
  9. M0ln1a

    M0ln1a Гик

    Я отредактировал те файлы. Те ошибки исчезли, но появилась новая!

    Arduino: 1.6.0 (Windows 8), Плата"Arduino Uno"

    In file included from sketch_jun11a.ino:1:0:
    C:\Users\Егор Ельцов\Documents\Arduino\libraries\GeneralF/GeneralF.h:15:26: error: ISO C++ forbids declaration of 'Pin' with no type [-fpermissive]
    Pin(int pin, int name);

    Ошибка компиляции.

    Как её лечить будем?
     
  10. ИгорьК

    ИгорьК Гуру

    Попробуйте http://arduinodev.com/codeblocks/
     
  11. ИгорьК

    ИгорьК Гуру

    После перевода фразы: "ISO C++ forbids declaration of 'Pin' with no type "
     
  12. iglooshtosser

    iglooshtosser Гик

    Как и написано в сообщении об ошибке: укажем тип функции (возвращаемого значения) Pin.
    Если функция ничего не возвращает - тип void
     
  13. ИгорьК

    ИгорьК Гуру

    Попробуйте, все таки, перевести ближе к тексту.
    Кстати, слово Pin может быть зарезервировано системой. Если это ВАША функция, смените ей название.
     
  14. M0ln1a

    M0ln1a Гик

    Этот код находится выше. Данная функция представляет собой функцию pinMode и #define, то есть пин и имя от define + постоянная функция OUTPUT (pinMode)
     
  15. ИгорьК

    ИгорьК Гуру

    1. Оформите код как положено - уважайте глаза других людей.
    2. Переведите сообщение лучше.
     
  16. M0ln1a

    M0ln1a Гик

    Это тоже находится выше...
    Megakoteyka:
    "Форматируйте код (Ctrl+T в Artduino IDE) и используйте тэг CODE для вставки на форум (кнопка с символами "<>" в редакторе сообщений)."
    Я:
    "А это уже отдельная тема! Каким образом можно писать библиотеки в IDE? Я уже везде обыскался с такими уроками. Вот те сайты: arduino.ru/.ua/.com, amperka, robocraft, habrahabr; просил Кирилла Короткова в ВК, чтобы кто-нибудь чего-нибудь сделал (прошло 2 месяца, а может и больше). В итоге получилось написать файл .h в WordPad, а .cpp в Блокноте. Ни там ни там форматирование не сохраняется. "
     
  17. Unixon

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

    Код (Text):
    Led::Pin(pin; name) // Пины
    {
    #define name pin
    pinMode(pin; OUTPUT);
    }
     
    Это что еще за ересь?
     
  18. M0ln1a

    M0ln1a Гик

    Pin поменял на Choise. Тоже самое!
     
  19. M0ln1a

    M0ln1a Гик

    Данная функция представляет собой функцию pinMode и #define, то есть пин и имя от define + постоянная функция OUTPUT (pinMode)
     
  20. Unixon

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

    У вас написан бессмысленный кусок кода, который работать не может и не будет.
    Что вы хотели сделать?