Un nouveau problème survient : voici mon programme
#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