NetBeans + Arduino

alexKu
Offline
Зарегистрирован: 28.10.2016

Подскажите, кто-нибудь настраивал NetBeans под программирование Arduino?

Делал настройку по http://reto-jenni.jimdo.com/2016/03/30/setup-netbeans-for-arduino-nano/

NetBeans v8.2, Arduino IDE v1.6.12

Все зависимости прописал, библиотеки подключил. Но при компиляции выдет ошибку. Код самый элементарный main.cpp

#include <Arduino.h>

void setup() {
	pinMode(13, OUTPUT);
}

void loop() {
	digitalWrite(13, HIGH);
	delay(1000);
	digitalWrite(13, LOW);
	delay(1000);
}

Лог ошибки:

cd 'C:\Users\Alex\Documents\NetBeansProjects\ArduinoTest'
C:\WinAVR\utils\bin\make.exe -f Makefile CONF=Debug
mkdir -p lib/libs/Firmata/
avr-g++ -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=167 -fno-exceptions -c -g -IC:/Arduino/hardware/arduino/avr/cores/arduino -IC:/Arduino/hardware/arduino/avr/variants/standard -IC:/Arduino/libraries/Firmata C:/Arduino/libraries/Firmata/Firmata.cpp -o lib/libs/Firmata/Firmata.cpp.o
In file included from C:/Arduino/libraries/Firmata/Firmata.cpp:18:
C:/Arduino/libraries/Firmata/Firmata.h:204: error: ISO C++ forbids initialization of member 'blinkVersionDisabled'
C:/Arduino/libraries/Firmata/Firmata.h:204: error: making 'blinkVersionDisabled' static
C:/Arduino/libraries/Firmata/Firmata.h:204: error: ISO C++ forbids in-class initialization of non-const static member 'blinkVersionDisabled'
make: *** [lib/libs/Firmata/Firmata.cpp.o] Error 1
 
BUILD FAILED (exit value 2, total time: 219ms)
 
Несколько дней убил на решение. В чем может быть проблема, может кто-нибудь сталкивался с таким?
kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Судя по логам, подключена библиотека Firmata, в ее исходниках находится ошибка. Насколько я понимаю, нужно отключить эту либу. Убрать из списка или из makefile.

alexKu
Offline
Зарегистрирован: 28.10.2016

Пробовал не подключать либу Firmata. Тогда компиляция вообще не завершается, даже ошибкой.

В лог бесконечно сыпятся строчки:

.....
make[19]: Entering directory `C:/Users/Alex/Documents/NetBeansProjects/ArduinoTest'
"C:/WinAVR/utils/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[20]: Entering directory `C:/Users/Alex/Documents/NetBeansProjects/ArduinoTest'
"C:/WinAVR/utils/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[21]: Entering directory `C:/Users/Alex/Documents/NetBeansProjects/ArduinoTest'
"C:/WinAVR/utils/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
.....

При этом в системе плодятся процессы make.exe

Сам make.exe от WinAVR-20100110-install.exe

Уже который день бьюсь с проблемой так и не могу решить. В Arduino IDE нормально кодить невозможно.

С NetBeans давно знаком.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Я бы попробовал другую версию toolchain (make). Плюс нужно смотреть, что там в makefile.
Похоже на рекурсивный вызов, теоретически.

alexKu
Offline
Зарегистрирован: 28.10.2016

Огромное спасибо за наводку!!!

Попробовал toolchain, проблема осталась, правда сообщение об ошибке было немного иного характера. Даже подключил либы компиляции С/С++ от toolchain. Ошибка стала возникать не на Firmata.cpp, а на DCD.cpp

По итогу вернул обратно либы компиляции от самой Arduino и попробовал использовать make.exe от http://www.mingw.org/wiki/msys 

И все отлично заработало. Никак не думал что от make файла шла вся проблема. Видимо версии разные.

Спасибо. Тема закрыта.

lex0r
Offline
Зарегистрирован: 09.01.2016

AlexKu, приветствую! таже проблема была с NetBeans, просто замучался... сто раз набор инструментов добавлял, настраивал и тд и тп, сейчас поставил msys мейк файл, вроде кое как заработало, а подскажите как у Вас в этом направлении продвигается дело?

И сталкивались ли с такой ошибкой ?

main.cpp:5:22: fatal error: RTClib.h: No such file or directory

Причем ругается именно на сторонние библиотеки, как подцепить не пойму.

alexKu
Offline
Зарегистрирован: 28.10.2016

lex0r, приветствую.

Да, сталкивался с подключением либ, только мучился с LiquidCrystal. Решил проблему добавлением ее в Makefile.

INCLUDE_LIBS = Firmata;LiquidCrystal/src; Также пришлось в рабочей папке проекта очистить папку lib (в ней 2 папки core и libs), чтобы при сборки он по новой собрал ядро и подтянул нужные либы.

lex0r
Offline
Зарегистрирован: 09.01.2016

Да с этим тоже разобрался, все либы, какие импользуешь, надо добавлять в мейк файл, причем стандартные либы, типа Wire.h, необходимо засовывать в папку со всеми библиотеками (из-за того, что в мейк файле жестко привязывается путь до библиотек).

Но после удачной компиляции не смог заставить работать скетч на дуине, вижу что на плату заливается, перезагружается, но lcd 16х2 мониторчик не пашет... 

Сейчас поставил Visual c++, там есть плагин ардуиновский, еще попробую там потестить.

alexKu
Offline
Зарегистрирован: 28.10.2016

Я вот тоже сейчас мучаюсь, не могу залить скетч. Выдает:

avrdude: stk500_recv(): programmer is not responding

Не сталкивался с таким?

lex0r
Offline
Зарегистрирован: 09.01.2016

Нет не сталкивался, но пишет, что программатор не отвечает, рой в этой стороне, завел дуинку на visual c++, нормально все работает, без шаманства, качай комюнитьи версию и ставь плагин http://www.visualmicro.com/

alexKu
Offline
Зарегистрирован: 28.10.2016

Как я не хотел устанавливать еще одну IDE, но думаю всетаки придется, хотя бы попробовать. Спасибо за наводку.

alexKu
Offline
Зарегистрирован: 28.10.2016

Поставил VisualStudio, установил плагин. Действительно все собирается и заливается без всякого шаманства.

Но все же в этой IDE не устроило:

1. Среда разработки поставилась русская (скачал vs_langpack, установил, но так и не появился выбор английского языка).

2. По умолчанию создается проект с главным файлом project.ino, после переименования его в project.cpp проект не работает.

3. Переход к подключаемой либе осуществляется через Ctrl+F12, хотя во многих IDE открывается Ctrl + кнопки мыши.

Всетаки решил еще чутка пошаманить с NetBeans, и в итоге был успех. Обновил саму Arduino IDE (до 1.8.0), создал по новой проект. И все заработало.

Возможно проблема была в rates, до этого стояло значение в Makefile по умолчанию 57600, теперь выставлено 115200. Все отлично билдится и загружается.

lex0r
Offline
Зарегистрирован: 09.01.2016

Попытка 2, на другой машине.

Поставил 1.8 IDE, все равно не взлетает ... в PATH это прописывал ?

 D:\Programs\Arduino\Msys\bin; D:\Programs\Arduino\GnuWin32\bin;  D:\Programs\Arduino\hardware\tools\avr\bin; D:\Programs\Arduino\hardware\tools\avr\avr\bin; 

Набор средств такой ? 
http://clip2net.com/clip/m398660/eaac8-clip-71kb.png

У меня выскакивает:

cd 'C:\Users\Work\Documents\NetBeansProjects\ArduinoTEST'
D:\Programs\Arduino\Msys\msys\1.0\bin\make.exe -f Makefile CONF=Debug
m.AllocationBase 0x0, m.BaseAddress 0x71110000, m.RegionSize 0x4C0000, m.State 0x10000
D:\Programs\Arduino\Msys\msys\1.0\bin\sh.exe: *** Couldn't reserve space for cygwin's heap (0x71110000 <0x2610000>) in child, Win32 error 0
mkdir -p lib/core/
avr-g++ -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=167 -fno-exceptions -c -g -ID:/Programs/Arduino/hardware/arduino/avr/cores/arduino -ID:/Programs/Arduino/hardware/arduino/avr/variants/standard -ID:/Programs/Arduino/libraries/Firmata D:/Programs/Arduino/hardware/arduino/avr/cores/arduino/CDC.cpp -o lib/core/CDC.cpp.o
make.exe": avr-g++: Command not found
make.exe": *** [lib/core/CDC.cpp.o] Error 127
 
СОБРАТЬ FAILED (значение выхода 2,, общее время: 308ms) 
 
По поводу Visual мне после NetBeans тоже погано, ctrl да тема ) 

 

alexKu
Offline
Зарегистрирован: 28.10.2016

В PATH у меня прописано C:\Arduino\hardware\tools\avr\bin;C:\SysGCC\arm-eabi\bin;

Набор средств тот же самый кроме "Базового каталога", там у меня C:\SysGCC\arm-eabi\arm-eabi

SysGCC toolchain брал отсюда http://gnutoolchains.com/avr/

Начальные настройки Makefile (для Arduino UNO):

COM_PORT = COM1
BAUD_RATE = 115200
ARDUINO_VERSION = 167
ARDUINO_BASE_DIR = C:/Arduino
INCLUDE_LIBS = Firmata;
ARDUINO_MODEL = atmega328p
ARDUINO_PROGRAMMER = arduino
ARDUINO_PINS_DIR = ${ARDUINO_BASE_DIR}/hardware/arduino/avr/variants/standard