Hallo zusammen,
ich bin neu hier und möchte mich kurz vorstellen.
Ich bin 54, aus Österreich und Modellbahnfreak.
Leider nicht programmiertechnisch fit und auch sonst kein Elektronik Spezialist.
Also Anfänger und Ahnungsloser!
Aber für die Modellbahn brauche ich den Arduino.
Da hab ich mit einem Freund, der mir beim programmieren geholfen hat, 3 Displays verbaut, welche auf der Modellbahn eingebaut worden sind. Die Displays sollen die Bahnsteiganzeigen simulieren.
Problem, der Arduino UNO V3 muss unter der Platte montiert werden, die Kabellänge ergibt sich daraus zwingend - sind so um die 1,2 Meter.
Verwendet wurden einzelne Computerlitzen, nicht verdrillt, nicht geschirmt.
Ich wisst was jetzt kommt - bis so um die 80cm geht das problemlos, darüber eigentlich kaum bis nicht mehr.
Die 1,3" OLED haben 4 Kabel und können mit 3,3 und 5 Volt betrieben werden.
Angeschlossen sind die am Ausgang A4 und A5.
Jetzt ist es so, dass manch ein Sketch, der in Modellbahnforen rumgeistert funktioniert, aber nicht für meine Bedürfnisse passt, andere gehen nicht - ich gehe daher davon aus, dass im Sketch was eingestellt werden kann, damit die längeren Kabel funktionieren.
Ich hab schon viel gelesen hier - von PullUp Widerständen, Range Extendern, etc.
Nur leider habe ich dafür keine für mich verständliche Anleitung gefunden.
Ich habe schon das mit den Widerständen probiert - in die beiden Datenleitungen sollen die rein? Richtig? Ich hab 10k, 4,7k und 2,2k probiert - immer in beiden Leitungen direkt am Arduino - auf der Displayseite ist mir dies eigentlich nicht möglich.
Aber vielleicht war dies absolut falsch?
Was könnte ich sonst noch tun - auf einer andern Seite hab ich gelesen, dass diese Wiederstände auch im Sketch aufgerufen werden können (sollen im Chip verbaut sein), ein anderer schreibt von Baud Übertragungen, die zurückgefahren werden sollten, usw.
Es ist hier sicherlich ein User unterwegs, der sich meiner annimmt
Ich kopiere hier mal den Sketch rein, vielleicht hilft dies?
#include <Arduino.h>
#include <U8x8lib.h>
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
char Ziel[16];
char Via[16];
char Gleis[16];
char Zug[16];
char Zugname[10];
char Zeit[6];
char Lauftext1[16];
char Lauftext2[16];
char Richtung[4];
char Ziel1[14];
char Gleis1[4];
char Ziel2[14];
char Gleis2[4];
char Ziel3[14];
char Gleis3[4];
void setup(void) {
u8x8.begin();
u8x8.setPowerSave(0);
u8x8.setFont(u8x8_font_open_iconic_thing_2x2);
u8x8.drawString(6,0,"L");
u8x8.setFont(u8x8_font_amstrad_cpc_extended_f);
u8x8.drawUTF8(0,2," Herzlich");
u8x8.drawUTF8(0,4," willkommen");
u8x8.drawUTF8(0,6,"in Innsbruck!");
Serial.begin(115200);
}
void loop(void){
if (Serial.available() >0) {
Serial.begin(115200);
String incomingstring = Serial.readString();
String temp = "1";
int i;
char delimiter[] = "/";
char *p;
char string[128];
int temp2;
int temp3;
String words[10];
temp = incomingstring.substring(0,1);
incomingstring.toCharArray(string, sizeof(string));
i = 0;
p = strtok(string, delimiter);
while(p && i < 10)
{
words[i] = p;
p = strtok(NULL, delimiter);
++i;
}
Serial.println(words[0]);
Serial.println(words[1]);
Serial.println(words[2]);
Serial.println(words[3]);
Serial.println(words[4]);
Serial.println(words[5]);
Serial.println(words[6]);
Serial.println(words[7]);
Serial.println(words[8]);
Serial.println(words[9]);
if (words[0] == "A") {
u8x8.setInverseFont(0);
words[1].toCharArray(Gleis,16);
words[2].toCharArray(Zug,16);
words[3].toCharArray(Zugname,10);
words[4].toCharArray(Zeit,6);
words[5].toCharArray(Via,16);
words[6].toCharArray(Ziel,16);
words[7].toCharArray(Lauftext1,16);
words[8].toCharArray(Lauftext2,16);
words[9].toCharArray(Richtung,4);
u8x8.clear();
u8x8.setFont(u8x8_font_open_iconic_arrow_2x2);
Serial.println(Richtung);
if (words[9] == "S") {
Serial.println(Richtung);
u8x8.drawString(12,0,"A");
}
if (words[9] == "N") {
Serial.println(Richtung);
u8x8.drawString(12,0,"B");
}
u8x8.setFont(u8x8_font_px437wyse700a_2x2_f);
u8x8.drawString(14,0,Gleis);
if (words[6].length() > 8) {
u8x8.setFont(u8x8_font_amstrad_cpc_extended_f);
}
u8x8.drawString(0,3,Ziel);
u8x8.setFont(u8x8_font_amstrad_cpc_extended_f);
u8x8.drawString(0,0,Zug);
if (words[3] != "-") {
u8x8.drawString(0,1,Zugname);
}
u8x8.drawString(10,2,Zeit);
u8x8.drawString(0,5,Via);
u8x8.setInverseFont(1);
if (words[7] != "-") {
u8x8.drawString(0,6," ");
u8x8.drawString(0,6,Lauftext1);
}
if (words[8] != "-") {
u8x8.drawString(0,7," ");
u8x8.drawString(0,7,Lauftext2);
}
}
if (words[0] == "B") {
........
Ich sage jetzt schon mal Danke für jegliche Hilfe!
lg aus Tirol
Günther