Go Down

Topic: problème de programmation besoin d'aide (Read 3 times) previous topic - next topic

helene76

Je peux pas le faire j'ai pas les droits, je suis dans une école donc impossible de réinstaller l'IDE

Jean-François

Tu télécharges ton ide sur une clé usb et tu la lances toujours depuis la clé usb, normalement ça devrait fonctionner.
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 Pa

helene76

D'accord j'essaie sa cette après midi je vous redit si sa fonctionne ou pas. Merci en tout cas.

helene76

Un nouveau problème survient : voici mon programme
Code: [Select]
#include <simpletimer.h>

/**
* Asservissement d'un moteur à l'aide d'un régulateur PID
* Avril 2012 - Black Templar
*/

//#include <SimpleTimer.h>   //http://arduino.cc/playground/Code/SimpleTimer
#define _DEBUG false

SimpleTimer timer;                 // Timer pour échantillonnage
const int _MOTEUR =  9;            // Digital pin pour commande moteur
unsigned int tick_codeuse = 0;     // Compteur de tick de la codeuse
int cmd = 0;                       // Commande du moteur

const int frequence_echantillonnage = 50;  // Fréquence du pid
const int rapport_reducteur = 29;          // Rapport entre le nombre de tours de l'arbre moteur et de la roue
const int tick_par_tour_codeuse = 32;      // Nombre de tick codeuse par tour de l'arbre moteur

float consigne_moteur_nombre_tours_par_seconde = 5.;  //  Nombre de tours de roue par seconde

float erreur_precedente = consigne_moteur_nombre_tours_par_seconde;
float somme_erreur = 0;   // Somme des erreurs pour l'intégrateur
float kp = 300;           // Coefficient proportionnel
float ki = 5.5;           // Coefficient intégrateur
float kd = 100;           // Coefficient dérivateur

/* Routine d'initialisation */
void setup() {
    Serial.begin(115200);         // Initialisation port COM
    pinMode(_MOTEUR, OUTPUT);     // Sortie moteur
    analogWrite(_MOTEUR, 255);    // Sortie moteur à 0

    delay(5000);                  // Pause de 5 sec pour laisser le temps au moteur de s'arréter si celui-ci est en marche

    attachInterrupt(0, compteur, CHANGE);    // Interruption sur tick de la codeuse (interruption 0 = pin2 arduino mega)
    timer.setInterval(1000/frequence_echantillonnage, asservissement);  // Interruption pour calcul du PID et asservissement
}

/* Fonction principale */
void loop(){
    timer.run();
    delay(10);
}

/* Interruption sur tick de la codeuse */
void compteur(){
    tick_codeuse++;  // On incrémente le nombre de tick de la codeuse
}

/* Interruption pour calcul du PID */
void asservissement()
{
    // Réinitialisation du nombre de tick de la codeuse
    int tick = tick_codeuse;
    tick_codeuse=0;

    // Calcul des erreurs
    int frequence_codeuse = frequence_echantillonnage*tick;
    float nb_tour_par_sec = (float)frequence_codeuse/(float)tick_par_tour_codeuse/(float)rapport_reducteur;
    float erreur = consigne_moteur_nombre_tours_par_seconde - nb_tour_par_sec;
    somme_erreur += erreur;
    float delta_erreur = erreur-erreur_precedente;
    erreur_precedente = erreur;

    // PID : calcul de la commande
    cmd = kp*erreur + ki*somme_erreur + kd*delta_erreur;

    // Normalisation et contrôle du moteur
    if(cmd < 0) cmd=0;
    else if(cmd > 255) cmd = 255;
    analogWrite(_MOTEUR, 255-cmd);

    // DEBUG
    if(_DEBUG)  Serial.println(nb_tour_par_sec,8);
}

L'adresse de la librairie est donné c'est celle que j'utilise seulement voici les erreurs que j'ai

In file included from PID.cpp:1:
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:9: error: stray '\302' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:9: error: stray '\267' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:9: error: stray '\302' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:9: error: stray '\267' in program
In file included from PID.cpp:1:
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:252:46: error: invalid suffix "aaea3b8475dc9f120d3ece631c6" on integer constant
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:253:62: error: invalid suffix "aaea3b8475dc9f120d3ece631c6" on integer constant
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: stray '#' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: stray '#' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: stray '#' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: stray '#' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: stray '#' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: stray '#' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:531: error: stray '#' in program
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:4: error: expected unqualified-id before '<' token
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: expected constructor, destructor, or type conversion before '.' token
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: expected unqualified-id before '<' token
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: expected constructor, destructor, or type conversion before '/' token
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: expected unqualified-id before '<' token
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: expected constructor, destructor, or type conversion before '.' token
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: expected unqualified-id before '<' token
C:\arduino-1.0\libraries\simpletimer/simpletimer.h:433: error: expected unqualified-id before '<' token

tonyryu

Je viens de tester ton code avec la librairie fraichement récupérée depuis le lien que tu as fourni.
Je n'ai aucun problème de compilation, mon IDE est en version 1.5.2.

Go Up