[gelöst] Variablen zusammenfassen

Hallo,
vorweg bitte ich schon um Verzeihung für das Folgende. Ich kann nicht programmieren! Ich stückle mir Dinge zusammen und bringe sie dann irgendwie zum laufen.
Im Moment steure ich 4 Schrittmotoren an, was auch funktioniert. Jeder der Motoren hat seinen eigenen D1 mini und damit seinen eigenen Sketch. Wenn ich jetzt in Sketch 1 etwas ändere, muss ich es auch in 2,3 und 4 ändern. Einfacher wäre es, den geänderten Sketch zu kopieren und nur die Variablen zu ändern, die sich auf die Kommunikation mit dem Wlan und Mqtt beziehen. Diese habe ich mir schon an den Anfang des Sketches gezogen:

int lastIP = 171;
const char* ledTopic = "/home/led1";
const char* dataTopic = "/home/data1";
const char* dataTopic2 = "/home/data1/move";
const char* dataTopic3 = "/home/data1/SollPos";
const char* mqttID = "ESP8266Client-1";
const char* otaHostname = "1-clock8266";

Das heißt, ich kopiere jedes Mal den Sketch und ändere alle 1en in diesen Variablen in eine 2,3 oder 4.

Lässt sich das noch eindampfen, so dass ich am Anfang des Sketches nur 1x die Ziffer ändern muss?

Ich hänge auch noch mal den ganzen Sketch an... für Notfälle :slight_smile:

Mit freundlichem Gruß
Mike

const char* ledTopic = "/home/led%d";
Und dann sprintf() oder vergleichbares

Concatenation (The C Preprocessor) duckundweg

Mir schweben da zwei Sachen vor:

Entweder machst einen Sketch und steuerst das mit #defines und schaltest vor dem kompilieren/flashen um

#define USE_BOARD 1

#if USE_BOARD == 1
const char* mqttID = "ESP8266Client-1";
#endif
#if USE_BOARD == 2
const char* mqttID = "was anderes";
#endif
#if USE_BOARD == 3
const char* mqttID = "noch was anderes";
#endif

oder schreibst dir einmal eine "ID" Boardnummer ins EEPROM und liest es im Setup aus. In dem Fall muss der Sketch halt alle Varianten können. Das schöne ist aber, es gibt weniger Fehler von wegen "hab ich jetzt das richtige geflasht.

oder schreibst dir einmal eine "ID" Boardnummer ins EEPROM

Nachdem's ein ESP ist, gibt's bereits eine ID.

noiasca:
Mir schweben da zwei Sachen vor:

Entweder machst einen Sketch und steuerst das mit #defines und schaltest vor dem kompilieren/flashen um

#define USE_BOARD 1

#if USE_BOARD == 1
const char* mqttID = "ESP8266Client-1";
#endif
#if USE_BOARD == 2
const char* mqttID = "was anderes";
#endif
#if USE_BOARD == 3
const char* mqttID = "noch was anderes";
#endif




oder schreibst dir einmal eine "ID" Boardnummer ins EEPROM und liest es im Setup aus. In dem Fall muss der Sketch halt alle Varianten können. Das schöne ist aber, es gibt weniger Fehler von wegen "hab ich jetzt das richtige geflasht.

Nachdem ich mit der sprintf-Variante wieder an vielen int - char conversions gescheitert bin, klingt Dein Vorschlag richtig geil! Die Boardnummer auszulesen kann ich ja dann noch nachrüsten. Ich teste!
Danke, Gruß Mike

Danke sehr!!! Es funktioniert mit dem define!

verneig

Gruß Mike

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.