Auteur Sujet: COMMANDE MOTEUR TORTOISE NEXTION  (Lu 41489 fois)

CATPLUS

  • Sr. Member
  • ****
  • Messages: 435
    • Voir le profil
COMMANDE MOTEUR TORTOISE NEXTION
« le: septembre 11, 2017, 08:11:20 pm »
Bonsoir

Remplacer 16 interrupteurs (ou plus) par l'affichage de BOUTONS fictifs sur l'écran NEXTION.
Utilisation  => commande Switch Motor TORTOISE (j'ai fait le test uniquement avec ces moteurs)

Avant de développer ce montage quelques photos.

 
Best Regards

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #1 le: septembre 11, 2017, 08:50:34 pm »
Joli projet, avec un superbe écran même pas (trop) cher ! Je crois que je regarderais pour ma prochaine centrale DCC...

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1081
  • HO avec DCC++
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #2 le: septembre 12, 2017, 07:32:28 am »


Cette technique qui consiste à en montrer un peu en nous laissant sur notre faim s'appelle le "teasing". On attend avec impatience les développements. Type d'écran ? Tactile (sinon je vois pas) ? Programme pour dessin des boutons et interactivité ?

Demain tu nous montres le derrière (du programme bien sûr  :-)

Christophe
« Modifié: septembre 12, 2017, 07:37:07 am par bobyAndCo »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #3 le: septembre 12, 2017, 08:42:41 am »
On trouve des claviers tactiles sur la Baie nettement moins chers qu'un écran graphique :

http://www.ebay.fr/ulk/itm/311568380186

Mais l'intérêt de l'écran graphique est de pouvoir afficher bien plus que des boutons ! :P

On attend donc d'en savoir plus.

Dominique
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #4 le: septembre 12, 2017, 10:28:20 am »
Et c'est un afficheur qui a tenu ses promesses !
C'est pas toujours le cas sur eBay ...
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #5 le: septembre 12, 2017, 03:01:48 pm »
En effet, ça a l'air intéressant :

Cordialement,
Dominique

CATPLUS

  • Sr. Member
  • ****
  • Messages: 435
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #6 le: septembre 12, 2017, 03:41:01 pm »
Bonjour

On se calme  >:(

J'ai prévu de faire  ce qui'il faut.

Je suis en TRAIN de refaire le câblage  de ma maison. Donc il y des priorités.

Jusqu’a présent j'ai rendu mon devoir dans les délais..........

Ce petit montage m'a demandé plusieurs jours de délire.
 
Un peu de patience  SVP. Merci

Cordialement
Marcel

« Modifié: septembre 12, 2017, 03:49:52 pm par CATPLUS »
Best Regards

CATPLUS

  • Sr. Member
  • ****
  • Messages: 435
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #7 le: septembre 13, 2017, 03:59:28 pm »
Remplacer  des interrupteurs par des touches TACTILES sur écran  NEXTION

Arduino Mega
NEXTION 3,5 pouce
Carte mini SD
Interface CI 7406
Switch Motor TORTOISE
Alimentation 5 & 12 volts (alimentation PC)

Visiter le site de NEXTION

https://nextion.itead.cc/

Logiciel de création:
IL Y A UNE CHOSE IMPERATIVE A RESPECTER NE JAMAIS, JAMAIS OUBLIER D’INSERER LA POLICE DE CARACTER
https://nextion.itead.cc/resource/download/nextion-editor/

Suivant le type d’écran

https://nextion.itead.cc/resource/download/libraries/

J'ai utilisé un Ecran 3,5 pouces (pas besoin d'alimentation  extérieur. NB au dessus l'Arduino ne peu pas fournir suffisamment de tension)


1 Charger la bibliothèque  => NEXTION

2 Pour charger le fichier (BUTTON_8.tft)

   21 Enregistrer le fichier sur la carte SD => BUTTON_8.tft
   22 Couper l’alimentation 5volts de l’écran
   23 Insérer carte SD (arrière de l’écran => ATTENTION au SENS)
   24 Mettre le courant
   25 Le chargement doit  s’effectuer (progression sur l’affichage en %)
   26 Si tout est OK, couper l’alimentation 5volts
   27 Retirer la carte SD
   28 Mettre le courant
   29 L’affichage des Boutons doit apparaître

3 Branchement sur l’ARDUINO

   31 ATTENTION  au fil TX & RX (fil jaune & fil rouge) bien les brancher sur les pins 10 & 11
   32 Charger le fichier => TORTOISE_3_16_OUT_OK.ino
   33 Test ouvrir le port série (avec la bonne vitesse) appuyer sur les touches de l’écran

          "L' affichage des touches en fonctions (1 => 16) dans la fenêtre port série"

4 Fabrication de l’interface
   41 J’utilise des CI 7406 ( l’alimentation du CI est en  5 volts) sur les sorties je branche les Tortoises
NE PAS OUBLIER les résistances de 1,2k entre le 12volts (voir schéma)

AVANT de brancher l’ARDUINO à l’interface faire un essai (un fil du moins à l’Entrée du 7406)
Pin IN 1, 3, 5, 9, 11, 13
Pin OUT 2, 4, 6, 8, 10, 12

Best Regards

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #8 le: septembre 13, 2017, 04:19:40 pm »
J'ai jeté un petit coup d’œil à ton fichier ino, il me semble que tu pourrais remplacer les tests

if (message == "65 0 2 0 ffff ffff ffff") {

par

if (message[5] == "2") {

et pour le premier et le dernier, il faut tester les deux caractères différents :

if (message[5] == "1" && message[6] == " ") {

et

if (message[5] == "1" && message[6] == "0") {

Ce type de programmation devrait être plus rapide et moins encombrante en mémoire que de tester la chaîne entière, de toutes façons seulement différentes par un ou deux caractères.

A noter qu'il est étonnant que ça marche un peu, parce que la comparaison de chaîne en C doit se faire avec une fonction comme strcmp(), sinon avec un simple '==' tu compares les adresses, ce qui n'est pas du tout la même chose !

CATPLUS

  • Sr. Member
  • ****
  • Messages: 435
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #9 le: septembre 13, 2017, 06:35:50 pm »
Bonsoir Thierry

Je viens de faire le test que tu ma conseillé:

Apparemment il est pas content:

exit status 1
ISO C++ forbids comparison between pointer and integer [-fpermissive]

Marcel
Best Regards

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #10 le: septembre 13, 2017, 08:59:51 pm »
Tu peux poster ton nouveau source ?

CATPLUS

  • Sr. Member
  • ****
  • Messages: 435
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #11 le: septembre 14, 2017, 07:51:05 am »
Bonjour Thierry
Best Regards

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1081
  • HO avec DCC++
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #12 le: septembre 14, 2017, 08:19:37 am »
Bonjour Marcel,

Eh déjà, ça peut pas marcher ligne 106 :

if (message[5] == "10"
message[5] ne peut correspondre qu'à un seul caractère. Par ailleurs, prendre soin de mettre un char entre ' ' et une string entre " ". message[5] == '1'
Je pense que tu voulais écrire : if (message[5] == '1' && message[6] =='0').

Bien amicalement.

Christophe

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1081
  • HO avec DCC++
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #13 le: septembre 14, 2017, 08:51:31 am »
Marcel,

Je m'autorise par ailleurs une petite suggestion pour rendre le code plus lisible et plus facilement maintenable. Tout comme tu as déclaré et initialisé tes relais dans un tableau :

byte relais[] = {22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52};
Pourquoi ne pas faire de même pour tes pins out : const int Pin23 = 23; jusqu'à 53 ? Pourquoi ne pas également mettre un type byte comme tu l'as fait pour les relais ?

byte pinOut[] = {23,25,27,29,31,33,...........};
et tant qu'à faire, puisque tu avais déclaré tes pins en constantes, eh bien tu fais la même chose pour les tableaux :

const byte relais[] = {22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52};const byte pinOut[] = {23,25,27,29,31,33,...........};
L'avantage de passer par des tableaux est que tu pourras plus facilement manipuler tes données et simplifier ton code comme par exemple, au lieu de :

  pinMode(Pin23,  OUTPUT);//TORTOISE1
  pinMode(Pin25,  OUTPUT);//TORTOISE2
  pinMode(Pin27,  OUTPUT);//TORTOISE3
  pinMode(Pin29,  OUTPUT);//TORTOISE4
  pinMode(Pin31,  OUTPUT);//TORTOISE5
  pinMode(Pin33,  OUTPUT);//TORTOISE6
  pinMode(Pin35,  OUTPUT);//TORTOISE7
  pinMode(Pin37,  OUTPUT);//TORTOISE8
  pinMode(Pin39,  OUTPUT);//TORTOISE9
  pinMode(Pin41,  OUTPUT);//TORTOISE10
  pinMode(Pin43,  OUTPUT);//TORTOISE11
  pinMode(Pin45,  OUTPUT);//TORTOISE12
  pinMode(Pin47,  OUTPUT);//TORTOISE13
  pinMode(Pin49,  OUTPUT);//TORTOISE14
  pinMode(Pin51,  OUTPUT);//TORTOISE15
  pinMode(Pin53,  OUTPUT);//TORTOISE16

tu vas pouvoir écrire :

  for( int i = 0; i < sizeof(pinOut); i++) {
    pinMode(pinOut[i],  OUTPUT);
  }

comme tu l'as fait avec tes relais. Mais ici, sizeof(pinOut)
te permet d'ajouter ou retirer des pins et ton code fonctionne toujours. Et tu vois bien que tout le reste de ton code va aussi pouvoir être simplifié de la même manière.

Voilà des petites astuces de codage qui peuvent simplifier la vie.

Bien amicalement.

Christophe

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : COMMANDE MOTEUR TORTOISE NEXTION
« Réponse #14 le: septembre 14, 2017, 11:58:39 am »
Oui, autant pour moi, on parle bien de caractère avec '0', alors que "0" est une chaine de caractères, un tableau... Voir l'article http://www.locoduino.org/spip.php?article131 à ce sujet.