Hallo,
obwohl einige Erfahrung im Bereich Linux, Einplatinenrechner (Raspberry etc) und IoT, ist das hier mein erster Berührungspunkt zu Arduinos. Daher ist auch die Arduino IDE bzw. das SDK für mich neu, und die vereinfachte C++ Syntax ebenfalls. Zwar ist mein letztes C++ nun 15 Jahre her und ich mehr in der Java, PHP und Perl Welt zuhause, aber C++ oder auch Code aus anderen Sprachen lesen und verstehen klappt doch ganz gut. Fremden Code gut und schnell verstehen wird aber durch eine vernünftige IDE untersützt.
Und da war bzw. bin ich erschüttert über die Arduino IDE: kein vernünftiges Syntax und Context Highlighting, keine Call Hierarchy, keine Type Hierarchy, keine “open declaration” Navigation, keine Suche nach Referenzen, im Prinzip außer etwas Syntax Highlighting kaum Unterstützung.
Mit Java Projekten nutze ich Eclipse. Für C++ gibt’s natürlich auch Eclipse, und für Arduino das entsprechende Plugin. Ich habe es mal getestet, funktioniert einwandfrei. Man kann vernünftig den Code editieren, wer Eclipse (oder eine andere brauchbare IDE) kennt weiß was damit möglich ist.
Allerdings compiliert weder der master noch der dev Branch Code ohne weiteres sauber als C++ Code, da das Prototyping der Methoden nicht sauber ist, und 1, 2 kleine Ungenauigkeiten drin sind, am Beispiel master: es fehlt um die Zeile 27 herum
bool readCard(nfcTagObject *nfcTag);
void dump_byte_array(byte *buffer, byte bufferSize);
void resetCard();
void setupCard();
void writeCard(nfcTagObject nfcTag);
und Zeile 486 in Methode readCard muss
return returnValue; //statt nur return;
lauten.
Im dev Branch ist es mit den Prototypen der Methoden genauso, außer dass es natürlich mehr sind, und in Zeile 470 muss es zusätzlich zu dem return returnValue; obendrüber heißen
randomSeed(millis() + random(1000)); //-> millis() statt millis
Nach Korrektur compilieren beide branches, und können direkt aus Eclipse auf den Arduino geladen werden.
Building TonUINO
"C:/Users/xxx/.arduinocdt/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I"C:/Users/xxx/.arduinocdt/packages/arduino/hardware/avr/1.6.23/cores/arduino" -I"C:/Users/xxx/.arduinocdt/packages/arduino/hardware/avr/1.6.23/variants/eightanaloginputs" -I"C:/Users/xxx/.arduinocdt/libraries/DFPlayer_Mini_Mp3_by_Makuna/1.0.2/src" -I"C:/Users/xxx/.arduinocdt/libraries/MFRC522/1.4.3/src" -I"C:/Users/xxx/.arduinocdt/packages/arduino/hardware/avr/1.6.23/libraries/EEPROM/src" -I"C:/Users/xxx/.arduinocdt/libraries/JC_Button/2.0.1/src" -I"C:/Users/xxx/.arduinocdt/packages/arduino/hardware/avr/1.6.23/libraries/SPI/src" -I"C:/Users/xxx/.arduinocdt/packages/arduino/hardware/avr/1.6.23/libraries/SoftwareSerial/src" "../../TonUINO.cpp" -o "project/TonUINO.cpp.o"
"C:/Users/xxx/.arduinocdt/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "./TonUINO.elf" project/TonUINO.cpp.o libraries/MFRC522/1.4.3/src/MFRC522.cpp.o libraries/MFRC522/1.4.3/src/MFRC522Extended.cpp.o libraries/JC_Button/2.0.1/src/JC_Button.cpp.o libraries/SPI/src/SPI.cpp.o libraries/SoftwareSerial/src/SoftwareSerial.cpp.o "./core.a" "-L." -lm
"C:/Users/xxx/.arduinocdt/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin/avr-objcopy" -O ihex -R .eeprom "./TonUINO.elf" "./TonUINO.hex"
"C:/Users/xxx/.arduinocdt/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "./TonUINO.elf" "./TonUINO.eep"
Program store usage: 19777 of maximum 30720 bytes
Initial RAM usage: 799 of maximum 2048 bytes
Nun die Frage: wer könnte - wenn da nichts gegen spricht - diese Änderungen zum. in den dev Branch übernehmen? “Abwärts-/rückwärtskompatibel” sind die Änderungen, der Sketch compiliert in der Arduino IDE unverändert.
Außerdem: wenn jemand Interesse an der IDE, Fragen zur Nutzung oder Einrichtung hat oder Probleme, gerne fragen
In den folgenden Screenshots mal einen Eindruck von der Eclipse IDE.