
C++ (Arduino), přiřazování hodnot ve strukturované proměnné
V proměnné chci vložit znaky do řetězce, ale nemohu přijít na jednoducý způsob. Jediné co mi funguje, je zápis znak po znaku nebo formátovaný tisk. Oba způsoby mi přijdou trochu overkill a neelegantní. Ty co nefungují jsou v komentáři s chybovou hláškou.
Bohužel moje znalost C++ je slabá, dostal jsem se k němu až přes Arduino. Takže je skoro jisté, že jenom neznám ten správný příkaz nebo jsem něco špatně (ne)pochopil.
Byl by prosím někdo od té dobroty a naznačil mi správný směr. Případně vysvětlil, proč u proměnné Barva1 jde vložit řetězec který je kratší než definice a strukturované proměnné Light1.Colour to hlásí chybu?
Děkuji za trpělivost.
struct mix { //definice strukturovaneho zaznamu
int BluePin; //cele cislo
boolean BlueValue; //logicka hodnota
float Lumi; //cislo s desetinnou carkou
char Colour[9]; //retezec
};
mix Light1; //deklarace promenne Light1 s datovym typem mix
char Barva1[7]; //deklerace retezce
void setup() {
Serial.begin(9600);
Light1.BluePin = 4; //int do polozky BluePin v zaznamu Light1
Light1.BlueValue = false; //boolean do polozky BlueValue v zaznamu Light1
Light1.Lumi = 15.8521; //float do polozky Lumi v zaznamu Light1
char Barva1[] = "ASDF"; //znaky do retezce
Light1.Colour[3] = 'A'; //jeden znak na urcenou pozici retezce, to funguje
sprintf(Light1.Colour,"",Barva1); //formatovane kopirovani, to funguje
//tohle uz nefunguje
//Light1.Colour = "QW"; //incompatible types in assignment of 'const char [3]' to 'char [9]'
//Light1.Colour = "QWERTYUI"; //invalid array assignment
//Light1.Colour = Barva1; //incompatible types in assignment of 'char [5]' to 'char [9]'
//Light1.Colour[0] = Barva1; //invalid conversion from 'char*' to 'char' [-fpermissive]
}
void loop() {
Serial.println(Light1.BluePin);
Serial.println(Light1.BlueValue);
Serial.println(Light1.Lumi, 2);
Serial.println(Light1.Colour);
delay (1000);
}