Demander de l'aide pour terminer le projet (Pédale Switcher 8 Loop) avec HMI

Bonjour, Voilà je suis guitariste et J'ai commencé à construire un pédale Switcher pour manipuler mes pédales d'effets, et j'ai trouvé sur le net un programme ARDUINO qui me plait bien, et je voudrais y rajouter un écran nexion de
2.8 " avec un ARDUINO Mega 2560, et j'ai aussi commencé à faire mes menus sur Nextion, je fais de l'électronique mais en programmation Arduino je ne connais pas grand-chose, je peux vous envoyer le programme arduino puis le programme Nextion il y a aussi une vidéo sur YouTube du concepteur de ce programme arduino 5 Presets pour que vous puissiez bien comprendre le fonctionnement, mais je vais vous expliquer le fonctionnement.
Le pédale Switcher est composé de (8 Switch) avec 1 commutateur de 3 Positions, le but c'est de programmer les pédales d'effet désiré (Preset) avec le commutateur 3 positions, puis quand c'est programmé on as plus qu'à appuyer sur l'un des 8 switches avec le pied pour sélectionner les pédales programmé sur OUT mais si on ajoute l'écran nextion (NX3224T028) on est obligé de supprimer le commutateur sur le Rack car on fera la présélection de (presets) directement à l'écran ce qui pose pas de problème. Mais on garde les switches mécanique sur le Rack pour la sélection au pied bien entendu. Alors j'ai fait un programme sur le logiciel Nextion avec 9 Pages la page principale est la page 1, les autres pages ça seras pour visualiser les pédales que j'ai sélectionné qui correspond au presets, sur la page 1, il y a les 8 Bouton b22 à b 29 représentent les 8 Switchs comme sur le rack de pédale et il y a les 3 Boutons bt 30 à 32 qui représentent le Commutateur 3 positions , c'est cette page qui faut relier au programme Arduino et non pas les autres pages. J'ai aussi mis un Time à la page 0 et de la page 2 à 9 puis elle revient à La page 0, ainsi de suite.
Il y a aussi sur les autres pages, je voudrais que les BT restent activés quand ont les actionnent même quand on change de page et qu'on revient sur les pages, car quand j'actionne les Bt et que je reviens sur la page ils sont désactivés, et aussi les 3 Bt sur la page 1. Voilà si vous avez une solution au problème de programmation sur ce projet je vous serais bien reconnaissant car je galère vraiment !
Voici un lien du concepteur programme pour comprendre la fonction :
https://www.youtube.com/watch?v=OHk9vA2-ZIg&t=52s
PS pour le Fichier HMI (Nextion) s'il n'est pas sur le site dite le moi pour l'envoyer.

#include <EEPROM.h>
#include <Keypad.h>
int numberOfPedal = 8; /*adapter ce nombre à vos besoins = nombre de pédales à boucle
 */
const byte rows = 8; /*number of switches variable */
const byte cols = 3; /*the three mode of selector*/
char keys[rows][cols] = {
{'a','i','q'},
{'b','j','r'},
{'c','k','s'},
{'d','l','t'},
{'e','m','u'},
{'f','n','v'},
{'g','o','w'},
{'h','p','x'} /* {'y','z','0'}, {'1','2','3'}, {'*','%','!'} add more characters if needed */
};

byte rowPins[rows] = {22, 23, 24,25, 26,27, 28, 29}; /*switch pins 1 to 8 */
byte colPins[cols] = {30, 31, 32}; /*selector pins a to h/ i to p/ q to x */
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
int relayPin[8] = {33,34,35,36,37,38,39,40};
int ledPin[8] = {41,42,43,44,45,46,47,48};
byte midiChannel = 0;
int i;
int readOut;

/******************************************************/

void setup()
{
  for(i=0; i<numberOfPedal; i++)
   {
    pinMode(relayPin[i], OUTPUT);
    pinMode(ledPin[i], OUTPUT);
    digitalWrite(relayPin[i],HIGH); //pullup all relay outputs in case off low level relayboard
    delay(300);
    digitalWrite(relayPin[i], LOW);
    digitalWrite(ledPin[i], HIGH);
    delay(300);
    digitalWrite(ledPin[i], LOW);
    
    
    
  
  }
readPreset(11, 1, 0); /* initiate  default mode */

  
Serial.begin(31250); /* for midi communication - pin 1 TX */
delay(200);
}

/*********************************************************/

void midiProg(byte status, int data)
{
Serial.write(status);
Serial.write(data);
}
/*********************************************************/

void memory(int addr, int led)
{
  for(i=0; i<numberOfPedal; i++)
    {
      EEPROM.write((addr) + i, digitalRead(relayPin[i]));
      digitalWrite(ledPin[i], LOW);
    }
delay(500);
digitalWrite(ledPin[led], HIGH);
delay(1000);
digitalWrite(ledPin[led], LOW);
delay(500);
digitalWrite(ledPin[led], HIGH);
delay(1000);
digitalWrite(ledPin[led], LOW);
delay(500);
digitalWrite(ledPin[led], HIGH);
delay(1000);
digitalWrite(ledPin[led], LOW);
delay(500);
digitalWrite(ledPin[led], HIGH);
delay(1000);
digitalWrite(ledPin[led], LOW);

}

/*********************************************************/

void writeOut(int relay)
{
  digitalWrite(relayPin[relay], !digitalRead(relayPin[relay]));
  digitalWrite(ledPin[relay], !digitalRead(relayPin[relay]));
}

/*********************************************************/

void readPreset(int addr, int pcNum, int led)
{
  for(i=0; i<numberOfPedal; i++)
  {
    digitalWrite(relayPin[i], EEPROM.read((addr)+i));
    digitalWrite(ledPin[i], LOW);
    digitalWrite(ledPin[led], HIGH);
   }
  midiProg(0xC0, pcNum +1); /* send midi change program 1 */
}

/******************************************************/

void loop()
{
char key = keypad.getKey();
if(key) // Check for a valid key.
  {
   switch (key)
    {
     case 'a': /* 'a' to 'h' for 8 pedals- adapt it to the number you needs */
      writeOut(0);
      break;
     case 'b':
      writeOut(1); /* (relay number,led number) */
      break;
     case 'c':
      writeOut(2);
      break;
     case 'd':
      writeOut(3);
      break;
     case 'e':
      writeOut(4);
      break;
     case 'f':
      writeOut(5);
      break;
     case 'g':
      writeOut(6);
      break;
     case 'h':
      writeOut(7);
      break;
/****************************** STORE PRESET MODE */
     case 'i': /* same remark as previous */
      memory(11,0);
      break;
     case 'j':
      memory(21,1); /* (EEPROM address, led) */
      break;
     case 'k':
      memory(31,2);
      break;
     case 'l':
      memory(41,3);
      break;
     case 'm':
      memory(51,4);
      break;
     case 'n':
      memory(61,5);
      break;
     case 'o':
      memory(71,6);
      break;
     case 'p':
      memory(81,7);
      break;
/****************************** READ PRESET MODE (EEProm address,PcNum,led number)*/
     case 'q':
      readPreset(11, 1, 0); 
      break;
     case 'r':
      readPreset(21, 2, 1);
      break;
     case 's':
      readPreset(31, 3, 2);
      break;
     case 't':
      readPreset(41, 4, 3);
      break;
     case 'u':
      readPreset(51, 5, 4);
      break;
     case 'v':
      readPreset(61, 6, 5);
      break;
     case 'w':
      readPreset(71, 7, 6);
      break;
     case 'x':
      readPreset(81, 8, 7);
      break;
      }
    }
}

bonjour
essaye d’aérer ton texte , tel quel çà ne donne pas envie de lire :smiling_imp:

bonjour c'est normal quand c'est trop compliqué on vient pas aider les autres sur ce domaine.

Non, non, c'est juste incompréhensible.
Toi tu es dans ton truc mais nous on découvre. Et ton pavé est illisible au bout de 5 lignes on est perdu.
On te demande juste de structurer un peu ton texte pour séparer les différentes parties de tes explications et clarifier le fonctionnement attendu et celui obtenu.

@supergigi : ta réponse sèche ne risque pas d'attirer les bénévoles.
C'est à toi de faire un effort pour te faire comprendre.

Apparemment ton code ne gère pas du tout l'écran Nextion.

Soit tu attends de nous que l'on fasse le travail à ta place, ce qui à mon avis ne peut arriver qu'avec un coup de chance inouï, soit tu fais l'apprentissage de Nextion en partant d'exemples.

Je l'explique dans le texte je n'y connais rien en programmation moi mon métier c'est pas ça, je suis musicien professionnel, en revanche je pratique l'électronique depuis longtemps par plaisir quand je peux aussi, car la musique me prend beaucoup de temp, la programmation c'est un autre métier ça, et je me fait comprendre comme je peux, alors à quoi sert ce site si on peut pas se faire aider ?

D'après ce que je comprends tu as récupéré un code et un schéma de montage sur le WEB. C'est déjà bien d'avoir réussi à faire marcher tout ça, chapeau, très bien.

Ensuite tout dépend de ce que tu entends par "aide" ?
Si cette aide consiste à développer le logiciel à ta place, ce n'est pas vraiment la vocation du forum, à moins de dénicher le (très) bon samaritain ... cela arrive parfois.

Le problème est qu'il faut avoir :

  • de la motivation
  • des connaissances Nextion
  • un cahier des charges précis de ta part (c'est loin d'être le cas)

arrêtés de vous prendre pour des ingénieurs les gars

Tu as parfaitement raison, j'étais ingénieur logiciel, je ne le suis plus (retraite).

S'il y a un bon samaritain sur le forum qui veuille bien indiquer une phrase dans ce fil où un manque de respect ou de savoir vivre a été décelé, je suis preneur.

Perds pas ton temps hbachetti, il est juste aigri parce qu'il a perdu la touche retour à la ligne de son clavier.

de toutes façon on sait tous où ce fil va aboutir......

fdufnews:
Perds pas ton temps hbachetti, il est juste aigri parce qu'il a perdu la touche retour à la ligne de son clavier.

:slight_smile: :slight_smile: :slight_smile:

Allez, ouste, dehors.

Normalement je ne réponds pas à ce genre de demande. Ici je me suis fait avoir. Je n'avais pas visité le lien :

Le code posté dans la demande est identique à l'original.

J'estime que les intervenants du forum n'ont pas à bosser à la place des demandeurs, surtout en partant de ZÉRO. Plus on répond à ce genre de demande plus elles affluent, et on perd du temps que l'on pourrait consacrer aux vrais problèmes de demandeurs motivés qui eux, ont pris la peine d'essayer de comprendre.
Et en même temps on s'enfonce dans la médiocrité ...

pas facile d'activer un bon anti-parasite sur le forum......