Arduino Nano Problem (Int to Char)

Gast #6411081
Moin
ich würde gerne ein Char Array bestehend aus einer Seriennummer und 
einem Steuerwert übergeben:

Seriennummer: SN#s48fa3asd4d
Steuerwert: 14

Zusammengesetzt soll folgendes über I2C ausgegeben werden: 
SN#s48fa3asd4d;14

Folgende Variablen werden verwendet:

#define I2C_ADDRESS_OTHER 0x2

int encoderPos = 14;
string serialNumber = "SN#s48fa3asd4d";

void setup() {
    Wire.begin();
}
void loop()
{
      Wire.beginTransmission(I2C_ADDRESS);
      char trasmit_c[1];
      String transmit_s = serialNumber + ";" + encoderPos;
      transmit_s.toCharArray(trasmit_c, 17);
      Wire.write(trasmit_c);
}


das komische ist, dass es bei einem Skript funktioniert und bei einem 
anderen nicht. Einmal wird ein linearer Regler ausgelesen (Steuerwert 
zwischen 0 und 100) und einmal ein Inkrementgeber (Steuerwert zwischen 
-1000 und +1000)
Gast
An ein andere Gerät, die Datenübertragung funktioniert auch. Im 
Fehlerfall wird immer wieder die Setup-Routine aufgerufen. Ich weiß 
jedoch nicht warum. Wenn ich

      String transmit_s = serialNumber + ";" + encoderPos;

durch

      String transmit_s = serialNumber + ";" + "14";

ersetze, funktioniert alles.



Im Beispiel sind Seriennummer und Steuerwert fest, in echt ist der 
Steuerwert natürlich nicht statisch. Die Seriennummer wird nur einmalig 
vergeben und dann in den EEPROM geschrieben.
Gast
Tatsache, ich hatte es im anderen Sketch probiert, da hatte es 
funktioniert. habe jetzt encoderPos durch String(encoderPos) ersetzt und 
es funktioniert. Ist natürlich plausibel dennoch wundere ich mich, warum 
es im anderen Sketch funktioniert hat.

Danke euch!
Gast
Achso das, das ist mir auch grad aufgefallen. Die Bufferlänge ist nun 
als transmit_s.length()+1 definiert. Das sollte  sowohl für 1 als auch 
1000 dann funktionieren.

Danke euch für die Hilfe !
Wenn man schon die Arduino Strings benutzen will, kann man sich die 
transmit_c Variable auch komplett sparen und direkt den String an 
Wire.write() übergeben.

Oder man kann direkt das in String verwendete Char-Array nutzen (mittels 
.c_str())

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.