Bonjour
Je fais partie d un projet en SI qui s'intitule velo controle par smartphone et je m occupe de la partie commande de freinage par un servomoteut
Mon programme consiste à lire le freinage et à le commande par le servomoteur
Mais je ne sais pas si j ai juste je vous montre ce que j ai déjà fais et dites moi ce qu il faut corrige sachant que je suis débutant
-1- la déclaration d'une fonction qui ne retourne aucune valeur s'écrit "void" et pas "Void" (pas de majuscule
-2- #define CLD_Freiner="cmd_freiner"
ne sert a rien cette constante n'est utilisée nulle part
-3- if cmd_freiner==1
devrait s'écrire if(cmd_freiner==1)
mais ça ne marchera pas la variable cmd_freiner n'est pas déclarée, de plus elle n'a pas étée initialisée avec une valeur
-4- Frein=1
tu tonne une valeur à une variable qui n'est pas déclarée
-5- dans ton setup, tu déclare un objet monservo et tu lui donne une consigne
ça correspond à quoi, à quelle position du servo ?
-6- dans ton loop
tu ne fais rien
la constante CMD_freiner reçoit pour valeur "cmd_freiner"
il n'y aura jamais aucune relation avec la variable cmd_freiner
d'autre part un freinage n'est jamais une valeur 0 ou 1, ce qui résulterait à
roue non freinée pour la valeur 0
roue bloquée pour la valeur 1
en général quand tu freine, tu appuie plus ou moins fort sur le levier de frein, qui génère une puissance de freinage proportionnelle
pour cela, il te faut faire l'acquisition de la position du levier de frein
et ensuite calculer la valeur à transmettre au servo
je n'ai pas de formule à te donner, mais ça peut être trouvé par expérimentation
Dans le programme tu ne programmes pas la force du servo, tu indiques sa position (l'angle du bras).
A vous de concevoir un couplage correct entre le servo et le point d'application afin de garantir la force et la course suffisante pour assurer le freinage.
Il te faut partir du principe qu'une carte Arduino ce n'est qu'un microcontrolleur associé à quelques composants électroniques qui lui permettent de fonctionner
Et un microcontrolleur c'est quelque chose de très con qui ne sait absolument rien faire tant qu'on ne lui a pas dit ce qu'il devait faire. Autrement dit un miconcontrolleur n'est qu'un bout de plastique inutile tant qu'il n'a pas été programmé
Par contre il a la capacité de répéter insallablement et de manière très rapide le programme qu'il contient
Tout "l'art" de la programmation consiste à indiquer au microcontrolleur ce qu'il doit faire et ce de façon extrèmement précise
Mais ce n'est pas tout. Sur une carte Arduino il y a une multitude de connecteurs. Chaque connecteur va permettre au micontrolleur de communiquer avec un environnement extérieur. Par exemple led, bouton poussoir, potentiomètre, carte d'interface (shield), ...
Vu les difficultés que tu rencontres, je te conseille de partir à la découverte de l'Arduino via le blog d'Eskimon
Egalement tu peu charger les programmes d'exemple et essayer de comprendre comment ils sont écris et à quoi sert chaque ligne de proramme
N'hésite pas à communiquer et a te mettre en relation avec des personnes déjà familiarisées avec le monde Arduino (profs, élèves, amis, ...)
Mais la fonction lire le freinage je la comprends pas car elle ne va pas affiché de valeur
La fonction lire le freinage? quelle fonction ?
Il n'y a rien dans ton programme qui ressemble à ça
Un projet de ce type, d'après ce que j'ai pu comprendre, ne se resume pas à quelques lignes de code
Quelle relation y a-t'il entre ta care Arduino, l'utilisateur et la partie mécanique du vélo ?
Si une décision de freinage est effectuée, comment la carte Arduino est-elle informée de cette décision ?
Une fois que la carte Arduino a acquis cette information quelle décision doit-elle prendre et comment donner un ordre à un organe mécanique (servo dans ton cas)
Bon, ça commence à se construire, mais c'est encore un peu en désordre
Avec freinage= analogRead(freinagePin); tu fais une acquisition de données venant de l'extérieur de la carte Arduino
Mais int freinagePin=0; n'est pas une entrée analogique sur la carte.
Les entrées analogiques sont nommées A0, A1, A2, ...
Donc il vaudrait mieux écrire int freinagePin=A0;
Ensuite regarde sur la doc de la carte où se situe le connecteur correspondant.
Dans cette hypothèse, tu vas faire l'acquisition d'une tension variant de 0 à 5V, ce qui voudrait dire qu'il y a un potentiomètre ou équivalent fixé mécaniquement au levier de frein. L'acquisition avec analogRead te donnerais une information sur la position du levier de frein.
Et dans ce cas on n'est plus dans le cadre de ton projet puisque l'information concernant le freinage doit être fournie par un Smartphone
Il reste de nombreux points à résoudre
L'application pour le Smartphone est-elle déjà réalisée ?
Comment est-ce qu'elle transmet les données ?
Sous quelle forme ?
Comment est-ce que tu reçois ces données sur la carte Arduino ?
Ne perd pas de vue que c'est un projet SI et que c'est TON projet. Toutes les recherches documentaires que tu pourras faire ne peuvent que t'être bénéfiques
bon il serait temps de lire comment utiliser le forum et poster correctement, non?
corrigez votre post ci dessus et rajoutez les code tags autour du code: [code]`` [color=blue]// votre code ici[/color] ``[/code].
ça doit ressembler à cela:// votre code ici
(faites aussi ctrl-T (PC) or cmd-T (Mac) dans l'IDE avant de copier le code pour qu'il soit indenté correctement)
Au lieu de coder n'importe quoi (vous avez demandé à être franc....) pourriez vous répondre aux questions en #2 ?
Mon programme consiste à lire le freinage et à le commander par le servomoteur
question1: lire le freinage
comment allez vous "lire le freinage"? ça veut dire quoi? comment vous le mesurez? avec quoi?
question 2: le commander par le servomoteur
comment allez vous "le commander par le servomoteur"? ça veut dire quoi? comment ça va fonctionner mécaniquement? pour quel type d'étriers, est-ce la même force à appliquer ?
**question 3:**Quelle relation mathématique / physique entre la grandeur mesurée à la question 1 et les paramètres sur l'action du moteur?
Alsaciennn67:
Mon programme consiste à lire le freinage et à le commande par le servomoteur
On a l'impression très nette que vous vous lancez dans la programmation sans savoir ce qu'il faut faire.
Vous lisez le freinage comment, puisqu'il vient d'un smartphone?
Le freinage est codé comment?
Quelle relation relie votre servo à la fonction de freinage? Parce que comme l'a dit Alain46 un freinage ce n'est pas binaire. Suivant que l'on appuie plus ou moins fort sur le frein on applique un effort plus ou moins important sur l'organe de freinage.
On a fait des tests pour voir l'effort que le vélo a besoin pour freiner ainsi on a choisit notre servo en fonction de ça
Grâce au Bluetooth
Justement je sais pas comment le codé car il n'est pas binaire ..
Oui c'est la même force pour l'étrier