Скачал с сайта http://arduinodev.com/ Arduino Builder, скопировал все имеющиеся библиотеки в соответствующий каталог. Пробую собрать пример Blink - все ОК. Ну и еще несколько других примеров компилятся нормально. На других проектах лезут ошибки, не подскажите может нужно где-то что-то прописать? По ссылке скрин с ошибками https://drive.google.com/file/d/0B-wffS54hRz1bmlZZndsZFktRGc/view?usp=sharing
На "других проектах" лезут ошибки потому, что их библиотеки не заведены в среду. Чтобы завсести библиотеки, надо: - бросить файлы *.h и *.cpp в папку проекта; - правая кнопка мыши на названии проекта во вкладке Projets в левой части экрана или меню Project, выбор меню "Add files..." а дальше сами сообразите; - ну и #include <*.h>, если этого нет в проекте.
Вы наверное про CodeBlock, но ведь Arduino Builder вроде как самостоятельный продукт? Или я что-то путаю?
Да шут его знает точно. Вроде самостоятельный. Но отдельно от CodeBlock я бы его не стал применять. Он действительно часто выдает ошибки, и даже на Blink. В чем Вы видите его самостоятельную ценность? (У меня бывает такое, что им прошивка Ардуинки осуществляется с третьего раза. Терплю это только из-а CodeBlocks, а Вы из-за чего?)
Ну вот, создал проект, все .ino и .h - файлы и добавил в проект. Жму "Build" , начинается все хорошо Код (Text): Running target pre-build steps D:\CodeBlocks\ArduinoUploader "D:\Яндекс.Диск\Arduino\MyMeteo\iStation\." uno - 16 0 "D:\Яндекс.Диск\Arduino\MyMeteo\iStation\build\/lib_uno_16.a" "D:\Яндекс.Диск\Arduino\MyMeteo\iStation\build\/core_uno_16.a" Arduino Compiler & Uploader Version 0.8.9 (C)2013 Developed by Stanley Huang <stanleyhuangyc@gmail.com>, distributed under GPL license D:\CodeBlocks\arduino/hardware/arduino/cores/arduino/Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)': D:\CodeBlocks\arduino/hardware/arduino/cores/arduino/Print.cpp:44: warning: '__progmem__' attribute ignored Build Target: Arduino Uno (MCU: atmega328p) Referenced libraries: [digitalWriteFast] [iBoardRF24Network] [iBoardRF24] [SPI] [Time] [Ethernet] Compiling CDC.cpp... А заканчивается все печально Код (Text): Compiling wiring_pulse.c... avr-gcc -c -Os -s -pipe -fno-exceptions -ffunction-sections -fdata-sections -MMD -DARDUINO=105 -DF_CPU=16000000L -mmcu=atmega328p -Iarduino/hardware/arduino/cores/arduino -Iarduino/hardware arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde: In function 'void setup()': arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:6: error: 'Serial' was not declared in this scope arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:8: error: 'millis' was not declared in this scope arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:11: error: 'OUTPUT' was not declared in this scope arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:11: error: 'DDRD' was not declared in this scope arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:11: error: 'DDRB' was not declared in this scope arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:11: error: 'DDRC' was not declared in this scope arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:11: error: 'bitWrite' was not declared in this scope arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:11: error: 'pinMode' was not declared in this scope arduino/libraries/digitalWriteFast/digitalWriteFastTestMegax3.pde:12: error: 'HIGH' was not declared in this scope и так далее. А в конце: Process terminated with status -4 (0 minute(s), 55 second(s)) 50 error(s), 2 warning(s) (0 minute(s), 55 second(s))
Если встречаются надписи "... was not declared..." в массовом количестве - это проблема с подключением библиотек. Я попытался объяснить как это сделать. А что касается первого кода в посте, такое случается. Это просто предупреждение. Справляйтесь с ситуацией - CodeBlocks очень приятная программа, особенно по сравнению с родной IDE. Она Вам полюбится. И компилирует она очень стабильно. UPD: Не забудьте в проект CodeBlocks включить в файл #include <Arduino.h> В родной IDE он включается косвенно, то есть если просто перенести ардуиновский файл в новую среду он не откомпилируется.
Не понял, нужно добавлять вручную все .h и .cpp файлы объявленные в include? Код (Text): #include <digitalWriteFast.h> #include <iBoardRF24Network.h> #include <iBoardRF24.h> #include <SPI.h> #include <Time.h> #include <Ethernet.h> Но ведь в этих файлах есть еще куча ссылок на другие .h ?
См. картинку. Не все - стандартные библиотеки уже включены. А вот чтобы добавить, например нестандартную <digitalWriteFast.h> - копируете файлы в папку проекта, затем правая кнопка мыши на названии проекта (для случая на картинке - KitchenLight003001), затем Add Files... Для Вашего случая это библиотеки <digitalWriteFast.h> <iBoardRF24Network.h><iBoardRF24.h> и возможно <Time.h>, хотя точно не знаю. Это просто: кидаете кучей все файлы, а потом кучей их добавляете. Дольше говорить чем делать. Кстати, возможно файлы и не обязательно добавлять в папку проекта физически. Не исключаю, что их можно хранить в одном месте, и включать через Add Files... в проекты. Просто я привык делать именно так, так удобнее работать с проектом из разных мест. Проверьте сами. UPD. В папке \CodeBlocks\arduino\libraries находятся библиотеки, добавление которых осуществляется просто через #include... Остальные добавляются через Add Files... и #include.
Теперь наткнулся на новую проблему, стандартный IDE позволяет собрать проект из нескольких .ino файлов в 1 директории. У меня код функционально разделен на несколько файлов: 1. основной файл проекта, 2. работа с RF24, 3. работа с сайтом прогноза погоды Видимо придется все в один файл запихать.
Не думаю. Максимум поменять расширение файлов *.ino на *.cpp и включить их в проект указанным способом. А может и расширение менять не нужно. Просто включить в проект через Add Filles...
Ну вот, все получилось, большое спасибо за консультацию. Стандартный IDE многое прощает, тут пришлось соблюсти порядок размещения функций.
Да, придется объявлять (не обязательно определять) функции до setup. Но это мелочь по сравнению со всеми вкусностями CodeBloks. Также, этот Builder, ИМХО, плоховато работает как Serial порт в компе. Но это чувствуется только на очень мощной машине. Возможно Serial будет лучше смотреть чем-то другим, если будете замечать торможение.
У меня все библиотеки находятся в этом каталоге, однако все выше перечисленные пришлось добавить через Add Files. Если не трудно расскажите кратко, чего такого вкусного в CodeBlock?
... да попробуйте и все. Почувствуйте автоподстановку, подсказки, открытие во вкладках файлов библиотек, поиск определений, автозамену, перечень использованных функций, переменных, макросов, определения цветов подсветки кода и настройку горячих клавиш... Сразу это не откроется, по-чуть чуть. Но я уже физически не могу обратно. CodeBlocks не поддерживает Arduino Yun, и все равно работаю с ним. А может Вам и не понравится. Только практика. Есть еще и AtmelStudio 6 - прекрасная программа, но очень тяжелая и у меня почему-то все время "ломалась". Там было изначально тоже неплохо, плюс включение в нее плагином CodeVision для шаблонов инициализации процессора. Но через какое-то время все это начинало чудовищно виснуть и глючить. Сейчас использую CodeBlocks, родную IDE для компиляции Yun и CodeVision для шаблонов.
Интересно, если проект компилирую в IDE, размер получается 66 208 байт, а если в CodeBlock, то - 69 556 байт. На примере Меги2560 это не критично, а вот если это будет ATmega328, то это не приятно.
У меня были противоположные результаты. Но это не большая проблема. Готовый проект можно откомпилировать там, где итог получится лучше.