@MaFu: Vielen Dank für dein AnalogRead - Beschleuniger Beispiel. Du meinst das hier unten angefügte ?
Werd ich mal tiefer einsteigen, was die 3 Bits im ADCSRA Register bedeuten und was für Nebeneffekte das wohl hat.
Danach kann man ganz normal analogRead aufrufen, oder muss man weiter direkt auf Register-Ebene programmieren ?
Um nur Werte für Trends zu übertragen, kann man auch ein bisschen an der Genauigkeit sparen
byte value = analogRead(0) >> 2;
und dadurch die Übertragungsgeschwindigkeit verdoppeln ( gegenüber deinem Vorschlag von 2 Byte für 0...0x3FF )
Eventuell ein (selten vorkommendes) Byte als "Escape" Zeichen definieren ( z.B. 0xFC):
Falls der zu übertragende Wert tatsächlich 0xFC ist, werden 2 Bytes FC übertragen, ansonsten kommt nach 0xFC irgendwas anderes. (z.B. ASCII Text, die Länge eines nächsten Datenblocks, etc.)
Hier der Code aus MaFu's link:
//An den Anfang des Sketches:
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
//Und dann in die setup() Routine:
sbi(ADCSRA,ADPS2);
cbi(ADCSRA,ADPS1);
cbi(ADCSRA,ADPS0);