Bonjour,
Je me présente : Eléanor Chaillou, étudiante en CPGE en deuxième année.
Mon projet : dans le cadre de mon cursus, je dois préparer un TIPE. Pour moi, il s'agit d'assurer l'asservissement en force d'un doigt bionique à l'aide d'un servomoteur Fitech 9g FS90 et d'un capteur de force FSR402.
Je suis arrivée au point où j'ai réussi à faire contrôler le servomoteur et le capteur de force de manière indépendante.
Mon montage : un doigt dont la position est commandée par le servomoteur et qui appuie plus ou moins sur un capteur de force. Tout est alimenté par un Arduino.
Mon problème : j'indique ma consigne de force que j'aimerais obtenir dans mon moniteur série. Mon doigt est censé plus ou moins avancer en fonction de la valeur renvoyée par le capteur de force. Néanmoins, même si la consigne est largement dépassée, le doigt continue d'avancer.
Mon code : (mélange entre Internet et ce que j'ai écrit)
/* Sweep
by BARRAGAN <http://barraganstudio.com>
This example code is in the public domain.
modified 8 Nov 2013
by Scott Fitzgerald
https://www.arduino.cc/en/Tutorial/LibraryExamples/Sweep
*/
#define FORCE_SENSOR_PIN A1 // the FSR and 10K pulldown are connected to A0
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
Serial.begin(9600);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
int analogReading = analogRead(FORCE_SENSOR_PIN);
// int analogReadingBefore;
Serial.print("Force sensor reading = ");
Serial.print(analogReading);
Serial.print("\n");
// print the raw analog reading
delay(1000);
int angle = 90;
myservo.write(angle);
while (Serial.available() > 0) {
// look for the next valid integer in the incoming serial stream:
int consigne = Serial.parseInt();
while (analogReading!=consigne)
{
if (analogReading<consigne){
angle+=10;
myservo.write(angle);
int analogReading = analogRead(FORCE_SENSOR_PIN);
Serial.print("Force sensor reading = ");
Serial.print(analogReading);
Serial.print("\n");
delay(50);
}
if (analogReading>consigne) {
angle-=50;
myservo.write(angle);
int analogReading = analogRead(FORCE_SENSOR_PIN);
Serial.print("Force sensor reading = ");
Serial.print(analogReading);
Serial.print("\n");
delay(50);
}
}
delay(10);
char mon_caractere = Serial.read(); //pour purger la memoire de Serial
// Serial.flush(); // idem, mais ne fonctionne pas ! ;-(
} // waits 15 ms for the servo to reach the position
}
Pourriez-vous m'aider, s'il vous plaît ? Merci d'avance pour vos réponses