Ecran Nextion Changer la couleur d'un texte

Bonjour à tous,

Je cherche à changer la couleur du texte sur un écran Nextion.

J'arrive bien à le faire avec ce sketch:

void setup() {
    Serial.begin(9600);
    Serial3.begin(9600);
    changeColor(0);
}

void loop() {
  // put your main code here, to run repeatedly:

}

//Change color text t0 (exemple : t0.pco)
void changeColor(byte textNo) {

  char comd[20];
  char temp[20];

  strcpy(comd, "t");
  sprintf(temp, "%01d.pco=65535", textNo);
  strcat(comd, temp);
  Serial.println (comd);
  Serial3.print(comd);
  Serial3.write(0xff);
  Serial3.write(0xff);
  Serial3.write(0xff);
}

qui donne comme résultat : t0.pco=65535

Maintenant, je souhaiterai pouvoir à la fois choisir le numéro de la Textbox et la couleur du texte.
Malgré tous mes essais pour modifier ce sketch, je n'arrive pas à obtenir le bon code à envoyer à l'écran.
En fait, je m'embrouille avec le sprintf.
Voici mon sketch( qui ne fonctionne pas!)

const char t1;


void setup() {
    Serial.begin(9600);
    Serial3.begin(9600);
    Serial.println("Test");
    nextionSendcolor(t1, 63488);
}

void loop() {
  // put your main code here, to run repeatedly:

}
void nextionSendcolor (const char *ID, const char *color)
{
  char buf[100];

  int len = sprintf (buf, "%u.pco=\"%d\"", ID, color);
  Serial.println(buf);
  Serial3.write(buf, len);
  Serial3.write(0xff);
  Serial3.write(0xff);
  Serial3.write(0xff);
}

Résultat :
Test
0.pco="-2048"

Pouvez vous m'aider?
Merci.

Faites juste des print séparés de ce que vous voulez envoyer (votre souci sinon c’est que %d dans le sprintf c’est pour un entier. Si vous avez une chaîne de caractères c’est %s qu’il faut utiliser)


void nextionSendcolor (const char *ID, const char *color)
{
  Serial3.print(ID);  // "t0"
  Serial3.print(F(".pco="));
  Serial3.print(color); // "65535"
  Serial3.write(0xff);
  Serial3.write(0xff);
  Serial3.write(0xff);
}

En supposant bien sûr que vous ayez des chaînes de caractère en paramètres de la fonction

Merci J.M.L. Toujours efficace !

Ca fonctionne bien!

Juste pour ma culture personnelle, j'ai utilisé %s dans mon programme et j'obtiens en envoyant la commande suivante : Nextion_Sendcolor ("t0", "63488");
et j'obtiens : t0.pco="63488"
Pourquoi 63488 est entre guillemets et pas t0 ?

Merci.

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

quel code vous avez pour Nextion_Sendcolor() ?