Go Down

Topic: bateau V2 (Read 937 times) previous topic - next topic

ArduinoFree

#30
Jul 08, 2018, 12:41 pm Last Edit: Jul 08, 2018, 12:44 pm by ArduinoFree
Salut

De même j'ai pensé à un possible pb avec la première étape de BordureXX.

On dit au bateau de se diriger tout droit vers un bord.

Pour BordureDroite, on lui dit de tourner à droite, mais si le bateau est à angle droit du bord il peut aussi bien tourner sur son coté droit que son coté gauche, en fonction de la construction du bateau et du couple créé par le moteur.


Il faut donc en premier présenter le bord droit du bateau au bord de la piscine et donc il faut faire tourner un peu le bateau sur SA gauche pour  présenter son bord droit  au bord de la piscine.
Ensuite on utilise le moteur gauche pour le plaquer sur son bord droit.

Et idem  pour BordureGauche

Sinon, si tu vois une autre logique,  je la prends sans pb.



lesept

Je n'en suis as encore là : pour l'instant j'assemble les divers codes et j'attends d'avoir une version qui compile avant de te l'envoyer. Ce sera ce soir ou demain.

Ensuite il faudra vérifier toutes les connexions. Puis tester si le code fait bien ce qu'on veut.

Après on fera ces raffinements, pas de souci.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

lesept

Bonjour

voici une première version qui compile correctement. Mais il y a plusieurs problèmes :
  • Les pins 2 et 4 sont utilisées plusieurs fois : voir la liste en haut du fichier Bateau_V2.ino. Il faut choisir de changer certaines pins : je te laisse me dire ce qui te convient
  • Lorsque je le compile sur cible nano, la mémoire est faible. Pour pallier ce problème, on peut éliminer la bibli Ultrasonic et faire les mesures de distance "à l'ancienne" c'est à dire comme tu l'avais fait dans la version "voiture". Est-ce que ça te va ?

J'ai créé un alias MINUTES qui sert à calculer les temps plus facilement. Pour l'instant le programme fait ceci (si tout va bien, je n'ai pas testé) : les temps seront à actualiser pour la version finale
  • 1 minute : se balade en regardant à droite et à gauche et tourne si obstacle détecté (c'est la version "voiture")
  • 1 minute : pleine eau
  • 1 minute : bordure gauche (ancienne version pour l'instant)
  • 1 minute : pleine eau
  • 1 minute : bordure droite
  • 3 minutes : arrêt
Ce n'est pas exactement ce que tu veux, car tu m'as dit qu'après le phase de "balade", il faut se diriger vers le bord de la piscine et lancer la bordure droite :

Quote
  • Donc phase 1, on avance, on regarde à droite, à gauche , si obstacle ou pas on avance ou on regarde sur les cotés si on peut avancer. Cela pendant 10mn.
  • Puis on dit au véhicule d'avancer jusqu'au bord de la piscine.
  • Pour la phase BordureDroite, dès la détection du bord, on plaque le véhicule sur le bord droit cela pendant 10 mn.
  • Phase de mouvement normal pendant 10 mn.
  • Puis on dit au véhicule d'avancer jusqu'au bord de la piscine.
  • Pour la phase BordureGauche, dès la détection du bord, on plaque le véhicule sur le bord gauche cela pendant 10 mn.
  • et phase de Pause pour finir.
Dans ce descriptif, on n'est plus sur un pilotage par le temps comme avant, mais mixte sur temps et événements. La première phase dure 10 minutes : pilotage en temps. Ensuite on avance vers le bord : pilotage par événement puisqu'il faut détecter le bord.
C'est un peu plus compliqué, mais faisable je te rassure... :)

Je m'interroge sur
Quote
Phase de mouvement normal pendant 10 mn.
Que veux-tu dire ? On est censé être au bord de la piscine depuis 10 minutes : est-ce qu'on retourne vers le centre ? En regardant à droite et à gauche pour chercher les obstacles ? En clair, est-ce l'équivalent de la phase 1 ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#33
Jul 09, 2018, 02:24 pm Last Edit: Jul 09, 2018, 02:30 pm by ArduinoFree
  • Les pins 2 et 4 sont utilisées plusieurs fois : voir la liste en haut du fichier Bateau_V2.ino. Il faut choisir de changer certaines pins : je te laisse me dire ce qui te convient

En fait, prend les pin comme tu veux car il va falloir m'expliquer comment faire les branchements avec le 'shield'. Je ne m'en suis jamais servi, je le découvre avec le kit de la voitre


  • Lorsque je le compile sur cible nano, la mémoire est faible. Pour pallier ce problème, on peut éliminer la bibli Ultrasonic et faire les mesures de distance "à l'ancienne" c'est à dire comme tu l'avais fait dans la version "voiture". Est-ce que ça te va ?

Là je ne vois pas trop ce que tu dis par ''à l'ancienne ''..



  • 1 minute : se balade en regardant à droite et à gauche et tourne si obstacle détecté (c'est la version "voiture")
  • 1 minute : pleine eau

En fait, pour moi la minute de balade c'est égale à la version PleineEau.
Il faut que le bateau se promène dans la piscine en évitant les bords.
C'est comme si tu faisais faire 2 fois au bateau de se promener au milieu de la piscine.
Pour moi la phase de déplacement de la voiture est l'équivalent de PleineEau.
J'ai bien expliqué ?


J'ai créé un alias MINUTES qui sert à calculer les temps plus facilement. Pour l'instant le programme fait ceci (si tout va bien, je n'ai pas testé) : les temps seront à actualiser pour la version finale
  • 1 minute : se balade en regardant à droite et à gauche et tourne si obstacle détecté (c'est la version "voiture")
  • 1 minute : pleine eau
  • 1 minute : bordure gauche (ancienne version pour l'instant)
  • 1 minute : pleine eau
  • 1 minute : bordure droite
  • 3 minutes : arrêt
Ce n'est pas exactement ce que tu veux, car tu m'as dit qu'après le phase de "balade", il faut se diriger vers le bord de la piscine et lancer la bordure droite :

Je m'interroge sur Que veux-tu dire ? On est censé être au bord de la piscine depuis 10 minutes : est-ce qu'on retourne vers le centre ? En regardant à droite et à gauche pour chercher les obstacles ? En clair, est-ce l'équivalent de la phase 1 ?
Après BordureDroite on arrête le bateau, où qu'il soit.
Après il va ''dériver'' dans la piscine pendant la phase d'arrêt  .
Puis le cycle reprend.
Donc je crois qu'il doit regarder à droite et à gauche si pas d'obstacle et il y va. C'est la version voiture 





lesept

#34
Jul 09, 2018, 04:20 pm Last Edit: Jul 09, 2018, 05:20 pm by lesept
Il faudrait que tu m'en dises plus sur ce shield : as-tu une référence ou un lien vers le site du fabricant ? Au besoin une photo pourrait aider. Merci

"A l'ancienne", c'est sans la bibliothèque, en envoyant un pulse et en mesurant le temps de parcours. Ca libérera un peu de mémoire.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

lesept

Une question : combien y a-t-il de servomoteurs ? Un ou deux ? J'ai un servo pour le gouvernail, et un second pour orienter le capteur ultrason. Est-ce toujours vrai ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree


lesept

#37
Jul 09, 2018, 06:28 pm Last Edit: Jul 09, 2018, 06:30 pm by lesept
Quote
Faute de temps j'ai arrêté le servo
Moi, c'est le cerveau que j'ai arrêté :) donc je ne comprends pas ce que tu veux dire : tu parles du gouvernail ?

Tu peux mettre une ou deux belles photos du shield ?

EDIT : pas besoin, on voit très bien sur le lien. C'est pas un shield (la carte rouge) c'est un module de commande des moteurs. Il est utile si tu veux faire varier la vitesse ou le sens des moteurs (PWM et marche avant / arrière). Est-ce bien le cas?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#38
Jul 09, 2018, 06:57 pm Last Edit: Jul 09, 2018, 06:58 pm by ArduinoFree
Moi, c'est le cerveau que j'ai arrêté :) donc je ne comprends pas ce que tu veux dire : tu parles du gouvernail ?
Oui, je parlais du gouvernail bien sûr, que je n'utilise plus. :)
Désolé pour le triturage de méninge pour rien :smiley-confuse:

Tu peux mettre une ou deux belles photos du shield ?

EDIT : pas besoin, on voit très bien sur le lien. C'est pas un shield (la carte rouge) c'est un module de commande des moteurs. Il est utile si tu veux faire varier la vitesse ou le sens des moteurs (PWM et marche avant / arrière). Est-ce bien le cas?
oui à  ce que j'ai compris

lesept

Voici une nouvelle version, avec la liste des connexions dans le fichier ino. ça compile correctement chez moi. Teste la et dis moi ce que ça donne.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#40
Jul 11, 2018, 08:20 pm Last Edit: Jul 11, 2018, 08:32 pm by ArduinoFree
Branchement !

Salut

Je ne peux tester car je ne sais pas comment brancher les câbles.
avec le bloc supplémentaire je n'ai que les A2, A3, A4 et A5.
Comment avoir les A0 et A1 ?

Je dois enlever le bloc ?

   A4 : data écran OLED c'set SLA ?
   A5 : clock écran OLED c'est SCL

sur la photo
gris     vcc
vert    gnd
bleu    Echo  A2
rose    Trig   A1  ?


lesept

Quote
A4 : data écran OLED c'set SLA ?
   A5 : clock écran OLED c'est SCL
Oui

Pour les A0 et A1, je ne sais pas, je ne connais pas ce shield bleu...
Est-ce que tu peux avoir accès aux branchements de la carte Uno ?

Si non, as-tu réellement besoin du shield ? Que fait-il de spécial que la carte ne fait pas déjà ?

Tu peux poster une ou deux photos de ce shield pour que je voie mieux ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

Salut

Il est vrai que je ne module pas la vitesse des moteurs, à priori je n'aurais pas besoin du shield.

Je m'excuse mais j'ai mal expliqué le code.

En fait pour la V2, je n'utilise plus de bouton.
Je comptais n'utiliser que ultrason pour orienter le bateau sur les bords.

la première phase est bien celle-ci

La V2, de ce que j'ai compris, elle fait ça :
  • Marche avant et détection d'obstacle devant, si rien devant on continue en marche avant
  • Si obstacle :
    • On regarde à droite : si obstacle on tourne à gauche
    • Sinon, on regarde à gauche : si obstacle on tourne à droite


Par contre , pour les fonctions BordureDroite_V2 et BordureGauche_V2
on fait avancer le bateau tout droit, détection devant par ultrason, on plaque le bateau sur le bord

Etape par étape
BordureDroite_V2
le bateau va tout droit ( où qu'il soit)
détection du bord
pivot sur sa gauche pour présenter son bord droit au bord de la piscine ( pendant 1 sec )
le bateau avance
détection du bord
pivot sur sa droite pour PLAQUER le bateau  son bord droit sur le bord de la piscine.
Ensuite la première phase où le bateau évite les obstacles
Puis BordureGauche_V2

(voir explication dans le lien ci dessous du msg #30


C'est ce donc je te parlais dans  le msg #30

Salut

De même j'ai pensé à un possible pb avec la première étape de BordureXX_V2 .

On dit au bateau de se diriger tout droit vers un bord.

Pour BordureDroite_V2 , on lui dit de tourner à droite, mais si le bateau est à angle droit du bord il peut aussi bien tourner sur son coté droit que son coté gauche, en fonction de la construction du bateau et du couple créé par le moteur.


Il faut donc en premier présenter le bord droit du bateau au bord de la piscine et donc il faut faire tourner un peu le bateau sur SA gauche pour  présenter son bord droit  au bord de la piscine.
Ensuite on utilise le moteur gauche pour le plaquer sur son bord droit.

Et idem  pour BordureGauche_V2

Sinon, si tu vois une autre logique,  je la prends sans pb.



[/list][/list]

ArduinoFree

#43
Jul 12, 2018, 09:42 pm Last Edit: Jul 12, 2018, 09:42 pm by ArduinoFree
Salut

Si ça peut aider j'ai une carte Mega 2560 reçue cette semaine


lesept

Avec la Mega, tu as de quoi faire deux ou trois bateaux avec une seule carte !

Voici une nouvelle version : plus de boutons, prise en compte de tes remarques sur la gestion des bordures. Pour le nouvel écran, si ça fonctionne avec l'ancien, il te suffira de changer la déclaration : commenter la ligne 88 et décommenter la ligne 92 ou 94 (ou chercher la bonne déclaration genre 'NONAME' dans la doc de u8g2)

Voici les connexions :
Code: [Select]
   Liste des pinoches utilisées :
   2  : sonde eau
   3  : sonde air
   4  : pompe gauche
   5  : pompe droite
   7  : moteur IN1
   8  : moteur IN2
   9  : servomoteur capteur US
   10 : moteur ENA (pwm)
   11 : moteur ENB (pwm)
   12 : moteur IN3
   13 : moteur IN4
   A1 : trig capteur ultrasons
   A2 : écho capteur ultrasons
   A3 : mesure de tension
   A4 : data écran OLED
   A5 : clock écran OLED

J'ai mis la mesure de tension sur la A3 pour libérer la A0 (si tu restes sur la carte Uno) que tu ne pouvais pas accéder. Mais il faut la A1 pour le capteur ultrasons : si elle n'est pas accessible, il suffit d'utiliser la broche 6 (digitale) qui était utilisée par un bouton, ça devrait fonctionner :
Code: [Select]
// Ultrasons Pins
#define TRIG_PIN A1
devient
Code: [Select]
// Ultrasons Pins
#define TRIG_PIN 6


Tu peux tester. J'ai mis peu de sorties sur l'interface série (pour débugguer) pas par excès de confiance mais parce que je suis parti de la version V1 qui en avait déjà peu. Si tu vois que ça ne marche pas comme attendu (100% de chance), il faudra ajouter des sorties série pour voir comment le code se comporte.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up