Если вас по каким либо причинам не устраивает штатная Arduino IDE, то есть более чем отличная альтернатива. Свое мнение я выразил в небольшой статье, тут. Скажу в крации лишь то, что после установки CodeBlocks Arduino IDE, я больше не запускаю Arduino IDE вовсе. Ибо в ней больше нет никакой необходимости. Одним словом, рекомендую попробовать.
Более, чем одноразовые, проекты тоже переношу в C::B, но только без всяких "CodeBlocks Arduino IDE". В C::B совершенно замечательная система управления сборкой проекта. Для сборки проекта через Makefile без C::B можно воспользоваться cbp2make, только нужно скопировать конфигурацию для avr-gcc из C::B.
А вы могли бы рассказать как можно с помощью C::B без готовых аддонов собрать и залить проект на ардуин по USB ?
Если совсем "в лоб" - просто включаете в проект нужные файлы из arduino-1.0.x/hardware/arduino/cores/arduino и добавляете этот каталог в пути поиска инклудов. Заливка в контроллер через avrdude из скрипта на bash/bat. Если хочется чуть большей похожести на оригинальную IDE - можно воспользоваться ino, добавив его в pre-build скрипт и в меню tools для заливки в контроллер. Но этим я не занимался, т.к. не особо нужно было. Обычно наоборот, приходится не автоматически искать все cpp к прописанным include, а резать Wiring на мелкие кусочки, чтобы уместиться в мегу 48/88.
То есть, получается. Подключаем нужные файлы, компилируем проект в AVR-GCC с созданием hex файла, затем используя avrdude загружаем hex на ардуин .. так ? Ну и все эти действия как я понимаю можно прописать в C::B Кому любопытно, нашел тут статейку на тему как hex через avrdude залить на арудин.
Можно вот этот момент прояснить. Поправьте меня если я ошибаюсь. Компилятор компилирует весь код для всех подключенных файлов, и даже те функции и классы которые в программе явно не используются, так как компилятору не известно будут ли эти функции вызваны динамически. Таким образом все это включается в код программы, а вы разбиваете один большой файл на множество мелких чтобы подключать только тот код который фактически используюется, я все верно понял ?
Обрамляю функции #ifdef...#endif и в настройках проекта отключаю через глобальные макросы неиспользуемые части функционала Wiring. Список исходников не меняется. Если в настройках проекта ничего не указано - компилируется полный вариант.
Много памяти отъедает работа с вещественными числами, потом идут некоторые операции со строками, потом еще что-то. На всем этом можно неплохо сэкономить, если оно в проекте по факту не используется.
Пробую работать с C::B, но некоторые моменты не совсем понятны. Например, почему некоторые файлы библиотек он видит только если их скопировать в каталог проекта, хотя они явно присутствуют в С:\CodeBlocks\arduino\libraries\ ?
Не знаю, как именно вы пытаетесь их подключать, но нужно сделать две вещи: добавить сами файлы в проект и добавить пути к заголовочным файлам .h в пути поиска проекта.
Создал проект заново, добавил в проект только свои файлы (те что сам написал), добавил пути к библиотекам (h-файлам). Проект компилируется. Но, при компиляции в C::B - размер получается 48626 байт, а если Arduino IDE, то 46502 байт. При добавлении файлов в проект я указал только 1 контроллер, может какие-то настройки проекта нужно сделать?
Не смог завести проект под Linux в codeblocks. При попытке компилировать открывает CDC.cpp , где только #include "CDC.cpp" Кто-нибудь в курсе что не так?
Здравствуйте! Подскажите, как настроить С::B для прошивки плат Uno, Leonardo, Iskra, Nano, Mega? Cпасибо. C::B 20.03 Arduino IDE 1.8.13 Win 10 #include <Arduino.h> void setup(){ // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(13, LOW); // set the LED off delay(1000); // wait for a second } gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project) -------------- Build: Arduino Leonardo in 2 (compiler: GNU GCC Compiler for AVR)--------------- avr-g++.exe -mmcu=atmega32 -Wall -fno-exceptions -ffunction-sections -fdata-sections -x c++ -s -DF_CPU=16000000L -DARDUINO=103 -DUSE_EEPROM=0 -DUSE_ETHERNET=0 -DUSE_FIRMATA=0 -DUSE_LCD=0 -DUSE_LCD4884=0 -DUSE_OBD=0 -DUSE_SD=0 -DUSE_SERVO=0 -DUSE_SOFTSERIAL=0 -DUSE_SPI=0 -DUSE_STEPPER=0 -DUSE_TINYGPS=0 -DUSE_WIRE=0 -Os -std=c11 -mmcu=atmega32u4 -D__AVR_ATmega32U4__ -DUSB_VID=0x2341 -DUSB_PID=0x803C -I. .................... IC:\WinAVR\avr\include -c cores\wiring_pulse.c -o .objs\cores\wiring_pulse.o ............. cc1plus.exe: error: unrecognized command line option "-std=c11" Process terminated with status 1 (0 minute(s), 0 second(s)) 13 error(s), 0 warning(s) (0 minute(s), 0 second(s))
Прошивку через IDE не настраивал, обошелся bash-скриптами на все случаи. Про Win10 не подскажу, очень давно с нее слез (WinXP). В принципе, под виндами все то же самое -- скрипты с другим синтаксисом, какие-то команды можно прописать в саму IDE.