Arduino Forum

International => Français => Topic started by: ArduinoFree on Jun 11, 2018, 01:23 pm

Title: Bateau V1
Post by: ArduinoFree on Jun 11, 2018, 01:23 pm
Bonjour voici la version suivante de mon bateau V0

" copie du dernier message du post Code qui boucle en permanence"

je vais continuer à jeter un oeil sur votre post. sans poster de code, car à deux, ça devient vite impossible
donc je laisse la main à notre ami "lesept"qui te soutient depuis le début.
Effectivement c'est plus simple.
Merci

j'ai regardé ta V1.
j'ai du mal à comprendre que dans ta loop, tu surveilles les 3 possibilités par portions de 20 secondes.
autrement, tu as rajouté un gouvernail.
Tes moteurs ne font plus que marche avant/arrière ou tu gardes l'effet de poussée par un seul moteur pour dégager des coins?.
Pour c'est deux j'ai mal codé apparemment, j'ai bien rajouté un gouvernail pour aider à tourner en utilisant un servo moteur.

Dans les coins 1 moteur pour s'en dégager

Le programme fait des cycles de 10 mn
10 mn en pleine eau en évitant les bords                                         ( c'est la programmation de la VO)
10 mn en se collant sur le bord de la piscine par le coté gauche du bateau
10 mn en pleine eau en évitant les bords
10 mn en se collant sur le bord de la piscine par le coté droit du bateau
10 mn de pause

Les 20 sec étaient pour vérifier sur mon montage avec des leds


nota: dans ta V1 tu n'appelles jamais la fonction ultras sons.
tu mets les pompes lorsque le bateau est pres des bords,  dans quel but?
La V1 (ancienne) était l'amélioration de la V0, qui elle aussi avait ce pb d'ultrasons
les pompes c'est pour faire effet pompier  ( lance à incendie)


A ce soir, je retourne à ma pelle et pioche
Title: Re: Bateau V1
Post by: lesept on Jun 11, 2018, 03:01 pm
Avant de se lancer dans un programme, qui ne sera qu'une mise à jour de la V0, mettons les choses bien au point : dans la V1

De plus :

Y a-t-il d'autres choses à prendre en compte ?
Si non, je vais faire la modif en mettant les états où il le faut et ça devrait fonctionner bien assez rapidement.

EDIT : Voici une première version. Il manque la gestion des 3 secondes lorsqu'on plaque le bateau sur une bordure: il faudra me réexpliquer :)
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 11, 2018, 04:30 pm
dans la V1
  • il n'y a pas de marche arrière ni de PWM
  • les virages se font avec le gouvernail et les moteurs
  • le programme est une suite de cycles de 10 minutes

ok


dans la V1
  • Le cycle 'pleine eau' est exactement le programme V0
  • BordureGauche et BordureDroite sont à reprendre selon ton code du fil précédent

Y a-t-il d'autres choses à prendre en compte ?
Si non, je vais faire la modif en mettant les états où il le faut et ça devrait fonctionner bien assez rapidement.
dans la gestion des pins, il est indiqué les emplacements pour un écran oled, une sonde de température (air) et une pour une sonde température étanche( eau de la piscine).
C'est l'objet du post sur l'écran oled 128x64.
Ces fonctions seront ajoutées après  que ce programme fonctionne



Y a-t-il d'autres choses à prendre en compte ?
Si non, je vais faire la modif en mettant les états où il le faut et ça devrait fonctionner bien assez rapidement.
dans la gestion des pins, il est indiqué les emplacements pour un écran oled, une sonde de température (air) et une pour une sonde température étanche( eau de la piscine).
C'est l'objet du post sur l'écran oled i2c 128x64
PS : je viens de tout recevoir, je vais bientôt faire le test de montage

Lecture  du serial
Code: [Select]
Au départ moteur droit allumé et Avant toute !
Avant toute !
Apres 10 sec moteur gauche   !Moteur gauche OFF, droit ON : fait tourner a gauche
Avant toute !
Apres 10 sec moteur droit
Avant toute !
Reste sur le moteur droit allumé longtemps 30 sec env
moteur gauche bref
Reste sur le moteur droit allumé longtemps



Avant toute !Moteur gauche OFF, droit ON : fait tourner a gauche
Avant toute !Moteur droit OFF, gauche ON : fait tourner a droite
Avant toute !Moteur gauche OFF, droit ON : fait tourner a gauche
Avant toute !Moteur droit OFF, gauche ON : fait tourner a droite
Moteur gauche OFF, droit ON : fait tourner a gauche
Moteur droit OFF, gauche ON : fait tourner a droite
Moteur gauche OFF, droit ON : fait tourner a gauche
Moteur droit OFF, gauche ON : fait tourner a droite
Avant toute !Moteur gauche OFF, droit ON : fait tourner a gauche
Avant toute !




Il manque la gestion des 3 secondes lorsqu'on plaque le bateau sur une bordure: il faudra me réexpliquer :)
voir l'image (http://forum.arduino.cc/index.php?action=dlattach;topic=552575.0;attach=261797)

en fait quand le bateau dépasse un angle saillant, plus de contact sur son coté, donc pour le forcer à se coller sur le même coté , je pensais prolonger de 3 sec le moteur
Title: Re: Bateau V1
Post by: lesept on Jun 11, 2018, 05:14 pm
Tu as vu que la pin 3 est utilisée pour 2 choses différentes : il faut corriger ça. D'une manière générale, vérifie :
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 11, 2018, 06:34 pm
pour la pin du moteur droit je l'ai mis sur la 5
Code: [Select]

const int moteur_D =  5;     // le numero du pin du moteur droit
const int moteur_G = 11;



pour faire un test je n'ai gardé que la fonction pleine eau.
voici l'interprétation du serial
Code: [Select]

Au départ le Moteur droit est toujours allumé

avant toute !
***********************************************Je mets la main
!Moteur droit OFF, gauche ON : fait tourner a droite**led-moteur droit allumée
Moteur gauche OFF, droit ON : fait tourner a gauche**** pas de led-moteur gauche allumée***
Moteur droit OFF, gauche ON : fait tourner a droite  **led-moteur droit allumée
Moteur gauche OFF, droit ON : fait tourner a gauche**** pas de led-moteur gauche allumée***
Moteur droit OFF, gauche ON : fait tourner a droite **led-moteur droit allumée
Moteur gauche OFF, droit ON : fait tourner a gauche**** pas de led-moteur gauche allumée***
Moteur droit OFF, gauche ON : fait tourner a droite**led-moteur droit allumée
Avant toute !                                                     *** que la led-moteur droit allumée pas les 2 moteurs

 

Code: [Select]

void loop() { //deux temporisations distinctes, donc deux chronos différents :

  long tempsEcoule = millis() - startMillis;
  long tempsEcouleAvantPause = millis() - startMillisPause;
  Mesures();
  if (tempsEcoule < 100000) { // 10 mn * 60 * 1 000    600000=10 mn   60000=1mn   10000=10sec
    PleineEau();
    ActionsEtats();
  }
/*  else if (tempsEcoule < 20000) { // 20 mn * 60 * 1 000    1200000
    BordureGauche();
    ActionsEtats();
  }
  else if (tempsEcoule < 40000) { // 30 mn * 60 * 1 000    1800000
    PleineEau();
    ActionsEtats();
  }
  else if (tempsEcoule < 60000) {   // 40 mn * 60 * 1 000    2400000
    BordureDroite();   
    ActionsEtats();
  }
  else if (tempsEcouleAvantPause > 3600000) Pause();   // 60 mn * 60 * 1 000après 60 mn de fonctionnement mise en pause 300000
  else startMillis = millis();*/

  delay (100);
}
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 11, 2018, 09:41 pm
Toujours dans mes tests.

1 J'ai inversé mes led/moteur en pensant à une led HS : toujours pas de led/moteur gauche qui s'allume
2 Je reviens de vérifier la VO
   Elle fonctionne bien. Si en avant toute, on a bien les 2 led/moteur qui s'allument.

Donc c'est bien un pb de codage.
Je préfère ça car j'ai soudé mon projet et je ne sais pas déssouder  :smiley-confuse:
Title: Re: Bateau V1
Post by: lesept on Jun 11, 2018, 10:40 pm
Déjà, tu peux ôter la ligne
Code: [Select]
Mesures();au début de la fonction PleineEau()

Ensuite, on a bien les deux leds allumées avant que tu ne simules un obstacle
Puis, on a alternance droite / gauche ce qui est normal : alternance toutes les 5 secondes. Mais le premier chrono dans la loop mesure pendant 10 secondes et il n'est pas remis à 0 car tu as laissé
Code: [Select]
  else startMillis = millis();en commentaire.

Donc je suis un peu perdu. Tu devrais mettre des temps plus longs dans les tests de la loop et ne pas les commenter. Ajoute les deux lignes
Code: [Select]
  if (tempsEcoule%1000==0) {Serial.print ("Temps ecoule = ");
  Serial.println (tempsEcoule); }
après Mesures(); dans la loop (s'il y a trop de texte augmente le 1000).

Note : j'ai laissé encore deux delay que je traiterai plus tard quand ce sera débugué.
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 11, 2018, 11:47 pm
Je viens de voir une inversion dans les commandes des moteurs entre le mode pleine eauet les commandes par boutons

en pleine eau;  le code écrit tourne à droite, normalement il arrête led2/moteur droit et laisse led1/moteur gauche.


Si j'appuie sur le btncontact gauche ( qui fait  tourner à droite) , j'ai la led1/moteur gauche active.
Mais en pleine eau, si le serial écrit "Tourne à droite", j'ai la led2/moteur droit d'activé

Si j'appuie sur le btncontact droit ( qui fait  tourner à gauche) , j'ai la led2/moteur droit active.
Mais en pleine eau, si le serial écrit "Tourne à gauche", j'ai la led/moteur gauche d'activé

C'est plus clair sur le dessin
(http://forum.arduino.cc/index.php?action=dlattach;topic=552575.0;attach=261850)


Je crois que c'est ce que tu voulais dire quand tu disais que tu avais écrit à l'arrache pour boudureDroit et BordureGauche.
A toi de voir celui que tu veux changer, les btn ou pleine eau

EDIT : désolé de ne voir l'erreur que maintenant.
          C'est bien sur pleine eau qu'il y a eu l'inversion
          Je reviens de faire (encore) le test de VO C'est bien ça
          si j'appuie sur btngauche, le moteur gauche fonctionne  et je tourne à droite
                    Mais si le bateau sur le serial affiche  "tourne à droite", c'est le moteur droit qui fonctionne
                     alors dque ce doit être le gauche
           Idem pour le coté droit
Title: Re: Bateau V1
Post by: lesept on Jun 12, 2018, 02:42 pm
A vrai dire je ne comprends pas bien tes explications ni tes dessins. Je vois 2 solutions :

La plus simple : les moteurs sont inversés. Il suffit d'échanger les définitions dans l'entête du programme :
Code: [Select]
const int moteur_D =  5;     // le numero du pin du moteur droit
const int moteur_G = 11;
devient
Code: [Select]
const int moteur_D =  11;     // le numero du pin du moteur droit
const int moteur_G = 5;


Sinon, c'est un peu plus compliqué, mais la structure du programme, avec les états, fait que c'est très simple à modifier. Tu peux le faire toi-même, c'est très simple.
Il faut d'abord vérifier que les états sont bien définis. Exemple :
Code: [Select]
void ADroite () { // Virage droite
  Serial.println("Moteur droit OFF, gauche ON : fait tourner a droite");
  digitalWrite(moteur_D, LOW);
  digitalWrite(moteur_G, HIGH);
  if (PompeG) digitalWrite(PompeGauche, HIGH);
}
C'est les instructions de l'état 'VirageDroite'. Tu vérifies que l'action se fait correctement sur les digitalWrite (le bon moteur pour le bon virage) et que le message affiché sur la console est correct.

Ensuite, il faut vérifier que les tests choisissent les bons états. Par exemple, dans PleinEau() :
Code: [Select]
  else if (!BtnContactG || VirageD)
  { // Contact bouton gauche
    if (VirageD) Serial.println("Contact a gauche ! ");
    if (millis() - chrono2 < delaiVirage)
    {
      state = VirageGauche;
      VirageD = true;
    }
    else
    {
      state = AvantToute;
      Serial.println("Avant toute");
      VirageD = false;
      chrono2 = millis();
    }
  }
Le contact du bouton gauche lance ici un virage à gauche. S'il faut un virage à droite, il suffit de changer le nom de l'état choisi : 'VirageGauche' devient 'VirageDroite'. C'est tout simple, mais tu connais cette mécanique mieux que moi, donc c'est plus simple pour toi :)
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 12, 2018, 09:13 pm
Le contact du bouton gauche lance ici un virage à gauche. S'il faut un virage à droite, il suffit de changer le nom de l'état choisi : 'VirageGauche' devient 'VirageDroite'. C'est tout simple, mais tu connais cette mécanique mieux que moi, donc c'est plus simple pour toi :)
C'était là la solution.
La Vo est validée .

Je te la donne
 
Sus à la V1 maintenant

PS
j'ai remis la V1 sur ma carte et le logiciel m'a dit de réparer encodage et recharger car la version de bateau.h était trop vieille !?
Je l'ai fait , pas de pb.


Je dois toujours garder bateau.h dans le même dossier que V0 ?



Title: Re: Bateau V1
Post by: lesept on Jun 12, 2018, 09:17 pm
Non, bateau.h est un fichier qui sert uniquement à la V1.

La V0 tient dans un seul fichier.

Pour la V1, comme le programme s'annonçait plus long, j'ai préféré le couper en 2 afin que ce soit plus lisible (l'IDE affiche dans deux onglets ce qui est pratique)
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 12, 2018, 09:34 pm
Pour la V1, comme le programme s'annonçait plus long, j'ai préféré le couper en 2 afin que ce soit plus lisible (l'IDE affiche dans deux onglets ce qui est pratique)
Là je suis largué de très très loin. IDE dans 2 onglets !?

Je te rejoins après avoir regardé le match  France 98 versus Fifa 98.
Je rajeunie de 20 ans. C'est pas tous les jours ça, alors j'en profite.
Je reste connecté quand même et je jette un œil.
Title: Re: Bateau V1
Post by: lesept on Jun 12, 2018, 10:41 pm
C'est simple. Si ton sketch tient dans un fichier ino unique, tu double-cliques dessus et l'IDE l'ouvre dans un onglet unique.

Si tu as plusieurs fichiers, un ino et plusieurs fichiers h, dans le même répertoire, tu double-cliques sur le fichier ino et l'IDE ouvre tous tes fichiers dans plusieurs onglets.

Pour toi, tu as, par exemple :

Le fichier bateau.h est référencé dans le fichier bateauV1.ino (#include 'bateau.h') et il contient des fonctions qui sont appelées dans l'autre fichier.
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 12, 2018, 11:00 pm
pour la V1, je dois garder  'bateau.h' ? Je l'ai ouvert c'est en fait la V0
Title: Re: Bateau V1
Post by: lesept on Jun 13, 2018, 07:29 am
ça ressemble à la v0, ça a la couleur de la v0, mais c'est du ...
non en fait c'est inspiré de la v0 mais c'est un peu différent

donc le fichier .h va dans le même répertoire que le fichier ino de la v1

--> tu valides la v1 ?
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 13, 2018, 09:27 pm
Il faut faire la même modif que la V0.

Problème 1
J'ai regardé et je ne vois pas où inverser les rotations dans PleineEau (comme dans V0)  que je ne trouve d'ailleurs pas  :smiley-confuse:

ça c'est les modif que j'ai faites sur la Vo pour inverser les rotations en pleine eau, mais je ne vois pas l'équivalent dans la V1 !?

Code: [Select]

else if (!BtnContactG || VirageD)
  { // Contact bouton gauche
    if (VirageD) Serial.println("Contact à  gauche ! ");
    //    Serial.print("VirageD = "); Serial.println(VirageD);
    if (millis() - chrono2 < delaiVirage)
    {
      state = VirageDroite;/////////////////////////////////////////////////////////////Modifie
      //      Serial.print("state = "); Serial.println(VirageGauche);
      VirageD = true;
      //      Serial.println("Virage droite pour 5 secondes");
    } else
    {
      state = AvantToute;
      Serial.println("Avant toute");
      VirageD = false;
      chrono2 = millis();
    }
  }
  else if (!BtnContactD || VirageG)
  { // Contact bouton droit
    if (VirageG) Serial.println("Contact à  droite ! ");
    //    Serial.print("VirageG = "); Serial.println(VirageG);
    if (millis() - chrono2 < delaiVirage)
    {
      state = VirageGauche;/////////////////////////////////////////////////////////////Modifie
      //     Serial.print("state = "); Serial.println(VirageDroite);
      VirageG = true;
      //      Serial.println("Virage gauche pour 5 secondes");
    }



Problème 2
Au démarrage, et pour avant toute il n'y a QUE le moteur gauche qui est validé


Title: Re: Bateau V1
Post by: lesept on Jun 13, 2018, 10:16 pm
Tu peux poster ta dernière version du code ?

Que veux-tu dire par "que le moteur gauche qui est validé" ?
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 13, 2018, 10:28 pm
Je veux dire que le moteur gauche fonctionne au départ alors qu'il devrait y avoir les 2 ensembles.

Le led/moteur droit n'est jamais allumée/en marche
Title: Re: Bateau V1
Post by: lesept on Jun 13, 2018, 10:53 pm
OK, je regarde demain...
Bonne soirée !
Title: Re: Bateau V1
Post by: lesept on Jun 14, 2018, 10:56 am
C'est bizarre, je ne vois rien qui cloche.

Est-ce que la console affiche des messages, notamment le temps qui passe, par exemple
Code: [Select]
Temps ecoule = 1000
Temps ecoule = 2000
etc.
Bien sûr, il y a d'autres messages affichés entre eux.

Vérifie tes branchements, il y a peut-être un faux contact, une diode grillée, etc.

Je te renvoie une nouvelle version, plus propre...
Lance une exécution en "pleine eau" (sans obstacle) et copie / colle le contenu de la console. Merci
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 14, 2018, 10:59 am
Je ne pourrais tester que ce soir.
Je n'ai pas le montage sous la main
Désolé
Je n'a ique l'arduino et l'écran oled sous la main
Title: Re: Bateau V1
Post by: lesept on Jun 14, 2018, 12:07 pm
Pas de problème
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 14, 2018, 05:43 pm
Resalut

Donc en ce qui concerne mon montage électronique tout est bien soudé, rien de grillé car si j'installe dessue la V0 tout fonctionne parfaitement.

Voici le retour du serial
Code: [Select]

Temps ecoule = 0
Avant toute !Temps ecoule = 2030
Temps ecoule = 5026
Temps ecoule = 8023
Temps ecoule = 11017
Temps ecoule = 13049
Temps ecoule = 14005
Temps ecoule = 16027
Temps ecoule = 19011
Temps ecoule = 21043
Temps ecoule = 22003
Temps ecoule = 24040
Temps ecoule = 25008
Temps ecoule = 27045
Temps ecoule = 28009
Temps ecoule = 30043
Temps ecoule = 31004
Temps ecoule = 33039
Temps ecoule = 34004
Temps ecoule = 36036
Temps ecoule = 37003
Temps ecoule = 39036
Temps ecoule = 42037
Temps ecoule = 43002
Temps ecoule = 45036
Temps ecoule = 48030
Temps ecoule = 51023
Temps ecoule = 54021
Temps ecoule = 57017
Temps ecoule = 60011
Temps ecoule = 62040
Temps ecoule = 63001
Temps ecoule = 65030
Temps ecoule = 68023
Temps ecoule = 71012
Temps ecoule = 73044
Temps ecoule = 74007
Temps ecoule = 76043
Temps ecoule = 77009
Temps ecoule = 79047
Temps ecoule = 80010
Temps ecoule = 82049
Temps ecoule = 83017
Temps ecoule = 86020
Temps ecoule = 89013
Temps ecoule = 91047
Temps ecoule = 92010
Temps ecoule = 94046
Temps ecoule = 95007
Temps ecoule = 97040
Temps ecoule = 100032
Temps ecoule = 101032
Temps ecoule = 102034
Temps ecoule = 103034
Temps ecoule = 104036
Temps ecoule = 105036
Temps ecoule = 106038
Temps ecoule = 107038
Temps ecoule = 108040
Temps ecoule = 109040
Temps ecoule = 110042
Temps ecoule = 111042
Temps ecoule = 112044
Temps ecoule = 113044
Temps ecoule = 114045
Temps ecoule = 115046
Temps ecoule = 116047
Temps ecoule = 117048
Temps ecoule = 118049

Title: Re: Bateau V1
Post by: lesept on Jun 14, 2018, 07:07 pm
Je ne vois rien d'anormal, est-ce que les broches sont les mêmes entre la V0 et la V1 ? Voici pour la V1 : compare avec la V0 et avec les branchements que tu as faits :
Code: [Select]
Servo monServomoteur;         // servoMoteur à la broche D9

// constantes
const int DetecteurPinG = 2;  // bouton gauche sur pin 2
const int DetecteurPinD = 4;  // bouton droit sur pin 4
const int PompeGauche   = 3;  // declaration pompe au pin 3
const int PompeDroite   = 12; // declaration pompe au pin 12
const int moteur_D =  5;      // le numero du pin du moteur droit
const int moteur_G = 11;      // le numero du pin du moteur gauche

Peux-tu mettre des diodes sur les pins des pompes aussi ?

Je t'envoie une nouvelle version, elle fait :
Avec affichage du temps écoulé toutes les 2 secondes.

Je ne peux pas le rendre plus loquace car tu seras submergé. Teste, après vérification des branchements, et copie le contenu de la console et repère les allumages / extinctions de diodes en fonction des états (au besoin fais plusieurs exécutions). Merci
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 14, 2018, 09:53 pm
EDIT : je modifie mon dernier msg ( je viens de comprendre pour les pin  :(  :( )


il faut modifier la V1 mettre
Code: [Select]

// constantes
const int DetecteurPinG = 2;  // bouton gauche sur pin 2
const int DetecteurPinD = 4;  // bouton droit sur pin 4
const int PompeGauche   = 5;  // declaration pompe au pin 3
const int PompeDroite   = 12; // declaration pompe au pin 12
const int moteur_D = 3;      // le numero du pin du moteur droit
const int moteur_G = 11;      // le numero du pin du moteur gauche



Les 2 led/moteur s'allument bien en phase pleine eau

Si j'ai bien compris on doit passer un cycle pleine eau / bordure gauche puis bordure droit.
Mais bordure droit ne vient pas.


Code: [Select]



Temps ecoule = 0
Avant toute !
***********************les 2 LED/Moteur allumés***********
Temps ecoule = 2014
Temps ecoule = 4028
Temps ecoule = 6043
Temps ecoule = 18012
Temps ecoule = 20027

***********************LED1/Moteur droit  allumé   qui plaque le bateau à gauche OK
Bordure gauche
Moteur gauche OFF, droit ON : fait tourner a gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Temps ecoule = 28004
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Temps ecoule = 30022
Avant toute !
***********************les 2 LED/Moteur allumés***********
Temps ecoule = 32035



************PROBLEME****************** Si j'ai compris on devrait avoir Bordure droit après
**************************************** alors que c'est Bordure gauche qui suit ?
Bordure gauche
Moteur droit OFF, gauche ON : fait tourner a droite
***********************LED2/Moteur gauche  allumé   qui plaque le bateau à droite OK
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Temps ecoule = 44014
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Temps ecoule = 46031
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Temps ecoule = 56000
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Temps ecoule = 58017
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Bordure gauche
Temps ecoule = 60036
Temps ecoule = 72001
Temps ecoule = 74015
Temps ecoule = 76029
Temps ecoule = 78044
Temps ecoule = 90009
Temps ecoule = 92023
Temps ecoule = 94038
Moteurs et pompes eteints.


Title: Re: Bateau V1
Post by: lesept on Jun 15, 2018, 07:34 am
Non, tout fonctionne bien, c'est juste le message de bordure droite qui est faux : il écrit "bordure gauche". Tu peux modifier le Serial.print de la fonction BordureDroite dans la version que je t'ai envoyée.

Pour qu'il écrive moins souvent "bordure gauche" et "bordure droite", tu peux modifier les Serial.print des fonctions BordureDroite et BordureGauche comme suit:
Code: [Select]
  if (state != oldstate) Serial.println("Bordure gauche");et
Code: [Select]
  if (state != oldstate) Serial.println("Bordure droite");

Enfin, il reste une erreur dans la gestion du temps :
Code: [Select]
  else if (tempsEcouleAvantPause > 100000) { // 60 mn * 60 * 1 000après 60 mn de fonctionnement mise en pause 300000à remplacer par
Code: [Select]
  else if (tempsEcouleAvantPause < 100000) { // 60 mn * 60 * 1 000après 60 mn de fonctionnement mise en pause 300000
(inférieur au lieu de supérieur)

Il reste à remplacer les deux delay(3000) des fonctions bordure (pour la forme car je pense que ça fonctionne bien comme ça). Je vais tâcher de trouver du temps aujourd'hui.
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 15, 2018, 08:21 am
Je ne pourrais tester que ce soir... ET même après le match je crois  :)
Il n'y a pas urgence

Merci 
Title: Re: Bateau V1
Post by: lesept on Jun 15, 2018, 01:30 pm
OK, bon match !

Pour l'histoire du delay(3000), c'est pas aussi simple, il faudrait que je sache si c'est un temps mort de 3 secondes nécessaire à réorienter le bateau et pendant lequel on ne vérifie pas les distance et boutons ou s'il faut quand même le faire.

Dans le premier cas, le delay est pertinent, et on peut le conserver. Il faut cependant je pense mettre la commande du servo avant le delay : changer
Code: [Select]
  else if (!BtnContactG && cm > 5) { //contact et pas de son
    //contact SANS ultrason : le bateau est collé à un bord et le suit
    state = VirageGauche;
    delay (3000); 
    //  le bateau va dépasser l'angle saillant de la piscine :
    //  on le force à continuer à tourner encore pendant 3 sec
    //  pour le recoller au bord
    monServomoteur.write (135);
  }
en
Code: [Select]
  else if (!BtnContactG && cm > 5) { //contact et pas de son
    //contact SANS ultrason : le bateau est collé à un bord et le suit
    state = VirageGauche;
    monServomoteur.write (135);
    delay (3000); 
    //  le bateau va dépasser l'angle saillant de la piscine :
    //  on le force à continuer à tourner encore pendant 3 sec
    //  pour le recoller au bord
  }
et faire de même dans bordureDroite.

Dans le second cas, ça peut impliquer que si par exemple le bouton qui a fait contact ne touche plus le bord, on peut ne pas respecter cette durée de 3 secondes et passer à un autre état du bateau.

qu'en penses-tu ?
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 15, 2018, 01:54 pm
Salut

Pour l'histoire du delay(3000), c'est pas aussi simple, il faudrait que je sache si c'est un temps mort de 3 secondes nécessaire à réorienter le bateau et pendant lequel on ne vérifie pas les distance et boutons
En fait; je pensais faire tourner le bateau jusqu'à ce qu'il y ait un contact par bouton ( car  ultrason est dans l'axe du bateau et c'est l'un des contacts sur les bords qui détectera/touchera le bord)

Peut-être alors ne pas mettre de delay et attendre ce contact ?
sinon on part sur le temps mort de 3 sec sans vérification.
Title: Re: Bateau V1
Post by: lesept on Jun 15, 2018, 02:48 pm
En fait; je pensais faire tourner le bateau jusqu'à ce qu'il y ait un contact par bouton ( car  ultrason est dans l'axe du bateau et c'est l'un des contacts sur les bords qui détectera/touchera le bord)

Peut-être alors ne pas mettre de delay et attendre ce contact ?
En effet, dans ce cas il suffit d'enlever simplement la ligne contenant le delay.
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 15, 2018, 02:51 pm
On part là dessus alors.

Je vais essayer de mettre des leds pour simuler le servo et les 2 pompes mais je ne crois pas pouvoir le faire avant la semaine prochaine.

après validation des test avec les nouvelles leds, l'étape suivante va être d'incruster le code avec l'écran oled, mais pour cela je dois faire le montage.
Et c'est pas encore fait  :).
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 15, 2018, 06:30 pm
Je viens de tester.
J'ai fait un montage grossier pour les pompes.

alors pompe gauche pin 5 ok
       pompe droite pin 12 fonctionne toujours après la fonction PAUSE ( 'moteurs et pompes éteints')

les 2 s'arrêtent lors de la fonction pleine eau

je te passe ma version modifiée
Title: Re: Bateau V1
Post by: lesept on Jun 15, 2018, 10:51 pm
C'est à cause des deux dernières lignes de l fonction ActionEtats :
Code: [Select]
  digitalWrite (PompeGauche, (PompeG) ? HIGH : LOW);
  digitalWrite (PompeDroite, (PompeD) ? HIGH : LOW);
J'ai modifié le code pour les prendre en compte.
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 15, 2018, 11:29 pm
salut

C'est bon pour les 2  pompes.
J'ai essayé le servo mais rien ne se passe.

J'ai le modèle de l'image.
J'ai bine mis le rouge sur le 5v, marron sur gnd et orange sur le pin 9.

Comme je ne sais pas s'il reçoit l'info, peux-tu mettre un commentaire dans le serial voir s'il est activé ?

Merci

A+

(http://forum.arduino.cc/index.php?action=dlattach;topic=552575.0;attach=262433)
Title: Re: Bateau V1
Post by: lesept on Jun 16, 2018, 08:25 am
As-tu fait un sketch à part juste pour apprendre à te servir du servo ? Moi je ne connais pas vraiment, j'ai juste testé une fois.

Je te mets une nouvelle version du fichier ino (le fichier h est inchangé) avec des serial qui indiquent l'angle qu'on donne au servo. Mais il lui faut peut-être du temps pour se positionner à cet angle : si ça ne fonctionne pas comme ça, tu peux tester en ajoutant un delay(300) - 300 par exemple - juste après chaque commande monServomoteur.write (xxx);
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 16, 2018, 06:13 pm
Salut

En résumé, le servo reste à 90° ( du moins je ne le vois pas bouger)
La pompe gauche fonctionne dans le 2 virages
la pompe droite ne fonctionne jamais

Les 2 sont toujours sous tension , on entend un grésillement
Pour le test, il est en 2 partie.
La première sans obstacle.

La 2° avec ma main.
Là on lit 45 et 135°

A 45°, le servo ne bouge pas
A 135° , le servo bouge
mais à 90° il ne revient pas

J'ai modifié le code pour la lecture des angles du servo et pour savoir où on en est.

J'ai mis 3 h pour arrivé à faire ce test  :smiley-confuse:

Serial.println("45RienDevant ");     pour dire pas de détection ultrason
Serial.println("135RienDevant ");   pour dire pas de détection ultrason
Serial.println("90zero ");               pour dire pas de détection ultrason

Code: [Select]

  if ( BtnContactD && cm > 5) { //Pas de contact et Pas de son
    // le bateau ne touche pas le bord incliné d'un escalier
    // ou le fond du bateau touche une marche immergée
    //NI contact NI ultrason : le bateau suit la courbe ou suit la marche immergée
    state = VirageDroite;
    Serial.println("90zero ");
    monServomoteur.write (90);  // on le force tout droit pour suivre le bord ou immergé ou la courbure
    delay(500);
  }

 


Voici le retour
Code: [Select]

************************************** 2 pompes sous tension******
Temps ecoule = 0
Avant toute !
Temps ecoule = 2040
Temps ecoule = 6003
Temps ecoule = 8044
Temps ecoule = 12007
Temps ecoule = 14048
Temps ecoule = 18011
90zero Moteur gauche OFF, droit ON : fait tourner a gauche
************************************** POMPES GAUCHE  PIN 5 ******
90zero ( le bateau suit le bord du bassin, ou de la marche d'escalier)
Avant toute !
***************************************PAS DE POMPE *********
Temps ecoule = 32036
Temps ecoule = 38034
90zero
Moteur droit OFF, gauche ON : fait tourner a droite
************************************POMPE GAUCHE ***********
90zero
Moteurs et pompes eteints. *** 2 pompes sous tension******




TEST AVEC LA MAIN

************************************** 2 pompes sous tension******
Temps ecoule = 0
Moteur droit OFF, gauche ON : fait tourner a droite
Temps ecoule = 2025
Temps ecoule = 4045
Moteur gauche OFF, droit ON : fait tourner a gauche
Temps ecoule = 10001
Moteur droit OFF, gauche ON : fait tourner a droite
Temps ecoule = 12020
Temps ecoule = 14039
Moteur gauche OFF, droit ON : fait tourner a gauche
45 Moteur droit OFF, gauche ON : fait tourner a droite

*****************POMPE GAUCHE*********************
45 45 45 45 45 45 45 Moteur gauche OFF, droit ON : fait tourner a gauche

******************* PAS DE POMPE***************
Temps ecoule = 32041
Moteur droit OFF, gauche ON : fait tourner a droite
Temps ecoule = 40013
135
****************POMPE GAUCHE*********************

Moteur gauche OFF, droit ON : fait tourner a gauche
135
135
Temps ecoule = 46011
135
135
135
Temps ecoule = 52022
135
135
135
Temps ecoule = 58033
135
135
135
135
Moteurs et pompes eteints.

Moteurs et pompes eteints.Moteur droit OFF, gauche ON : fait tourner a droite
Temps ecoule = 2018
Temps ecoule = 4036
Moteur gauche OFF, droit ON : fait tourner a gauche
Temps ecoule = 10004
Moteur droit OFF, gauche ON : fait tourner a droite
Temps ecoule = 12027
Temps ecoule = 14049
Moteur gauche OFF, droit ON : fait tourner a gauche
Temps ecoule = 20008
45 Moteur droit OFF, gauche ON : fait tourner a droite
*****************POMPE GAUCHE*********************

45 45 45 45 45 45 45 45 45 Temps ecoule = 26019
45 45 45 45 45 45 45 Moteur gauche OFF, droit ON : fait tourner a gauche

******************* PAS DE POMPE***************
Temps ecoule = 32042
Moteur droit OFF, gauche ON : fait tourner a droite
Temps ecoule = 40015
135
*****************POMPE GAUCHE*********************
Moteur gauche OFF, droit ON : fait tourner a gauche
135
135
Temps ecoule = 46026
135
135
Temps ecoule = 52037
135
135
135
Temps ecoule = 58048
135
135
135
135
Moteurs et pompes eteints.



Title: Re: Bateau V1
Post by: lesept on Jun 16, 2018, 07:58 pm
Je vais regarder ce soir.
Pour les servo, tu devrais faire un sketch exprès pour comprendre le fonctionnement, avec un fil de discussion spécifique pour trouver de l'aide sur le sujet. J'ai peu d'expérience, donc je peux pas aider efficacement.
Title: Re: Bateau V1
Post by: lesept on Jun 16, 2018, 08:21 pm
Quote
La pompe gauche fonctionne dans le 2 virages
la pompe droite ne fonctionne jamais
C'est normal si tu es sur la bordure gauche. C'est ce qui est codé.

Si tu veux quelque chose de différent, il faut me dire quoi... Pour l'instant, le fonctionnement des pompes c'est :

Pour les servo, je ne connais pas suffisamment pour aider efficacement. Si l'ajout des delay(500) n'apporte rien, autant les enlever (ils gênent pour la gestion du temps).
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 16, 2018, 11:31 pm
En essayant de simplifier, le pb vient de la partie tourne à droite.

Tourne à droite
quand cela affiche 45 on n'a pas le servo
                             on a la pompe gauche   jamais la droite

Tourne à gauche
Quand cela affiche 135 , on a le servo qui bouge ( vibre fort)
                                  on a aussi la pompe gauche



J'ai testé les btn, c'est bon

tourne à gauche + btn gauche : moteur droit affiche 135RienDevant
tourne à droite   + btn droite   : moteur gauche affiche 45RienDevant

Pour le servo, j'ai utilisé ce test et cela fonctionne, une impulsion et le servo tourne
Code: [Select]
// Test utilisation servomoteur SG90 //

#include <Servo.h>
 
Servo monservo;  // crée l'objet pour contrôler le servomoteur
 
void setup()
{
  monservo.attach(9);  // utilise la broche 9 pour le contrôle du servomoteur
  monservo.write(0); // positionne le servomoteur à 0°
}
 
 
void loop()
{
  monservo.write(0);
  delay(1000);
  monservo.write(90);
  delay(2000);
  monservo.write(150);
  delay(3000);
}


Dans notre code, on dirait que le servo reçoit en permanence l'ordre de tourner, du coup il vibre et chauffe très fort

I manquait cette ligne
Code: [Select]
monservo.write(0); // positionne le servomoteur à 0°
Je l'ai rajoutée mais pas de changement
Title: Re: Bateau V1
Post by: lesept on Jun 17, 2018, 12:59 am
Là aussi, pour moi "pompe gauche" et "pompe droite" n'ont pas de signification, c'est toi qui sait comment elles sont branchées. Le programme fait "pleine eau" (pas de pompe) pendant 20 secondes, puis "bordure gauche" pendant 10 secondes. Dans ces 10 secondes, une des pompes est activée, pour moi c'est celle qui s'appelle "pompe gauche" mais elle pourrait aussi bien s'appeler Chantal car la seule vérité c'est que le processeur envoie un signal haut sur la broche 5. Mais si celle-ci est reliée en vrai à la pompe de droite, tu verras la pompe droite s'allumer. Moi je ne peux pas voir...

Pour les servo, je ne sais pas...
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 17, 2018, 06:49 am
On va laisser le servo .
A voir plus tard, de toute façon le bateau tourne avec les moteurs.

Donc pour la pompeGauche elle est bien branchée au  pin 5
Donc pour la pompeDroite elle est bien branchée au  pin 12

la pompe qui fonctionne tout le temps est celle sur le pin 12

Quand la pompeGauche tourne si je débranche le pin 5, elle s'arrête : normal
                                  MAIS  si je débranche le pin 12, elle s'arrête AUSSI !?


les pompes sont bien séparées électriquement ( voir photo)
(http://forum.arduino.cc/index.php?action=dlattach;topic=552575.0;attach=262556)

(http://forum.arduino.cc/index.php?action=dlattach;topic=552575.0;attach=262558)
Title: Re: Bateau V1
Post by: lesept on Jun 17, 2018, 11:21 am
Ça semble être un problème hardware. Je n'arrive pas à retrouver sur la première photo les fils violet et gris que tu indiques sur la seconde.
Tu peux essayer de commenter la ligne
Code: [Select]
  digitalWrite (PompeDroite, (PompeD) ? HIGH : LOW);en bas de "bateau.h" et voir si la pompe droite fonctionne quand même.
Ensuite, même chose avec l'autre ligne (tu commentes à chaque fois une seule des deux)
Title: Re: Bateau V1
Post by: kammo on Jun 17, 2018, 01:17 pm
Punaise c'est compliqué cette histoire^^ !!
pour le servo, je peux probablement aider, en plus ce servo, je le connais bien ^^
Crée un post et explique le problème. Il faut le traiter à part, et ensuite on intégrera la fonction au programme. Pour ne pas te disperser, fais-le quand tu auras réglé le reste avec lesept.
A très vite
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 17, 2018, 02:55 pm
Ok pour Kammo
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 17, 2018, 03:00 pm
Ça semble être un problème hardware. Je n'arrive pas à retrouver sur la première photo les fils violet et gris que tu indiques sur la seconde.
donc pour les fils
2° photo pin 12 violet relié  1° photo au vert pompe pin12
2° photo pin 5 gris  relié  1° photo au marron pompe pin5



1° test
Code: [Select]

digitalWrite (PompeDroite, (PompeD) ? HIGH : LOW);
  Serial.println("PompeDroite  ");


retour du serial
Code: [Select]

Temps ecoule = 0
Avant toute !
PompeDroite  
Temps ecoule = 6046
Temps ecoule = 10040
PompeDroite  
PompeDroite  
Temps ecoule = 14033
Temps ecoule = 18027
90zeroBG
Moteur gauche OFF, droit ON : fait tourner a gauche
Temps ecoule = 22036
Temps ecoule = 26033
Temps ecoule = 30029
Avant toute !
PompeDroite  
Temps ecoule = 34023
Temps ecoule = 38017
PompeDroite  
90zeroBD
Moteur droit OFF, gauche ON : fait tourner a droite
PompeDroite  
90zeroBD
Temps ecoule = 58013
90zeroBD
PompeDroite  
Moteurs et pompes eteints.PompeDroite  



2° test
Code: [Select]
 digitalWrite (PompeGauche, (PompeG) ? HIGH : LOW);
  Serial.println("PompeGauche  ");




le retour du serial est identique

Code: [Select]

Temps ecoule = 0
Avant toute !
PompeGauche  
Temps ecoule = 6046
Temps ecoule = 18027
PompeGauche  
90zeroBG
Moteur gauche OFF, droit ON : fait tourner a gauche
PompeGauche  
90zeroBG
PompeGauche  
90zeroBG
PompeGauche  
Temps ecoule = 30029
Avant toute !
PompeGauche  
Temps ecoule = 38017
PompeGauche  
90zeroBD
Moteur droit OFF, gauche ON : fait tourner a droite
Temps ecoule = 42027
Temps ecoule = 50020
90zeroBD
PompeGauche  
Temps ecoule = 58013
90zeroBD
PompeGauche  
90zeroBD
PompeGauche
Moteurs et pompes eteints.PompeGauche  




et si je mets les 2 commentaires……. et ben , ….. on a les 2  :)

Code: [Select]

Avant toute !
PompeDroite  
PompeGauche  
PompeDroite  
PompeGauche  
.
.
.
90zeroBG
PompeDroite  
PompeGauche


Je viens de voir que l'on a QUE 90zeroBG ( 90° rien devant pour Bordure Gauche)
Et on a jamais                         90zeroBD ( 90° rien devant pour Bordure Droit)
Title: Re: Bateau V1
Post by: lesept on Jun 17, 2018, 04:07 pm
Pour tes tests c'est normal : la ligne
Code: [Select]
digitalWrite (PompeGauche, (PompeG) ? HIGH : LOW);n'est pas un test habituel mais un test ternaire. Tu peux chercher le mot sur internet pour savoir comment ça marche. J'aime bien en mettre quand je peux, ça donne l'impression d'être intelligent ;)
Du coup la ligne qui suit est toujours exécutée et tu ne peux pas en tirer grand chose. Ce que je proposais c'était de commenter cette ligne (qui allume ou éteint la pompe reliée à la pin PompeGauche) et voir si cette pompe fonctionnait quand même. Et même chose ensuite en commentant la ligne similaire sur la pompe droite (en décommentant la première).

Ce qui m'ennuie c'est qu'on ne voit jamais dans tes messages le print de cette ligne :
Code: [Select]
  if (state != oldstate) Serial.println("Bordure gauche");alors qu'elle devrait s'afficher autour de "temps écoulé = 20000" (ou un peu plus). Je pense que les delay(500) que tu as ajoutés (à ma demande) perturbent la gestion du temps : peux-tu les enlever ?

Mais le code va bien quand même dans les fonctions bordures droite et gauche et je vois un "90zeroBD" dans ton message après le temps 38017. Donc ça, ça fonctionne.

Tu as essayé d'échanger les 2 pompes ? Il y en a peut-être une qui ne fonctionne pas...
Title: Re: Bateau V1
Post by: lesept on Jun 17, 2018, 04:09 pm
Au fait, tu ne m'as as répondu : peux-tu décrire précisément les cas d'allumage ou non allumage des pompes ?
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 17, 2018, 05:26 pm
Tu as essayé d'échanger les 2 pompes ? Il y en a peut-être une qui ne fonctionne pas...
les 2 pompes fonctionnent si je les mats sur l'alimentgation

Je pense que les delay(500) que tu as ajoutés (à ma demande) perturbent la gestion du temps : peux-tu les enlever ?

Je n'ai aucun delay (500) dans le code que je te joints
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 17, 2018, 05:47 pm
les allumages

Pompe pin 12 fonctionne ( mais si je débranche le pin 5 ou bien le pin 12 elle s' arrête)

Code: [Select]
Temps ecoule = 0
Avant toute !
Temps ecoule = 2040
Temps ecoule = 6003
Temps ecoule = 8044
Temps ecoule = 12007
Temps ecoule = 14048
Temps ecoule = 18011
PompeD0-PompeG1  
90zeroBG
Moteur gauche OFF, droit ON : fait tourner a gauche
PompeD0-PompeG1  
90zeroBG
PompeD0-PompeG1  
90zeroBG
Avant toute !
Temps ecoule = 34012



Pompe pin 12 fonctionne ( mais si je débranche le pin 5 ou bien le pin 12 elle s' arrête)
Code: [Select]

Temps ecoule = 34035
Temps ecoule = 40039
PompeD1-PompeG0  
90zeroBD
Moteur droit OFF, gauche ON : fait tourner a droite
PompeD1-PompeG0  
90zeroBD
Temps ecoule = 44033
PompeD1-PompeG0  
90zeroBD
Temps ecoule = 48003
PompeD1-PompeG0  
90zeroBD
Temps ecoule = 50049
PompeD1-PompeG0  
90zeroBD
PompeD1-PompeG0  
90zeroBD
Temps ecoule = 54019
PompeD1-PompeG0  
90zeroBD
PompeD1-PompeG0  
90zeroBD
Temps ecoule = 60034
Moteurs et pompes eteints.


J'ai débranché le pin 12 : aucune pompe ne marche
J'ai débranché le pin 5 : aucune pompe ne marche
J'ai inversé les pin 5 et 12 , c'est tjrs le même moteur sur le skech qui marche
Title: Re: Bateau V1
Post by: lesept on Jun 17, 2018, 06:06 pm
Désole, je ne peux rien : ce n'est pas le programme qui est en cause...
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 17, 2018, 06:56 pm
Peux -tu faire un code avec les pompes qui fonctionnent en permanence pour tester stp ?
Title: Re: Bateau V1
Post by: lesept on Jun 17, 2018, 07:59 pm
Je viens de tester le code sur un nano, sans les pompes, les leds et tout le bazar, juste les messages (que j'ai customisés) : tout fonctionne correctement
C'est pour ça que je te demandais ce que tu voulais comme fonctionnement des pompes : là c'est basique mais on peut faire plus complexe.
Je pense que ton problème est un problème de branchement : vérifie au besoin avec un multimètre, ça peut venir de la breadboard qui a pris un coup de chaud...

Quote
Peux -tu faire un code avec les pompes qui fonctionnent en permanence pour tester stp ?
Pas pour le moment, je programme sur un PC portable et il est en charge pour l'instant, mais je le ferai ce soir.

Tu peux le faire toi-même : il suffit de changer les dernières lignes du fichier bateau.h (de mémoire) :
Code: [Select]
digitalWrite (PompeGauche, HIGH);
digitalWrite(PompeDroite, HIGH);
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 17, 2018, 08:40 pm
j'ai changé le code : pas de changement
J'ai changé la plaque idem



Je vais resouder mon prototype cette semaine et je reviens vers toi

A+
Title: Re: Bateau V1
Post by: lesept on Jun 17, 2018, 10:39 pm
OK.
Voici ce que j'obtiens en faisant tourner le programme sur mon nano : voir fichier joint.
On voit le temps passer (affichage temps écoulé toutes les 1000 ms) et les activations des pompes en fonction des états, tels que je les ai décrits dans un message précédent.

Pour moi, le code fait ce qu'on lui demande et je ne vois rien qui explique ce que tu constates.
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 18, 2018, 07:27 pm
Salut

Trouvéééééééééééééééé  :)  :)

Quand j'ai étamé mes pompes il est resté ( ?) du plastic fondu dessus donc pas de contact .. et pas de +5v !!

En uploadant ton nouveau code, les pompes ne marchent ( lié peut-être à l'écriture du serial  :D .)
Je te redonne celui qui fonctionne


Par contre voici le retour du serial !?!?
Code: [Select]
ǡ⸮NȘ⸮⸮⸮⸮⸮Ș⸮⸮⸮⸮⸮⸮⸮BȘ⸮⸮⸮⸮⸮⸮⸮⸮4⸮⸮⸮⸮4⸮⸮⸮⸮⸮⸮⸮i⸮⸮4⸮⸮⸮⸮⸮⸮⸮⸮p⸮⸮⸮@⸮p⸮⸮⸮q⸮⸮⸮⸮ I⸮At⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮Ș⸮⸮Pt⸮⸮4⸮⸮⸮P P⸮⸮⸮!⸮NȘ⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮Qp⸮⸮⸮⸮@⸮Ș⸮⸮⸮⸮Ҙ⸮⸮⸮⸮⸮⸮p⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮$⸮⸮⸮⸮A⸮ P⸮⸮⸮⸮⸮A⸮⸮p⸮⸮⸮P⸮⸮⸮⸮⸮4⸮⸮⸮ҋP⸮⸮⸮q⸮⸮P⸮⸮Ș⸮⸮p⸮⸮⸮⸮p⸮⸮ ⸮⸮и⸮ ⸮⸮⸮⸮⸮⸮⸮⸮⸮ɞ⸮<,⸮P⸮(⸮⸮
⸮⸮⸮m⸮⸮⸮⸮ɚ⸮⸮⸮⸮ ⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮ ⸮⸮ ⸮⸮⸮⸮ܺ⸮-⸮⸮⸮⸮⸮x<⸮⸮⸮⸮Ҙ:Șx<⸮⸮<< P⸮⸮Ҹɚ⸮ ⸮⸮-⸮ܣ⸮⸮⸮I⸮⸮`⸮⸮⸮-⸮⸮밞⸮⸮⸮⸮Q⸮x⸮⸮⸮⸮Z⸮⸮ȉ⸮⸮⸮⸮⸮A⸮⸮⸮⸮⸮ ⸮⸮⸮<,⸮P⸮ɚ⸮ɚ⸮ ⸮⸮⸮
⸮⸮⸮L⸮⸮⸮ɚ⸮⸮⸮⸮⸮ڛGP⸮D⸮⸮⸮⸮x< ⸮⸮⸮⸮⸮⸮⸮ ⸮⸮⸮⸮⸮⸮⸮⸮A⸮‰j⸮Ǘ⸮>Șx⸮⸮⸮⸮D⸮⸮⸮D⸮⸮ ܺ⸮⸮n⸮⸮⸮⸮`⸮⸮⸮ܺ⸮⸮⸮⸮⸮⸮x⸮A
⸮⸮⸮⸮m⸮⸮|⸮⸮⸮-⸮⸮إ⸮⸮⸮A-Ș⸮⸮+ܺ⸮׼n⸮⸮qz⸮⸮⸮8⸮⸮⸮Șx<⸮⸮a⸮⸮⸮ɚ⸮+⸮⸮
⸮⸮⸮<,⸮P⸮8ū⸮l⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮
⸮⸮⸮m⸮⸮⸮⸮⸮⸮ɚ⸮m⸮⸮⸮ ⸮⸮⸮⸮⸮⸮ȅ⸮⸮⸮
⸮⸮⸮⸮⸮⸮<< P<<⸮⸮/⸮⸮⸮⸮⸮ ⸮⸮⸮
⸮⸮⸮⸮ܺ⸮⸮O⸮ڂ⸮N⸮⸮Ș⸮PȘ⸮⸮⸮⸮GP⸮⸮4⸮⸮⸮⸮⸮P⸮⸮⸮⸮⸮⸮⸮PȘ⸮Q⸮A⸮Qp⸮⸮⸮⸮⸮⸮⸮⸮⸮4⸮⸮⸮P⸮I⸮⸮PGQ"⸮P⸮P P⸮⸮p⸮⸮4⸮⸮⸮Ҙ⸮ ⸮⸮⸮N⸮⸮⸮⸮⸮⸮Qp⸮⸮⸮⸮⸮⸮⸮ P⸮⸮⸮4⸮⸮p⸮⸮⸮P PGP⸮⸮⸮⸮⸮⸮A⸮ԍP⸮p⸮⸮


Title: Re: Bateau V1
Post by: lesept on Jun 18, 2018, 10:31 pm
Ça ressemble à un problème de vitesse de la console : vérifie qu'elle est bien en 115200 bauds

Que veux-tu dire par 'En uploadant ton nouveau code, les pompes ne marchent ( lié peut-être à l'écriture du serial)' : marchent ou marchent pas ?
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 19, 2018, 06:09 am
Elles ne marchent pas.
du coup j'ai remis celui avant le dernier que tu m'as envoyé
Title: Re: Bateau V1
Post by: lesept on Jun 19, 2018, 07:40 am
C'est bizarre que les pompes ne marchent pas, le code les met en marche en fonction de la bordure.
Et avec la version que tu m'as envoyée, elles fonctionnent ?
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 19, 2018, 08:08 am

Avec le code que je t'ai envoyé elles fonctionnent mais je vais quand même refaire le test ce soir donc ne bosse pas pour rien.
Title: Re: Bateau V1
Post by: lesept on Jun 19, 2018, 11:20 am
OK
Courage, on va y arriver...
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 19, 2018, 11:22 am
Je teste mon écran avec les 2 températures et je regarde pour le servo.

Petit à petit l'oiseau fait son nid  :)
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 19, 2018, 08:11 pm
C'est bon, j'ai bien pu  voir les états de fonctionnement des pompes.
Alors

Pompe droite pin 12    fonctionne dès le départ  de 0  jusqu' à 30 000
Ensuite arrêt
reprise au début  de Pause
Puis fonctionne en continu jusqu'au prochain chrono de 30 000
 
******
******
Pompe gauche PIN 5  fonctionne dès le départ  de 0  jusqu'à 10 000
Arret de 10 à 20 000
Reprise à 20 000
fonctionne en continu jusqu'au prochain chrono de 10 000
Title: Re: Bateau V1
Post by: lesept on Jun 19, 2018, 08:59 pm
Et tu as testé avec le code que tu as posté dans le message #54 ?
C'est pas normal, on doit avoir (sauf si tu as bidouillé le code) :

Peux-tu refaire le test avec le code (les deux fichiers : ino et h, les temps sont différents de ceux indiqués plus haut, c'est normal) que j'ai mis dans ma réponse #53 et comparer la console avec celle que j'ai postée ? Tu peux même copier le contenu de la console dans un fichier et me l'envoyer.
Merci
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 19, 2018, 09:15 pm
Je l'ai fait avec ton code du #53

et le résultat est le même que ton .txt

Edit je reviens de faire le test.

Je confirme  
pompe droite pin 12  tourne de 0 jusqu'à 30 000
arrêt
Reprise à PAUSE et   tourne en permanence jusqu'à s'arrêter à 30 000

pompe gauche Pin 5   tourne de 0 jusqu'à 10 000
arrêt
Reprise  20000  tourne en permanence jusqu'à s'arrêter à 10 000

donc tu as 2 rendus de test

Pour les test j'ai branché directement les pompes sur le +5 et les pin 5 et pin 12 sans utiliser la planche de test
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 20, 2018, 09:17 am
Je ne connais pas la fonction Etat ou bien comment utiliser les***.h.
Mais serait-il possible de lier les pompes avec les moteurs ?
                  type sur la pin du moteur gauche mettre le moteur gauche et la pompe gauche ?
                  Est-ce qu'il y aurait assez de tension pour les (moteur et pompe) sur un seul pin ?
                   moteur droit, pompe gauche
                   moteur gauche, pompe droite
                   si moteur droit et moteur gauche alors pas de pompes
Car en fait ; les pompes fonctionnent quand on pousse le bateau sur un bord, donc si on pousse sur le bord gauche, on active la pompe gauche et le bateau est poussé par le moteur droit
   
Ou bien d faire un ***.h que pour les pompes ?

Je ne sais pas , je propose.
Title: Re: Bateau V1
Post by: lesept on Jun 20, 2018, 09:20 am
Je récapitule : tu as fait 2 tests avec le code du 53. Les deux fichiers console disent la même chose. Par exemple que le code envoie un 0 sur les pins 5 et 12 reliées aux commandes des 2 pompes entre 0 et 10000 ms. Malgré ça, tu constates que la pompe droite fonctionne pendant ce temps.

C'est bien ça ?

Si je comprends bien, on se goure depuis le début : pour faire tourner une pompe, il faut lui envoyer un LOW et pour l'arrêter un HIGH. Donc pour corriger ça, tu intervertis les LOW et HIGH dans les deux digitalWrite à la fin de bateau.h
 :

Code: [Select]
  digitalWrite (PompeGauche, (PompeG) ? LOW : HIGH);
  digitalWrite (PompeDroite, (PompeD) ? LOW : HIGH);
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 20, 2018, 09:32 am
Je récapitule : tu as fait 2 tests avec le code du 53. Les deux fichiers console disent la même chose. Par exemple que le code envoie un 0 sur les pins 5 et 12 reliées aux commandes des 2 pompes entre 0 et 10000 ms. Malgré ça, tu constates que la pompe droite fonctionne pendant ce temps.

Oui je confirme, les 2 pompes fonctionnent entre 0 et 10 000.

Je teste ce soir
Title: Re: Bateau V1
Post by: lesept on Jun 20, 2018, 09:41 am
J'aurais dû le comprendre plus tôt, désolé.
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 20, 2018, 09:48 am
AUCUN !!!!!!!!!!!!!!!!!!!!!!!!! problème.
Sans ton aide je ne serai pas allez aussi loin, je serai resté à la V0 avec ses ronds dans l'eau toujours dans le même sens.

Merci à toi pour ta patience  ;) 

Petite question supplémentaire.
La suite de ce code est d'ajouter l'affichage sur l'écran oled I2c  124x68 de mon autre post.

Est-ce que je peux utiliser les pin A1, A2, A3  et/ou 0,1 ~10 et 13 faire ce branchement ?

Code: [Select]
/*
  Prevoir A0, A4 et A5 et deux pins pour l'écran et les températures 9 et 12
  Restera donc 0,1,et 13

  A0  à venir voltage 
  A1 
  A2
  A3
  A4 Ecran Oled
  A5 Ecran Oled
  0
  1
  2 BtnContact placé à gauche
 ~3 Moteur 1   placé à droite
  4 BtnContact placé à droite
 ~5 Pompe à eau gauche   
 ~6 Moteur 2   placé à gauche
  7 Ping de l'ultrason ECHO
  8 Ping de l'ultrason TRIGGER
 ~9 ServoMoteur
 ~10                                     
 ~11 Moteur1 placé   gauche             
  12 Pompe à eau droite
  13
*/
Title: Re: Bateau V1
Post by: lesept on Jun 20, 2018, 10:00 am
Tu peux utiliser celles que tu veux, il faut juste le faire à bon escient. Par exemple :
Sinon, tout est permis...

Pense aussi à la puissance consommée : je ne sais pas si tu alimentes le tout via l'Arduino ou avec une batterie, mais plus tu ajoutes de choses, plus ça consomme donc plus il faut une batterie qui tienne la route. Mais il faut que ce soit la batterie qui alimente les périphériques, pas l'Arduino car au bout d'un moment, il ne pourra plus suivre...
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 20, 2018, 10:04 am
OK
bon on attend mon test ce soir
bon on attend de régler le pb  du servo
Bon on attend d'intégrer l'écran
et je crois que ce sera bon  :)
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 20, 2018, 09:24 pm
Pompes validéééééééééééééééééééééééééééééééééééééééééééééées. :D  :D  :D  :D
Je m'occupe de l'écran et ce sera le servo

Code: [Select]

Avant toute de 0 à 20 000
Pas de pompe



                            Pompe gauche pin 5 fonctionne de 20 000 à 30 000
**************************** de 0 à 20 000   pas de pompe droite pin 12
Temps ecoule = 18027
PompeD0-PompeG1 
90zeroBG
Moteur gauche OFF, droit ON : fait tourner a gauche
PompeD0-PompeG1***************pompe droite pin 5 
90zeroBG
arret 30 000



                             Pompe droite pin 12 fonctionne de 40 000 à 60 000
**************************** de 0 à 40 000   pas de pompe droite pin 12
Temps ecoule = 36012
Temps ecoule = 40042
PompeD1-PompeG0 
90zeroBD
Moteur droit OFF, gauche ON : fait tourner a droite
PompeD1-PompeG0***************pompe droite pin 12   
90zeroBD
arrêt à 60 0000
Title: Re: Bateau V1
Post by: lesept on Jun 21, 2018, 08:58 am
Cool ! Après on attaque la V2...
Title: Re: Bateau V1
Post by: lesept on Jun 25, 2018, 08:55 am
Voici la version dont je dispose (15 juin), je pense que c'est la dernière
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 25, 2018, 08:57 am
Je te passe la dernière version, celle avec la modif sur bateau.h

Code: [Select]
  digitalWrite (PompeGauche, (PompeG) ? LOW : HIGH);
  digitalWrite (PompeDroite, (PompeD) ? LOW : HIGH);
Title: Re: Bateau V1
Post by: lesept on Jun 25, 2018, 09:32 am
OK, bien reçu captain. Quelle est la suite ?
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 25, 2018, 09:43 am
OK, bien reçu captain.
:D  :D  :D

C'est plutôt toi qui dirige ( le bateau) pas moi !

en fait, j'ai bien réussi à utiliser la bibliothèque u8x8, mais comme j'ai acheté un écran 128x128 ça m'ennuie de rester avec un texte sur 8 pixels.
Et en compilant les codes bateau et écran j'ai bien vu que leur somme en mémoire n'est pas égale à la somme réelle des 2 besoin des 2 codes  ( c'est clair ça ?)

Du coup j'essaie la bibliothèque u8g2 sur ce post
http://forum.arduino.cc/index.php?topic=554885.0 (http://forum.arduino.cc/index.php?topic=554885.0)
mais j'ai ces pb


1 Je ne sais pas quel écran choisir dans la rubriqueSSD1306 128X64_NONAME
Et comment le paramétrer
https://github.com/olikraus/u8g2/wiki/u8g2setupc (https://github.com/olikraus/u8g2/wiki/u8g2setupc)

2 Je ne comprends pas le choix des fontes.
Certaines sont notées en fin u8g2, d'autres x11.
Je pense que c'est directX11, mais laquelle je dois prendre ?

https://github.com/olikraus/u8g2/wiki/fntlistall (https://github.com/olikraus/u8g2/wiki/fntlistall)
Title: Re: Bateau V1
Post by: fdufnews on Jun 25, 2018, 10:18 am
2 Je ne comprends pas le choix des fontes.
Certaines sont notées en fin u8g2, d'autres x11.
Je pense que c'est directX11, mais laquelle je dois prendre ?
Je pense que c'est l'origine des fonts
 X11 c'est des fonts open source issues du monde Linux
fontstruct  (https://fontstruct.com/)c'est un site de partage de fonts

Tu prends celle qui correspond à ton besoin. Dans le wiki il y a quelques lettres et chiffres affichés pour te donner une idée de l'allure de la police.
Title: Re: Bateau V1
Post by: ArduinoFree on Jun 25, 2018, 10:20 am
merci