Offline
Full Member
Karma: 0
Posts: 140
|
 |
« on: December 07, 2012, 07:37:41 am » |
Bonjour, j'ai actuellement le programme suivant:
const int BP=2; //Cette variable permet la déclaration des constantes de broches utilisées dans le branchement effectué sur l'arduino. const int VITESSE=3; //Cette variable permet la déclaration des constantes de broches utilisées dans le branchement effectué sur l'arduino. const int Voie_0=0; //Cette variable permet la déclaration des constantes de broches utilisées dans le branchement effectué sur l'arduino pour un affiche analogique void loop(){ // BOUCLE QUI VA PERMETTRE AU PROGRAMME DE RECOMMENCER SANS FIN L4ALGORITHME JUSQUA LA MISE HORS TENSION DU SYSTEME ARDUINO int mesure_brute=0;// Cette variable d'acquisition va permettre au programme une acquisition du résultat brute et le convertir en analogique numérique float mesuref=0.0;// Cette variable d'acquisition va permettre au programme d'effectuer un calcul résultat décimal et le convertir en analogique numérique pinMode(VITESSE, OUTPUT); //Fonction mettant la broche de vitesse connectée à l'arduino en sortie //DEBUT DE LA FONCTION QUI PERMET LA GESTION DE LA VITESSE DU MOTEUR //debut des tensions qui vont permettre les mesures de la tension avec la résistance variable mesure_brute=analogRead(Voie_0); // Fonction calculant la tension sur la voix analogique mesure_brute=map(mesure_brute,0,1023,0,255); // Fonction qui adapte la tenion et la mesure à l'echelle de valeur //génération impulsion PWM fonction de la tension mesurée analogWrite(VITESSE,mesure_brute); //Fonction qui va permetttre de fixer l'impulsion de commande de la vitesse du moteur en fonction de la mesure de la tension en sortie de la résistance } //FIN DE LA FONCTION QUI VA REPETER SANS FIN LE PROGRAMME // ********************************************************************************
// --- Fin programme ---
et quand je le compile dans le logiciel arduino, j'ai les erreurs suivantes: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build823819488904814423.tmp\core.a(main.cpp.o): In function `main':
E:\arduino-0018-fr\arduino-0018-fr\hardware\arduino\cores\arduino/main.cpp:7: undefined reference to `setup'
Je suis débutant dans l'arduino, il s'agit de mon premier programme. Je dois effectuer un programme qui puisse contrôler un moteur a courant continue ainsi que son sens (sans boutons ou autres) juste a partir d'une séquence données par une personne qui veut faire fonctionner le moteur à courant continu à son besoin (la personne peut être comparée a un micro contrôleur).
Si vous avez des suggestions, je suis preneur,
Merci d'avance
Edwin
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Faraday Member
Karma: 8
Posts: 2611
|
 |
« Reply #1 on: December 07, 2012, 07:46:21 am » |
bonjour déjà l'urgence est toute relative et ce n'est pas la peine de multiplier les topicssans verifier si ton programme repondra a tes attentes il manque le setup en debut apres ajout de ça en tout debut du sketch et des trois premieres lignes sous void ça compile void setup() {
} void loop(){ // BOUCLE QUI VA PERMETTRE AU PROGRAMME DE RECOMMENCER SANS FIN L4ALGORITHME JUSQUA LA MISE HORS TENSION DU SYSTEME ARDUINO const int BP=2; //Cette variable permet la déclaration des constantes de broches utilisées dans le branchement effectué sur l'arduino. const int VITESSE=3; //Cette variable permet la déclaration des constantes de broches utilisées dans le branchement effectué sur l'arduino. const int Voie_0=0; //Cette variable permet la déclaration des constantes de broches utilisées dans le branchement effectué sur l'arduino pour un affiche analogique int mesure_brute=0;// Cette variable d'acquisition va permettre au programme une acquisition du résultat brute et le convertir en analogique numérique float mesuref=0.0;// Cette variable d'acquisition va permettre au programme d'effectuer un calcul résultat décimal et le convertir en analogique numérique pinMode(VITESSE, OUTPUT); //Fonction mettant la broche de vitesse connectée à l'arduino en sortie //DEBUT DE LA FONCTION QUI PERMET LA GESTION DE LA VITESSE DU MOTEUR //debut des tensions qui vont permettre les mesures de la tension avec la résistance variable mesure_brute=analogRead(Voie_0); // Fonction calculant la tension sur la voix analogique mesure_brute=map(mesure_brute,0,1023,0,255); // Fonction qui adapte la tenion et la mesure à l'echelle de valeur //génération impulsion PWM fonction de la tension mesurée analogWrite(VITESSE,mesure_brute); //Fonction qui va permetttre de fixer l'impulsion de commande de la vitesse du moteur en fonction de la mesure de la tension en sortie de la résistance } //FIN DE LA FONCTION QUI VA REPETER SANS FIN LE PROGRAMME // ********************************************************************************
// --- Fin programme ---
|
|
|
|
« Last Edit: December 07, 2012, 07:52:34 am by Artouste »
|
Logged
|
|
|
|
|
Forum Moderator
Geneva
Offline
Faraday Member
Karma: 22
Posts: 2894
Yoplait... le pt'it suisse
|
 |
« Reply #2 on: December 07, 2012, 08:06:23 am » |
J'ai fait un peu de ménage... 
|
|
|
|
|
Logged
|
MacBook intel core 2 duo os X snow Leopard 10.6 eMac PPc G4 os X Leopard 10.5 powerbook G4 os X Leopard 10.5 imac PPC G3 os X Panther 10.3.9 Arduino Diecimila Arduino Mega Arduino Standalone Arduino 1307.04 
|
|
|
|
Bretagne
Offline
God Member
Karma: 8
Posts: 659
|
 |
« Reply #3 on: December 07, 2012, 11:39:56 am » |
C'est dur à suivre, trop de commentaire tue le commentaire.
Un pinMode dans un loop, c'est pas très heureux, surtout sur un analogwrite...
Quand tu dis urgent, c'est dans quel sens?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 140
|
 |
« Reply #4 on: December 07, 2012, 01:40:44 pm » |
Je ne comprends pas ta réponse. Urgent dans le sens j'en ai besoin pour la semaine prochaine.
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4451
Arduino Hacker
|
 |
« Reply #5 on: December 07, 2012, 03:07:53 pm » |
Bonjour, Un conseil: il faudrait revoir les bases  Tout y est mais pas sous la bonne forme. Les constantes sont généralement globales (hors de toutes fonctions). De même la partie configuration hardware doit ce trouver dans setup() pour n'être réaliser qu'une seule fois. Sinon pour le reste, il y a eu une variable et une constante non utilisé. Ps: trop de commentaires n'est pas bon, surtout si il ne sont pas explicatif (ce qui est le cas ici)  Exemple de code plus lisible: const byte PIN_VITESSE = 3; // Broche de contrôle du moteur par PWM const byte PIN_MESURE = A0; // Broche de mesure analogique (signal de contrôle)
// Fonction d'initialisation hardware void setup() { pinMode(PIN_VITESSE, OUTPUT); // Mise en sortie de la broche connecté au moteur }
// Routine de travail (boucle infini) void loop() { int mesure_brute = 0; // Mesure brute mesuré sur la broche analogique mesure_brute = analogRead(PIN_MESURE); // Mesure de la tension sur la broche du signal de contrôle mesure_brute = map(mesure_brute, 0, 1023, 0, 255); // Linéarisation de la mesure depuis [0 ~ 1023] vers [0 ~ 255] analogWrite(PIN_VITESSE, mesure_brute); // Génération d'un signal PWM contrôlant la vitesse du moteur }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 140
|
 |
« Reply #6 on: December 08, 2012, 05:05:42 am » |
Merci pour tes explications. Dans ce code, par exemple, si je veux une vitesse de 300 tours minutes, quelles variables dois-je modifierou comment dois-je faire? const byte PIN_VITESSE = 3; // Broche de contrôle du moteur par PWM const byte PIN_MESURE = A0; // Broche de mesure analogique (signal de contrôle)
// Fonction d'initialisation hardware void setup() { pinMode(PIN_VITESSE, OUTPUT); // Mise en sortie de la broche connecté au moteur }
// Routine de travail (boucle infini) void loop() { int mesure_brute = 0; // Mesure brute mesuré sur la broche analogique mesure_brute = analogRead(PIN_MESURE); // Mesure de la tension sur la broche du signal de contrôle mesure_brute = map(mesure_brute, 0, 1023, 0, 255); // Linéarisation de la mesure depuis [0 ~ 1023] vers [0 ~ 255] analogWrite(PIN_VITESSE, mesure_brute); // Génération d'un signal PWM contrôlant la vitesse du moteur }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Faraday Member
Karma: 8
Posts: 2611
|
 |
« Reply #7 on: December 08, 2012, 05:25:55 am » |
Merci pour tes explications. Dans ce code, par exemple, si je veux une vitesse de 300 tours minutes, quelles variables dois-je modifierou comment dois-je faire? mesure_brute = analogRead(PIN_MESURE); // Mesure de la tension sur la broche du signal de contrôle mesure_brute = map(mesure_brute, 0, 1023, 0, 255); // Linéarisation de la mesure depuis [0 ~ 1023] vers [0 ~ 255] analogWrite(PIN_VITESSE, mesure_brute); // Génération d'un signal PWM contrôlant la vitesse du moteur } bonjour il faut connaitre la vitesse max de ton moteur pour un PWM à 255, et en supposant que la relation vitesse/PWM soit lineaire (ce qui n'est surement pas le cas) il faut que tu divise Vmax/255 pour avoir l'echelon du nb de tours pour un pas de PWM. ex si la Vmax est 6000 t/mn , un echelon de PWM correspond ~ à 24 t/mn et donc pour 300 tours le pwm theorique a appliqué est de 12 = 300/25
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 140
|
 |
« Reply #8 on: December 08, 2012, 05:42:25 am » |
Merci, donc ça veut dire que si je veux une vitesse de 300t/mins, je devrais avoir le pwm theorique a appliqué, 12. Mais où mettre cette valeur 12?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Faraday Member
Karma: 8
Posts: 2611
|
 |
« Reply #9 on: December 08, 2012, 05:47:10 am » |
Merci, donc ça veut dire que si je veux une vitesse de 300t/mins, je devrais avoir le pwm theorique a appliqué, 12. Mais où mettre cette valeur 12?
là analogWrite(PIN_VITESSE, mesure_brute); pour test simple faire mesure_brute=12; analogWrite(PIN_VITESSE, mesure_brute); ou analogWrite(PIN_VITESSE, 12);
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 140
|
 |
« Reply #10 on: December 08, 2012, 05:52:46 am » |
Est ce que dans le code, je dois remplacer toutes les mesure_brute par 12? Code d'origine] mesure_brute = analogRead(PIN_MESURE); // Mesure de la tension sur la broche du signal de contrôle mesure_brute = map(mesure_brute, 0, 1023, 0, 255); // Linéarisation de la mesure depuis [0 ~ 1023] vers [0 ~ 255] analogWrite(PIN_VITESSE, mesure_brute); // Génération d'un signal PWM contrôlant la vitesse du moteur Code modifié:12 = analogRead(PIN_MESURE); // Mesure de la tension sur la broche du signal de contrôle 12 = map(mesure_brute, 0, 1023, 0, 255); // Linéarisation de la mesure depuis [0 ~ 1023] vers [0 ~ 255] analogWrite(PIN_VITESSE, 12); // Génération d'un signal PWM contrôlant la vitesse du moteur
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4451
Arduino Hacker
|
 |
« Reply #11 on: December 08, 2012, 07:02:25 am » |
Est ce que dans le code, je dois remplacer toutes les mesure_brute par 12?
Va vraiment falloir revoir les bases du C  const byte PIN_VITESSE = 3; // Broche de contrôle du moteur par PWM
// Fonction d'initialisation hardware void setup() { pinMode(PIN_VITESSE, OUTPUT); // Mise en sortie de la broche connecté au moteur }
// Routine de travail (boucle infini) void loop() { analogWrite(PIN_VITESSE, 12); // Génération d'un signal PWM contrôlant la vitesse du moteur }
|
|
|
|
|
Logged
|
|
|
|
|
France S-O ou exil en IDF
Offline
Edison Member
Karma: 15
Posts: 1177
|
 |
« Reply #12 on: December 08, 2012, 08:56:13 am » |
Va vraiment falloir revoir les bases du C smiley-wink Si c'est pour un devoir d'école dis le tout de suite parce que si tu le caches et qu'on le découvre par nous même ce ne sera pas bon pour la suite  . Depuis un mois tu ne serais que le 2eme ou le 3eme dans ce cas. Un seul s'est présenté honnêtement sans rien cacher, et c'est sûr que c'est la meilleure méthode pour avoir de l'aide. Pour info : Calendrier des projets de Terminale "S" option "science de l'ingénieur" -> S-SI. Septembre à novembre : phase de définition A partir de décembre : phase de réalisation Fin : les projets doivent remis en vue de notation courant Juin. EDIT : Fin avril De toute façon : il n'y a pas de travail urgent il n'y a que des gens en retard.
|
|
|
|
« Last Edit: December 08, 2012, 09:04:31 am by 68tjs »
|
Logged
|
Aides toi et la communauté t'aidera
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 140
|
 |
« Reply #13 on: December 08, 2012, 12:35:45 pm » |
Je suis en première SSI et je dois écrire cette maquette pour piloter un moteur pour un robot pour mon projet de TPE. Quel est la différence entre ce code: const byte PIN_VITESSE = 3; // Broche de contrôle du moteur par PWM
// Fonction d'initialisation hardware void setup() { pinMode(PIN_VITESSE, OUTPUT); // Mise en sortie de la broche connecté au moteur }
// Routine de travail (boucle infini) void loop() { analogWrite(PIN_VITESSE, 12); // Génération d'un signal PWM contrôlant la vitesse du moteur } et celui ci: const byte PIN_VITESSE = 3; // Broche de contrôle du moteur par PWM const byte PIN_MESURE = A0; // Broche de mesure analogique (signal de contrôle)
// Fonction d'initialisation hardware void setup() { pinMode(PIN_VITESSE, OUTPUT); // Mise en sortie de la broche connecté au moteur }
// Routine de travail (boucle infini) void loop() { int mesure_brute = 0; // Mesure brute mesuré sur la broche analogique mesure_brute = analogRead(PIN_MESURE); // Mesure de la tension sur la broche du signal de contrôle mesure_brute = map(mesure_brute, 0, 1023, 0, 255); // Linéarisation de la mesure depuis [0 ~ 1023] vers [0 ~ 255] analogWrite(PIN_VITESSE, mesure_brute); // Génération d'un signal PWM contrôlant la vitesse du moteur }
|
|
|
|
« Last Edit: December 08, 2012, 04:32:16 pm by Jean-François »
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 140
|
 |
« Reply #14 on: December 08, 2012, 12:37:04 pm » |
Et j'ai oublié que je ne connaissais rien à la programmation il y a quelques temps.
|
|
|
|
|
Logged
|
|
|
|
|
|