Go Down

Topic: Bateau V1 (Read 4240 times) previous topic - next topic

ArduinoFree

#30
Jun 15, 2018, 02:51 pm Last Edit: Jun 15, 2018, 02:54 pm by ArduinoFree
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  :).

ArduinoFree

#31
Jun 15, 2018, 06:30 pm Last Edit: Jun 15, 2018, 09:33 pm by ArduinoFree
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

lesept

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.
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
Jun 15, 2018, 11:29 pm Last Edit: Jun 15, 2018, 11:32 pm by ArduinoFree
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+


lesept

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);
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#35
Jun 16, 2018, 06:13 pm Last Edit: Jun 16, 2018, 07:59 pm by ArduinoFree
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.




lesept

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.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

lesept

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 :
  • pleine eau : pas de pompe
  • bordure droite : pompe droite ON, gauche OFF
  • bordure gauche : pompe gauche ON, droite OFF

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).
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
Jun 16, 2018, 11:31 pm Last Edit: Jun 17, 2018, 12:45 am by ArduinoFree
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

lesept

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...
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
Jun 17, 2018, 06:49 am Last Edit: Jun 17, 2018, 07:37 am by ArduinoFree
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)



lesept

#41
Jun 17, 2018, 11:21 am Last Edit: Jun 17, 2018, 11:22 am by lesept
Ç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)
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

kammo

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
Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

ArduinoFree


ArduinoFree

#44
Jun 17, 2018, 03:00 pm Last Edit: Jun 17, 2018, 03:21 pm by ArduinoFree
Ç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)

Go Up