[Arduino IDE] Feinheiten und Tricks

HotSystems:
Versuche es doch mal mit "Suchen und Ersetzen !

"Strg + F"

Tatsächlich, danke dir!
Manchmal hat man echt Scheuklappen auf, die Suchfunktion hab ich nämlich schon genutzt, wenn auch selten.

Mahimus:
Tatsächlich, danke dir!
Manchmal hat man echt Scheuklappen auf, die Suchfunktion hab ich nämlich schon genutzt, wenn auch selten.

Ok, freut mich, dir helfen zu können.

Doc_Arduino:
Hallo,

den Thread finde ich prima, es sind viele nette Features dabei. :slight_smile:

Obwohl ich manchmal auch mit Atmel Studio hantiere gefällt mir immer wieder die Schlichtheit der IDE.

Deswegen stelle ich meine selbstgebaute Toolchain zur Verfügung.
Aktuell ist GCC-9.2.0. https://gcc.gnu.org/ Darauf beruht die avr-gcc 9.2.0 Toolchain.
Voreingestellt ist C++17. C++20 (Option -std=gnu++2a) ist auch möglich, ist jedoch offiziell noch experimentell.
...
...
...
Hat fast den gleichen Verzeichnisbaum wie die mit der IDE original installierte. Dann gehören die 3 Zeilen in die ...\hardware\arduino\avr\platform.local.txt an dieser Stelle. Oder man deinstalliert die Erweiterung.

Die Toolchain gibts auf Anfrage.

Ich nutze die IDE auf Linux 32bit.
Habe mir hier die 9.2 runter geladen:
https://majenko.co.uk/downloads/avr-gcc-920-compiler

Entsprechend oben die platform.txt angepasst.
Schon beim Blink-Sketch erhalte ich 976 bytes zu vorher 924 bytes, also 52 bytes mehr. (Nano 328P)
Bei größeren Sketches wirkt es sich noch größer aus.
Habt ihr ähnliche Erfahrung gemacht?

Ja, die Compiler unterscheiden sich.
Auch in der Größe des Kompilats.
Oder auch in der Geschwindigkeit des generierten Codes.
Oft ist schneller Code etwas größer.

Es gibt einige Einstellungen, mit denen sich die Optimierungen beeinflussen lassen.

hmm, das flag -Os ist ja eigentlich entsprechend gesetzt

harryberlin:
hmm, das flag -Os ist ja eigentlich entsprechend gesetzt

Man kann das Universum natürlich auf einen Parameter reduzieren.
Aber mit der Realität hat das dann wenig zu tun.

Übrigens:
Der Sinn und Zweck des Threads ist ein ganz anderer!
Mir wäre lieber, wenn wir dieses, in seiner Komplexität doch recht spannende Thema, lieber an anderer Stelle diskutieren.

ok, wenn nötig, dann bitte aufräumen.

RudiDL5:
Zum Thema „Erleichterungen bei der Bedienung der IDE" hätte ich vielleicht noch etwas beizusteuern:

Individuelle Farbeinstellungen für den Editor

Vielen Dank für den Tipp. Hier gibt es übrigens gleich ein fertiges Dark Theme zum runterladen: Dark Theme for Arduino IDE

Sieht dann nach ein paar weiteren Modifikationen so aus:

Nur mit der Farbe für for, if, usw. bin ich nicht so happy, aber ich finde die entsprechende Einstellung nicht. Scheint nicht in der theme.txt zu sein.

hi combie,

combie:

  • Ich möchte gerne die öffnenden und schließenden Blockklammern, in jeweils der gleichen Spalte.

So sieht sie dann aus:

#include <Streaming.h>

void setup()
{
  Serial.begin(9600);
  Serial << "Start: "<< FILE << endl;
}

void loop()
{

}

Das ist aber dann nur in der Vorlage für die zwei Klammerpaare gültig.
Um das auf Dauer festzulegen, musst Du A1 oder A15 vorgeben. Je nachdem, was mit der nächsten Ebene passieren soll.

Und hier die Lösung fürs Theme:

Mahimus:
Nur mit der Farbe für for, if, usw. bin ich nicht so happy, aber ich finde die entsprechende Einstellung nicht. Scheint nicht in der theme.txt zu sein.

Doch.
Für den ersten Versuch geh in die Sektion

STRUCTURES

ändere die Zeile:
editor.reserved_word.style = #5E6D03,plain ← So ist sie im Original–>
in
editor.reserved_word.style = #FF0000,plain

speichern.
Arduino starten - vielleicht mit einem umfangreichen Sketch.

Achte genau drauf, was passiert ist.

Da ich annehme, das Dir das nicht gefällt, kannst Du das verfeinern.
Setze die vorige Einstellung zurück.
Schreibe darunter eine neue Zeile in die theme.txt:
editor.reserved_word_3.style = #FF0000,plain

Dann such Dir im lib-Verzeichnis die keywords.txt
Such Dir die Sektion: # KEYWORD3 specifies structures
Mach da wo Du es willst aus RESERVED_WORD → RESERVED_WORD_3

Happy.

my_xy_projekt:
Das ist aber dann nur in der Vorlage für die zwei Klammerpaare gültig.
Um das auf Dauer festzulegen, musst Du A1 oder A15 vorgeben. Je nachdem, was mit der nächsten Ebene passieren soll.

Besoldungsordnung A ?

combie:
Besoldungsordnung A ?

Och combie,

ich dachte das Du soweit drin bist ....

Na dann:
astyle A1 oder A15
http://astyle.sourceforge.net/

Und für diejenigen, die sich hier Tipps und Tricks suchen und bisher nur Bahnhof verstanden:
In der formatter.conf, die sich unter ~/arduino[version]/lib/ befindet, können alle Einstellungen vorgenommen werden, die bei einem Druck auf STRG-T (bzw. den Menupunkt automatische Formatierung) durchgeführt werden.

Bei Sourceforge gibt es eine Beschreibung, welche Einstellungen möglich sind.
Diese reichen von Einrückungen der Ebenen, über die Behandlung von Tabulatoren etc. pp. bis hin zum genial formatierten und lesbaren Code.

Wichtiger Hinweis:
Es gibt verschiedene Möglichkeiten die Stylecommands einzubinden.
In meinem Beispiel bringen folgende Zeilen den gleichen Effekt in der formatter.conf:

style=allmann
A1

oder

style=vtk
A15

Wichtiger Hinweis 2
Die formatter.conf wird nur beim Start der Arduino.IDE einmalig eingelesen. Also unbedingt nach einer Änderung die IDE neu starten!!!

happy

Och combie,

ich dachte das Du soweit drin bist ....

Mal abgesehen, von dem voll dämlichen Spruch, bin ich dir für die Info sehr dankbar.

Hallo,

avr-gcc 10.3.0 ist fertig. Gebaut mit binutils v2.36.1. Gebe ich auf Anfrage raus.

Zusätzlich aus dem Microchip Devicepacks
ATtiny v1.9.337
ATmega v1.6.364
AVR-Dx v1.7.85
sind folgende µC hinzugefügt.

Von der “alten” Serie der ATmega328PB.

Von den neuen Serien mit UDPI Programmierung:
ATtiny 202, 204, 212, 214
ATtiny 402, 404, 406, 412, 414, 416, 417
ATtiny 804, 806, 807, 814, 816, 817
ATtiny 1604, 1606, 1607, 1614, 1616, 1617
ATtiny 3216, 3217
ATmega 808, 809
ATmega 1608, 1609
ATmega 3208, 3209
ATmega 4808, 4809
AVR32DB28, AVR32DB32, AVR32DB48
AVR64DB28, AVR64DB32, AVR64DB48, AVR64DB64
AVR128DB28, AVR128DB32, AVR128DB48, AVR128DB64

Mittels

sind die neuen ATtinys und mittels

die neuen ATmegas mit der Arduino IDE programmierbar

Man benötigt noch einen UPDI Programmer.

Ein ATmega4809 befindet sich bspw. auf dem
Arduino Nano Every und Arduino Uno WiFi Rev2

Ansonsten wie gehabt zu #7.

Etwas mehr Übersicht bei den COM Ports

Zum hochladen eines Programms auf einen Arduino wird man in der Regel den passenden COM Port auswählen müssen.
Arduinos mit 16U2, 8U2 und 32U4 erscheinen in der Port Auswahlliste mit dem Boardbezeichner
z.B. COM9(Arduino UNO)

Viele andere Boards erscheinen anonym, z.B. als COM14, COM15 usw.
Auch erscheinen in der Liste andere serielle Geräte, welche nichts, aber auch rein gar nichts, mit Arduino zu tun haben. Diese können sich sogar “verschlucken”, wenn sie als Arduino angesprochen werden.
Es wäre also schön diese kennzeichnen zu können.
Im später folgenden Beispiel betrifft das zwei meiner DMX Kontroller/Interfaces.

Was macht Arduino?
Beim anzeigen der Portliste, schaut es sich die VID und PID des Seriellen USB Gerätes an, untersucht die eingebundenen Boarddefinitionen, und wenn die VID/PID dort gefunden wird, wird der Boardname im Auswahlmenü angezeigt.

Diesen Mechanismus kann man “ausnutzen” in dem man eigene unvollständige Boards anlegt.

Hier ein paar Beispiele um ansonsten anonym erscheinenden Seriell Adapter mit einem Namen zu versehen.
Der passende Ort ist eine selbst angelegte boards.local.txt, neben einer der schon vorhandenen boards.txt Dateien.

Inhalt (Beispielhaft):

# wenn schon nicht das Board erkannt wird, dann wenigstens der Schnittstellenbaustein
boardFTDI232R.name=Board mit FTDI232R
boardFTDI232R.build.board=BOARDFTDI232R
boardFTDI232R.hide=
boardFTDI232R.vid.0=0x0403
boardFTDI232R.pid.0=0x6001

boardCH340.name=Board mit CH340
boardCH340.build.board=BOARDCH340
boardCH340.hide=
boardCH340.vid.0=0x1A86
boardCH340.pid.0=0x7523


boardCP210n.name=Board mit CP2102/CP2104
boardCP210n.build.board=BOARDCP210N
boardCP210n.hide=
boardCP210n.vid.0=0x10C4
boardCP210n.pid.0=0xEA60

boardCP2108.name=Board mit CP2108
boardCP2108.build.board=BOARDCP2108
boardCP2108.hide=
boardCP2108.vid.0=0x10C4
boardCP2108.pid.0=0xEA71

boardbluepill.name=BluePill
boardbluepill.build.board=ARM_BOARDBLUEPILL
boardbluepill.hide=
boardbluepill.vid.0=0x0483
boardbluepill.pid.0=0x5740

boardmarple.name=STM32 Marple Bootloader
boardmarple.build.board=ARM_BOARDMARPLE
boardmarple.hide=
boardmarple.vid.0=0x1EAF
boardmarple.pid.0=0x0004

boardDMX512.name=DMX Adapter
boardDMX512.build.board=BOARDDMX512
boardDMX512.hide=
boardDMX512.vid.0=0x16C0
boardDMX512.pid.0=0x05DC
boardDMX512.vid.1=0x6244
boardDMX512.pid.1=0x0451


# Arduino DUE native USB Port
boardBossa.name=DUEnative/Bossa
boardBossa.build.board=ARM_BOARDBOSSA
boardBossa.hide=
boardBossa.vid.0=0x03EB
boardBossa.pid.0=0x6124

Ein billig Nano erscheint dann als COM33(Board mit CH340) in der Liste und ein originaler Nano als COM3(Board mit FTDI232R)

** die Zahlen hinter dem COM werden von Win vergeben, werden also bei dir anders sein

Nachtrag:
Der Menuepunkt “Werkzeuge->Boardinformationen holen” wird auch, zum Teil, aus diesen Einträgen gespeist.

Danke, sehr nützlich und hilfreich!

Das musste ich sofort ausprobieren und siehe da, nun haben endlich auch meine Clon-Nanos (mit CH340) einen Namen, ebenso meine TTGO ESP32.

Gerade bei einem "Steuerrechner", wo mehrere USB-Serial-Geräte dran hängen, zusätzlich auch noch Buetooth (Serial) in Verwendung ist, kann die Port-Auswahlliste schon recht unübersichtlich werden.

Das ist wirklich eine "coole Sache" und eine echte Arbeitserleichterung!

Schön, dass es dir gefällt!

Gerade bei einem "Steuerrechner", wo mehrere USB-Serial-Geräte dran hängen, zusätzlich auch noch Buetooth (Serial) in Verwendung ist, kann die Port-Auswahlliste schon recht unübersichtlich werden.

Ja, so ähnlich siehts bei mir auch aus.
Ein halbes Dutzend erscheinen da immer.
Auch gerne mehr.

So viele habe ich nicht, aber ich empfinde diese Lösung als sehr angenehm.
Danke dafür.

Gruß Tommy

Nachtrag:
Oben die "build.board" Einträge hinzugefügt.
Ist nicht wichtig, aber vermeidet ein paar Meldungen.

combie:
Nachtrag:
Oben die “build.board” Einträge hinzugefügt.
Ist nicht wichtig, aber vermeidet ein paar Meldungen.

Perfekt!