Ja, ich kann auch besser praktisch durch Versuch und Irrtum lernen, wobei eine Doku zum Nachschlagen schon auch wichtig ist. Bei den Beispielen gibt es gute und auch schlechte und es ist schwer, da zu unterscheiden. Außerdem gibt es verschiedene Blickwinkel. Schau'n wir uns mal das Beispiel aus #7 an:
// constants won't change. Used here to set a pin number:
const int ledPin = LED_BUILTIN;// the number of the LED pin
- LED_BUILTIN ist die konstante Festlegung eines Wertes mit dem Pin, an dem eine LED angeschlossen ist. Bei einem UNO ist das 13, was man wissen muß. Das ist gut gemeint, aber so ganz am Anfang auch kryptisch. Ich hatte es anfänglich nicht verstanden, möglicherweise mein Problem

- Der Typ
int
ist Standard, aber benötigt zwei Byte auf einem UNO, der knapp ist mit Resourcen. Besser finde ich daher byte
oder uint8_t
als Typ, weil der nur ein Byte benötigt und vorzeichenlos ist.
- Aber der optimierende Kompiler erkennt das Einsparpotential und nutzt trotz
int
nur ein Byte.
Ups! Was also tun?
Höhere Programmiersprachen sind von Menschen für Menschen gemacht, weshalb ich einen Stil bevorzuge, bei dem ich einem imaginären Leser etwas mitteilen kann:
const
sagt, dieser Wert soll nicht verändert werden.
byte
oder uint8_t
sagt, alle Pins haben Werte kleiner 255 und passen in ein Byte.
ledPin
ist ein Name für einen Pin, an der eine LED dranhängt.
Dem optimierenden Kompiler überlasse ich dann die Optimierung.
In naher Zukunft bin dann ich der nicht mehr imaginäre Leser und freue mich über einen mir verständlichen Programmierstil 
int ledState = LOW; // ledState used to set the LED
Der Typ int
gefällt mir hier überhaupt nicht, meine Reaktion: "Da hat einer nicht nachgedacht!" Beim UNO ist Variablenspeicher rar. Der Zustand eines digitalen Eingangs kann aber nur HIGH oder LOW sein, es genügt also ein Bit. Der Typ int
hat aber sechzehn, was für eine Verschwendung!
Wenn Du bool ledState = LOW;
schreibst, gibst Du dem Kompiler die Möglichkeit, das Beste daraus zu machen und dem imaginären Leser eine klare Information.
const long interval = 1000; // interval at which to blink (milliseconds)
Da das Intervall positiv ist, bevorzuge ich const unsigned long interval = 1000;
oder const uint32_t interval = 1000;
als Typ.
Es geht auch etwas kürzer:
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite( ledPin, !digitalRead(ledPin) );
}
}
Mein Tipp: Wenn Du nicht sicher bist, konsultiere eine Doku Deiner Wahl und wenn Du dann immer noch unsicher bist, dann frage hier einfach nochmal 
Sprach-Referenz
Darüberhinaus auch C++ Reference
Jetzt viel Spaß bei der restlichen Diskussion 