Dass sich Routinen in die Quere kommen können, habe ich letztens noch
erfahren müssen. Man erinnere sich an die verrückte Idee, ein OLED mit
einem ATtiny4313 zu verbinden. Die USI-Routine kollidiert mit anderen
Routinen.
Eine Lösungsmöglichkeit bestand darin, vor der Ausgaberoutine das
Statusregister zu sichern. Allerdings diesen String in die
Ausgaberoutine selbst einzubinden, klappt auch nicht immer, besser war
es, vor dem Sprung in die Ausgaberoutine, also Sicherung der
Rücksprungadresse auf dem Stack, erst das Statusregister zu sichern,
dann erst den Sprung auf das Label "Ausgabe" durchzuführen.
Die Flags müssen gesichert werden.
Und so verhält es sich auch mit den Include und Macros. Und Libraries
bei Arduino, die sich durchaus in die Quere kommen können.
Die Wire.h darf bei U8lib nicht includiert werden.
Bei dem Sketch für GPS ist das OLED in I2C ansprechbar, das GPS Modul
u-blox NEO-6M Chip mit serial 9k6 8N1.
Also hier sind die Serielle Schnittstelle und I2C drin und beißen sich
nicht.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>
Der TO hat hardware.serial. Man nehme einmal testweise softwareserial.
Vielleicht ist das die Lösung für sein Problem.
ciao
gustav
P.S.: Interessant noch, dass TinyGPS++ also plus plus angegeben wird,
der Compiler nimmt aber nur einmal plus.