[Arduino IDE] Feinheiten und Tricks

Hi

Feinheiten und Tricks

Hier möchte ich mal einen Sammel Thread für die Feinheiten und Tricks erstellen, welche einem das Leben mit der Arduino IDE erleichtern (könenn)
Es geht also eher nicht um Programmiertricks/Software, sondern um das "tunen" der IDE.

Ein paar Tricks und Schlichen habe ich schon im Laufe der Zeit hier im Forum publiziert. Die sind auch hier verlinkt.

Falls ihr auch "sowas" kennt/nutzt, dann hängt es bitte an diesen Thread.
Ich setze dann in diesem Eingangsposting einen Link auf den Beitrag, damit man schnell den betreffenden Beitrag findet.

Ist das alles überhaupt eine gute Idee?


Tricks und Schlichen in diesem Thread:

Erleichterungen bei der Bedienung der IDE

Code falten, bzw "Code-Folding"

Individuelle Farbeinstellungen für den Editor

Ausblenden von überflüssigen Boards incl. Liste für original Arduino AVR Boards
Eine Liste für ESP8266 Boards
Eine Liste für ESP32 Boards
Eine Liste für weitere Boards

Frischeste AVR-GCC Tool Chain integrieren (GCC-9.2.0)

Assembler pur, mit der Arduino IDE

Editieren von eigenen und fremden Libraries

Ändern der Datei->Neu *.ino Vorlage

Etwas mehr Übersicht bei den COM Ports


Vorher schon publizierte Tricks und Schlichen:

Verbessern(?) des Menüpunktes: Hochladen mit Programmer
Zweck:
Gleichzeitiges Hochladen von Programm, Bootloader und EEPROM Ihnalt per ISP Programmer

Nano Board mit UNO Konfiguration nutzen
Zweck:
Leider ist bei der neuen/aktuellen Nano Boarddefinition nicht der volle Flash nutzbar. Es bleibt ein ungenutzter Bereich liegen.
Dieses schafft Abhilfe

Beheben von "internal compiler error: Segmentation fault"

Formatierte Ausgabe und scannen von Float Zahlen

Automatisches erzeugen von ASM Dateien

Erleichterungen bei der Bedienung der IDE:

Schnelles Scrollen im Boards Menü:

  • Das Boards Menü öffnen.
  • Taste A drücken (und festhalten)
  • Scrollrad der Maus drehen

Einfaches ändern der Schriftgröße im Editor:

  • Mauszeiger ins Editor Fenster setzen
  • Die Strg Taste drücken (und festhalten)
  • Am Scrollrad der Maus drehen

Ausblenden von überflüssigen Boards

Das Boards Menü zeigt alle installierten Boards. Einerseits ganz schön, aber meist hat man diese nicht alle. Die störenden/ überflüssigen Boards kann man verstecken.

Anleitung:
Hier ein Beispiel um die meisten der Arduino Boards auszublenden.
Man sucht sich die betreffende boards.txt Datei.
Daneben legt man eine boards.local.txt mit folgendem Inhalt:

yun.hide=
#uno.hide=
diecimila.hide=
#nano.hide=
#leonardo.hide=
megaADK.hide=
#mega.hide=
leonardoeth.hide=
micro.hide=
esplora.hide=
mini.hide=
ethernet.hide=
fio.hide=
bt.hide=
LilyPadUSB.hide=
lilypad.hide=
#pro.hide=
atmegang.hide=
robotControl.hide=
robotMotor.hide=
gemma.hide=
circuitplay32u4cat.hide=
yunmini.hide=
chiwawa.hide=
one.hide=
unowifi.hide=

Alle mit # auskommentierten Boards werden noch im Boards Menü angezeigt.
Die anderen Boards, die ohne #, werden ausgeblendet.

Es bleiben also nur noch diese in der Arduino Boardsliste erhalten.

  • UNO
  • Nano
  • Leonardo
  • Mega
  • ProMini

Für andere Boarddefinitionen (ESP, STM32 usw.) geht man entsprechend vor.

Hier mal die beiden Menüs im Vergleich:

Original Menü:

Reduziertes Menü:
reduziert.jpg

reduziert.jpg

Hallo combie,
das ist mal eine sehr gute Idee.
Danke dafür.
Da wird sicher sehr vielen aufgezeigt, was alles möglich ist.

Auch mir......

Combie, das ist eine spitzenmässige Idee!
LG Stefan

Hallo combie,
das ist mal eine sehr gute Idee.

Das kann ich nur unterschreiben!

Zum Themenblock
„Erleichterungen bei der Bedienung der IDE“
gäbe es noch eine m.E. wichtige Sache zu erwähnen:

Code falten, bzw "Code-Folding"

Das Thema „Code-Folding“ wird irgendwie recht stiefmütterlich behandelt und wahrscheinlich kaum wirklich eingesetzt. Voraussetzung ist, dass unter „Voreinstellung“ die Option „Kodefaltung“ eingeschaltet ist. Danach kann man bequem einzelne Funktions-Blöcke oder Kommentar-Bereiche optisch „zuklappen“ oder „aufklappen“. Eigentlich nix Besonderes...

Aber bei meinem „SudokuSolver UNO“ und bei meiner „ChessEngine UNO“ suchte ich zunächst jedoch vergeblich nach der Option, ALLES auf einmal umzuschalten. Nach etwas intensiveren Befragungen der internen Suchfunktion kam ich dann dahinter, dass man auch sämtliche Funktionen etc. innerhalb eines TABS in einem Rutsch beliebig umschalten kann. DAS ALLEIN hat mir dann SEHR geholfen den Überblick bei diesen doch recht großen Programmen zu behalten.

Der Weg dort hin: Bei eingeschalteter Option „Kodefaltung“ im Quelltext „rechte Maustaste“, und dort im Kontext-Menü den Punkt „Klappung“ aufrufen. Dahinter verbirgt sich so einiges Gutes, was mir anfangs sehr fehlte. Heute will ich nicht mehr darauf verzichten!

73 de RudiDL5

„Code-Folding"

Fein!
Habe ich oben eingetragen.

Wenn dir der Titel nicht gefällt, den ich ihm gegeben habe, dann gib deinem Beitrag doch bitte eine fette Überschrift, die ich dann oben übernehmen kann.

Wo Du mir gerade über den Weg läufst .....
Das erinnert mich an diesen Thread

Da ist mir ein ASM Weg untergekommen.
Den suche ich mal gleich zusammen.

Edit: Hier das Zusammengesuchte

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.3.0. https://gcc.gnu.org/ Darauf beruht die avr-gcc 9.3.0 Toolchain.
Voreingestellt ist C++17. C++20 (Option -std=gnu++2a) ist auch möglich, ist jedoch offiziell noch experimentell.
Mit C++17 ist z.Bsp. auch if constexpr anwendbar. Für alle wahnsinnigen Optimierer unter uns. :slight_smile:
Nützlich sind auch die optisch bessere Darstellung der Warnungen und Fehler beim kompilieren.

Zusätzlich aus dem Microchip Devicepack hinzugefügt sind folgende µC.
Von der "alten" Serie der Atmega328PB.
Von der neuen Serie mit UDPI Programmierung
ATmega808, 809, 1608, 1609, 3208, 3209, 4808, 4809 und
ATtiny1614, 1616, 1617, 3214, 3216, 3216, 3217.
Die neuen Serien sind mit der Arduino IDE noch nicht nutzbar. Ist eher was für Atmel Studio Nutzer die wissen wie man mittels UDPI programmiert. Ob es auch mit Visual Studio funktioniert kann ich nicht sagen, habe ich nicht installiert. Denke aber ja.

Falls sich jemand findet der die Arduino IDE aufbohrt damit man mittels Software Programmer, beruht auf Python, über UDPI flashen kann, dann wäre das der Hammer. Es muss nur eine weitere Batchdatei o.ä. in der Art geschrieben werden die wiederum ein Pythonscript aufruft. An Hardware benötigt man nur einen USB-Serial-TTL Adapter und einen 4,7k Widerstand. Damit hätten alle anderen Programmer ausgedient, außer für Hardwaredebugging. Das nutzen wir IDE'linge aber sowieso nicht. Den Rest macht die Software. Dann wäre die IDE ins nächste Jahrtausend katapultiert. Man kann das auch schon jetzt per Batchdatei machen. Man muss nur immer den Namen vom kompilierten .hex File händisch eintragen. Das müsste autoelektrisch geschehen. Vielleicht kann man das auch in die IDE integrieren. Theoretisch Programmer "UDPI" auswählen und die IDE macht wie bisher den Rest. Den Namen vom Projekt kennt sie ja. Wenn sich jemand ambitioniert sieht, dann mache ich einen neuen Thread auf und stelle weitere gesammelte Infos zur Verfügung. Falls sich das noch nicht selbst verbreitet haben sollte.

Edit:
Ich denke es ist nicht mehr notwendig darüber nachzudenken. MCUdude und Spencekonde haben dafür Großartiges geleistet.

Ende Edit

Zurück zum Thema.
.zip entpacken, bei mir in C:\avrToolchain
Darin liegen all meine Toolchains die sich angesammelt haben.
Aktuell C:\avrToolchain\avr-gcc-9.3.0-mingw64-selfmade\

Dann kommt die von combie schon angesprochene platform.local.txt ins Spiel.
Bei mir zu finden C:\Program Files (x86)\Arduino\hardware\arduino\avr
Diese hat bei mir den Inhalt wie combie schon einmal zeigte.
Wichtig ist die Pfadangabe auf das Erste \bin Unterverzeichnis.
Ansonsten könnt ihr das Verzeichnis darüber benennen wie ihr wollt.

compiler.path=C:\avrToolchain\avr-gcc-9.3.0-mingw64-selfmade/bin/
compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++17 -fno-exceptions -fpermissive -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto
compiler.cpp.extra_flags=-fno-sized-deallocation  -fconcepts

Wer mittels Boardmanager die "Erweiterung" auf die 1.8.2 installiert hat und damit avr-gcc 7.3. nutzt, der findet die Datei irgendwo unter C:\Username\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\ 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.

Super Idee, dieses Thema hier zu behandeln
und dann auch gleich eine Frage:
Kann man die IDE irgendwie dazu bewegen, nicht immer den Sketch neu zu kompilieren, wenn bei einem Upload Fehler (falscher COM, Timout o.ä.) aufgetreten sind.

Das ist eine sehr gute Frage. Ich kopiere da als Workaround die Zeile mit dem avrdude bzw Python Skript und füge sie in eine DOS-Box ein.

DOS-Box heißt glaube heute comand prompt. cmd.exe

Kann man die IDE irgendwie dazu bewegen, nicht immer den Sketch neu zu kompilieren, wenn bei einem Upload Fehler (falscher COM, Timout o.ä.) aufgetreten sind.

Mir nicht bekannt.

Aber dennoch eine gute Idee, denke ich mal.
Gerade bei den größeren ARM und ESP, da kann das schon nerven.

Eine Möglichkeit wird vielleicht es geben:
Die *.hex liegt dann ja fertig gebaut im Build Verzeichnis.
Man könnte, im Werkzeuge Menü, eigene Plugins unterbringen.
Diese Plugins werden in Java geschrieben.

combie:
Eine Möglichkeit wird vielleicht es geben:
Die *.hex liegt dann ja fertig gebaut im Build Verzeichnis.
Man könnte, im Werkzeuge Menü, eigene Plugins unterbringen.
Diese Plugins werden in Java geschrieben.

Demnach müßte sich ein Java Programmierer angesprochen fühlen. :slight_smile: Die Hoffnung stirbt zuletzt.

Assembler pur, mit der Arduino IDE

Es gibt mehre Möglichkeiten Assembler in unsere Arduino Programme einzuflechten.
Hier möchte ich eine reine Assembler Lösung präsentieren.
So als Beispiel, wie weit man es mit der Arduino IDE auch in die Assembler Richtung treiben kann

Damit die IDE überhaupt kompiliert, muss mindestens eine *.ino her.
In diesem Fall bleibt sie quasi leer:

/*
 * voll leer
 */

In einem zweiten Tab legt man eine *.S Datei.
Ich habe sie hier mal main.S genannt:

#include <avr/io.h>


// die Arduino typische LED an PB5 
// UNO, Nano und ProMini (alle ATMega328P)
// bei 16MHz Takt wird mit ca 0,5Hz an PB5 gewackelt


outpin = PB5         // LED_BUILTIN  
#define worker  r24  // Arbeitsregister

.section .text,"ax",%progbits  // https://www.nongnu.org/avr-libc/user-manual/mem_sections.html
.global main                   // dem Linker bekannt geben
.global TIMER1_OVF_vect        // dem Linker bekannt geben


main:  
  sbi _SFR_IO_ADDR(DDRB), outpin  // Set to Output

  // timer1 initialisieren
  ldi worker, 0                  // Normal Mode
  sts TCCR1A, worker  
           
  ldi worker, (1 << CS12)        // Clock/256
  sts TCCR1B, worker
  
  ldi worker, (1 << TOIE1)       // overflow interrupt enable
  sts TIMSK1, worker

  sei                         // global interrupt enable  
   

mainloop: rjmp mainloop       //  empty main loop


TIMER1_OVF_vect:
    sbi _SFR_IO_ADDR(PINB), outpin // toggle 
    reti

Fertig! Das wars schon.
Auf einen UNO o.ä. gespielt, blinkt es vor sich hin.

Es ist nur einen rudimentäres Beispiel:
-Ein Pin wird zum Output gemacht
-Timer 1 initialisiert
-Es wird in eine Endlosschleife gestürzt

Der Timer1 overflow Interrupt toggelt den Pin.

Der Speicherverbrauch: (damit man auch mal den Erfolg der Show sieht)

:---------------------------------:----------:--------:   
| [b]Verfahren[/b]                       |  [b]Flash[/b]   |  [b]RAM[/b]   |
:---------------------------------:----------:--------:   
| Diese Assembler Version         | 160 Byte | 0 Byte |
| Beispiele/01.Basics/Blink       | 976 Byte | 9 Byte |
| Beispiele/01.Basics/BareMinimum | 440 Byte | 9 Byte |
| *.ino nur mit "int main()"      | 134 Byte | 0 Byte |
:---------------------------------:----------:--------:

Zum Schluss noch der generierte Code, durch den Disassembler genudelt.
Ein großer Teil besteht aus den Interrupt Vektoren und der C üblichen Stackvorbereitung

c:\temp\arduino_build_499643/AssemblerSchlank.ino.elf:     file format elf32-avr


Disassembly of section .text:

00000000 <__vectors>:
   0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
   4: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
   8: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
   c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  10: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  14: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  18: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  1c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  20: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  24: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  28: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  2c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  30: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  34: 0c 94 4c 00 jmp 0x98 ; 0x98 <__vector_13>
  38: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  3c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  40: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  44: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  48: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  4c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  50: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  54: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  58: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  5c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  60: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
  64: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>

00000068 <__ctors_end>:
  68: 11 24       eor r1, r1
  6a: 1f be       out 0x3f, r1 ; 63
  6c: cf ef       ldi r28, 0xFF ; 255
  6e: d8 e0       ldi r29, 0x08 ; 8
  70: de bf       out 0x3e, r29 ; 62
  72: cd bf       out 0x3d, r28 ; 61
  74: 0e 94 40 00 call 0x80 ; 0x80 <main>
  78: 0c 94 4e 00 jmp 0x9c ; 0x9c <_exit>

0000007c <__bad_interrupt>:
  7c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>

00000080 <main>:
.global main                   // dem Linker bekannt geben
.global TIMER1_OVF_vect        // dem Linker bekannt geben


main:  
  sbi _SFR_IO_ADDR(DDRB), outpin  // Set to Output
  80: 25 9a       sbi 0x04, 5 ; 4

  // timer1 initialisieren
  ldi worker, 0                  // Normal Mode
  82: 80 e0       ldi r24, 0x00 ; 0
  sts TCCR1A, worker  
  84: 80 93 80 00 sts 0x0080, r24 ; 0x800080 <__TEXT_REGION_LENGTH__+0x7e0080>
           
  ldi worker, (1 << CS12)        // Clock/256
  88: 84 e0       ldi r24, 0x04 ; 4
  sts TCCR1B, worker
  8a: 80 93 81 00 sts 0x0081, r24 ; 0x800081 <__TEXT_REGION_LENGTH__+0x7e0081>
  
  ldi worker, (1 << TOIE1)       // overflow interrupt enable
  8e: 81 e0       ldi r24, 0x01 ; 1
  sts TIMSK1, worker
  90: 80 93 6f 00 sts 0x006F, r24 ; 0x80006f <__TEXT_REGION_LENGTH__+0x7e006f>

  sei                         // global interrupt enable  
  94: 78 94       sei

00000096 <mainloop>:
   

mainloop: rjmp mainloop       //  empty main loop
  96: ff cf       rjmp .-2       ; 0x96 <mainloop>

00000098 <__vector_13>:


TIMER1_OVF_vect:
    sbi _SFR_IO_ADDR(PINB), outpin // toggle 
  98: 1d 9a       sbi 0x03, 5 ; 3
    reti
  9a: 18 95       reti

0000009c <_exit>:
  9c: f8 94       cli

0000009e <__stop_program>:
  9e: ff cf       rjmp .-2       ; 0x9e <__stop_program>

Doc_Arduino:
Demnach müßte sich ein Java Programmierer angesprochen fühlen. :slight_smile: Die Hoffnung stirbt zuletzt.

Ja, das wäre schon schön...

--

An alle:
--> Einen herzlichen Dank für die Blumen und den Zuspruch.

Editieren von eigenen und fremden Libraries

Erstmal gibts zu Libs folgendes zu sagen:
Arduino IDE 1.5: Library specification
Die Struktur, Möglichkeiten und Grenzen werden dort definiert.

Beispiele editieren:
Erwähnung soll hier insbesondere dieses praktische Feature finden.
Wenn man eine .development Datei in den jeweiligen Library Ordner wirft, kann man die zugehörigen Beispiele in der IDE modifizieren und speichern.
Desweiteren wird diese Lib nicht mehr im Bibliotheksverwalter angezeigt und ist so auch vom Update ausgeschlossen.

Diese .development Datei darf durchaus leer sein, es ist nur der Name, welcher eine Rolex spielt.
Wenn man in einer meiner Libraries eine solche Datei findet, dann habe ich sie da vergessen. Ich nutze sie manchmal um dort temporäre Notizen abzulegen.
Dann einfach löschen…

Library Quellcode Editieren:
Die IDE kann *.c, *.h, *.cpp und *.S Dateien öffnen, aber nur wenn eine *.ino im gleichen Ordner liegt und diese auch den Namen des Ordners trägt. Ohne die *.ino geht nix

Bei alten Libs(vor 1.5.0), oder selbst gebauten, liegen alle . Dateien meist im Hauptordner der Lib.
Das ist dann der richtige Ort für die *.ino, mit dem Namen des Ordners.

Bei modernen Libs, ab 1.5.0 findet sich meist ein src Verzeichnis, wo der ganze Quellcode drin steckt.
In den src Ordner sollte man eine src.ino ablegen.

Beim Öffnen der *.ino mit der IDE läd die IDE auch die ganzen anderen Dateien, aus dem Ordner, in Tabs und man kann sie bequem manipulieren, speichern und testen.


Wenn man fertig ist mit bearbeiten, den ganzen Quatsch wieder weg löschen, und gut ist.

Echt coole Sache, einer der Besten Tipps wie ich finde. Licht im Kaos. :slight_smile:

Deswegen eine weitere vorbereitete Liste zum ausblenden nicht benötigter ESP8266 Boards
C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2
auch hier eine boards.local.txt anlegen mit folgenden Inhalt und erwünschte Einträge mit # auskommentieren

generic.hide=             # Generic ESP8266 Module
esp8285.hide=             # Generic ESP8285 Module
espduino.hide=             # ESPDuino (ESP-13 Module)
huzzah.hide=             # Adafruit Feather HUZZAH ESP8266
inventone.hide=         # Invent One
cw01.hide=                 # XinaBox CW01
espresso_lite_v1.hide=     # ESPresso Lite 1.0
espresso_lite_v2.hide=     # ESPresso Lite 2.0
phoenix_v1.hide=         # Phoenix 1.0
phoenix_v2.hide=         # Phoenix 2.0
nodemcu.hide=             # NodeMCU 0.9 (ESP-12 Module)
nodemcuv2.hide=         # NodeMCU 1.0 (ESP-12E Module)
modwifi.hide=             # Olimex MOD-WIFI-ESP8266(-DEV)
thing.hide=             # SparkFun ESP8266 Thing
thingdev.hide=             # SparkFun ESP8266 Thing Dev
esp210.hide=             # SweetPea ESP-210
d1_mini.hide=             # LOLIN(WEMOS) D1 R2 & mini
d1_mini_pro.hide=         # LOLIN(WEMOS) D1 mini Pro
d1_mini_lite.hide=         # LOLIN(WEMOS) D1 mini Lite
d1.hide=                # WeMos D1 R1
espino.hide=             # ESPino (ESP-12 Module)
espinotee.hide=         # ThaiEasyElec's ESPino
wifinfo.hide=             # WifInfo
arduino-esp8266.hide=     # Arduino
gen4iod.hide=             # 4D Systems gen4 IoD Range
oak.hide=                 # Digistump Oak
wifiduino.hide=         # WiFiduino
wifi_slot.hide=         # Amperka WiFi Slot
wiolink.hide=             # Seeed Wio Link
espectro.hide=             # ESPectro Core

Schön, dass es dir gefällt!
Und danke, für die Liste.

Habs auch mal im ersten Beitrag verlinkt.

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

Individuelle Farbeinstellungen für den Editor

Vielleicht nicht für jeden interessant, aber in manchen Situationen hatte ich mir gewünscht, die Farbeinstellungen im Editor ändern zu können, z.B. zu speziellen Dokumentations-Zwecken. Eine Suche danach ergab dann folgendes Ergebnis:

Im Arduino Programm-Verzeichnis (bei mir /Arduino_188) befindet sich ein Ordner "lib", darin gibt es einen Unterordner "theme". Und innnerhalb .../Arduino_188/lib/theme befindet sich die sehr interessante Datei theme.txt

In dieser Datei (die man sich vorsichtshalber zuvor sichern sollte) kann man eine Menge optische Einstellungen vornehmen, die einem "Optic-Junky" zur Genüge reichen könnte:

arduino_IDE.jpg

Derartige Änderungen zu testen ist jedoch etwas mühseelig, weil die Einstellungen dort nur beim Start des Programmes abgefragt werden. Also: "Änderung(en) vornehmen - Progi neu starten - Prüfen - Progi schließen" ... und ggf. erneut ändern.

LG
RudiDL5

arduino_IDE.jpg

Jawoll!

Danke, habe ich oben verlinkt.

So nun auch ich mit ESP32er

Deswegen eine weitere vorbereitete Liste zum ausblenden nicht benötigter ESP32 Boards
C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4
auch hier eine boards.local.txt anlegen mit folgenden Inhalt und erwünschte Einträge mit # auskommentieren

esp32.hide=                           #ESP32 Dev Module
esp32wrover.hide=                           #ESP32 Wrover Module
pico32.hide=                           #ESP32 Pico Kit
tinypico.hide=                           #TinyPICO
magicbit.hide=                           #MagicBit
turta_iot_node.hide=                           #Turta IoT Node
ttgo-lora32-v1.hide=                           #TTGO LoRa32-OLED V1
ttgo-t1.hide=                           #TTGO T1
cw02.hide=                           #XinaBox CW02
esp32thing.hide=                           #SparkFun ESP32 Thing
nina_w10.hide=                           #u-blox NINA-W10 series (ESP32)
widora-air.hide=                           #Widora AIR
esp320.hide=                           #Electronic SweetPeas - ESP320
nano32.hide=                           #Nano32
d32.hide=                           #LOLIN D32
d32_pro.hide=                           #LOLIN D32 PRO
lolin32.hide=                           #WEMOS LOLIN32
pocket_32.hide=                           #Dongsen Tech Pocket 32
WeMosBat.hide=                           #WeMos WiFi&Bluetooth Battery
espea32.hide=                           #ESPea32
quantum.hide=                           #Noduino Quantum
node32s.hide=                           #Node32s
hornbill32dev.hide=                           #Hornbill ESP32 Dev
hornbill32minima.hide=                           #Hornbill ESP32 Minima
firebeetle32.hide=                           #FireBeetle-ESP32
intorobot-fig.hide=                           #IntoRobot Fig
onehorse32dev.hide=                           #Onehorse ESP32 Dev Module
featheresp32.hide=                           #Adafruit ESP32 Feather
nodemcu-32s.hide=                           #NodeMCU-32S
mhetesp32devkit.hide=                           #MH ET LIVE ESP32DevKIT
mhetesp32minikit.hide=                           #MH ET LIVE ESP32MiniKit
esp32vn-iot-uno.hide=                           #ESP32vn IoT Uno
esp32doit-devkit-v1.hide=                           #DOIT ESP32 DEVKIT V1
esp32-evb.hide=                           #OLIMEX ESP32-EVB
esp32-gateway.hide=                           #OLIMEX ESP32-GATEWAY
esp32-poe.hide=                           #OLIMEX ESP32-PoE
esp32-poe-iso.hide=                           #OLIMEX ESP32-PoE-ISO
esp32-DevKitLipo.hide=                           #OLIMEX ESP32-DevKit-LiPo
espino32.hide=                           #ThaiEasyElec's ESPino32
m5stack-core-esp32.hide=                           #M5Stack-Core-ESP32
m5stack-fire.hide=                           #M5Stack-FIRE
m5stick-c.hide=                           #M5Stick-C
odroid_esp32.hide=                           #ODROID ESP32
heltec_wifi_kit_32.hide=                           #Heltec WiFi Kit 32
heltec_wifi_lora_32.hide=                           #Heltec WiFi LoRa 32
heltec_wifi_lora_32_V2.hide=                           #Heltec WiFi LoRa 32(V2)
heltec_wireless_stick.hide=                           #Heltec Wireless Stick
espectro32.hide=                           #ESPectro32
CoreESP32.hide=                           #Microduino-CoreESP32
alksesp32.hide=                           #ALKS ESP32
wipy3.hide=                           #WiPy 3.0
bpi-bit.hide=                           #BPI-BIT
wesp32.hide=                           #Silicognition wESP32
t-beam.hide=                           #T-Beam
d-duino-32.hide=                           #D-duino-32
lopy.hide=                           #LoPy
lopy4.hide=                           #LoPy4
oroca_edubot.hide=                           #OROCA EduBot
fm-devkit.hide=                           #ESP32 FM DevKit
frogboard.hide=                           #Frog Board ESP32
esp32cam.hide=                           #AI Thinker ESP32-CAM
sparkfun_lora_gateway_1-channel.hide=                           #SparkFun LoRa Gateway 1-Channel
ttgo-t-watch.hide=                           #TTGO T-Watch
d1_mini32.hide=                           #WEMOS D1 MINI ESP32
gpy.hide=                           #Pycom GPy
vintlabs-devkit-v1.hide=                           #VintLabs ESP32 Devkit

Gruß
DerDani