Bonjour,
Je sollicite votre aide car je suis sur un projet de porte domotique et un problème s'oppose à moi.
Je voudrais que dans un premier temps lorsque j'appuie sur le bouton ouverture dans mon application la servomoteur "S" (serrure) s'ouvre puis après 2sec le servomoteur "P" (porte) s'ouvre à son tour. Puis lorsque j'appuie sur fermeture se soit d'abord le servomoteur "P" qui tourne et ensuite le servomoteur "S" qui tourne. Or ce n'est pas le cas mais l'inverse qui se produit !! Pourriez vous m'aidez svp ?
ci joint le code :
"#include <SoftwareSerial.h> // TX RX software library for bluetooth
#include <Servo.h> // servo library
Servo myservo; // servo name
Servo myservob; // servo name
int bluetoothTx = 10; // bluetooth tx to 10 pin
int bluetoothRx = 11; // bluetooth rx to 11 pin
void setup()
{
myservo.attach(9); // attach servo signal wire to pin 9
myservob.attach(3); // attach servo signal wire to pin 9
//Setup usb serial connection to computer
Serial.begin(9600);
//Setup Bluetooth serial connection to android
bluetooth.begin(9600);
}
void loop()
{
//Read from bluetooth and write to usb serial
if(bluetooth.available()> 0 ) // receive number from bluetooth
{
int servopos = bluetooth.read(); // save the received number to servopos
Serial.println(servopos); // serial print servopos current number received from bluetooth
myservo.write(servopos); // roate the servo the angle received from the android app
delay(1000);
myservob.write(servopos); // roate the servo the angle received from the android app
en admettant que tu mettes 9 en ouverture et 0 en fermeture le truc est simple
int position_precedente = 5;
blabla
if(bluetooth.available()> 0 ) // receive number from bluetooth
{
int servopos = bluetooth.read(); // save the received number to servopos
Serial.println(servopos); // serial print servopos current number received from bluetooth
if (servopos > position_precedente){
myservo.write(servopos); // roate the servo the angle received from the android app
delay(1000);
myservob.write(servopos); // roate the servo the angle received from the android app
}
if (servopos < position_precedente){
myservob.write(servopos); // roate the servo the angle received from the android app
delay(1000);
myservo.write(servopos); // roate the servo the angle received from the android app
delay(1000);
}
en admettant que tu mettes 9 en ouverture et 0 en fermeture le truc est simple
int position_precedente = 5;
blabla
if(bluetooth.available()> 0 ) // receive number from bluetooth
{
int servopos = bluetooth.read(); // save the received number to servopos
Serial.println(servopos); // serial print servopos current number received from bluetooth
if (servopos > position_precedente){
myservo.write(servopos); // roate the servo the angle received from the android app
delay(1000);
myservob.write(servopos); // roate the servo the angle received from the android app
}
if (servopos < position_precedente){
myservob.write(servopos); // roate the servo the angle received from the android app
delay(1000);
myservo.write(servopos); // roate the servo the angle received from the android app
delay(1000);
}
Bonjour
Merci d'avoir prit le temps de me répondre. Je vois se que vous voulez dire mais je ne comprends pas à quoi correspond le "5" de position_précédente. Et le 9 et 0 dont vous parlez c'est l'angle que le servo doit faire ?
Bonjour
Merci d'avoir prit le temps de me répondre. Je vois se que vous voulez dire mais je ne comprends pas à quoi correspond le "5" de position_précédente. Et le 9 et 0 dont vous parlez c'est l'angle que le servo doit faire ?
AMHA, tu ne sais pas comment fonction un servomoteur, ca se fait par un angle
dans l'exemple angle à 9 pour ouvrir et 0 pour fermer
d'après toi, à quoi peut correspondre "position_precedente ", j'aurai pu mettre "position_milieu ou centrale"
sinon, autre solution, mettre un angle X déterminé ouvert et Y fermé
tu envoie 1, ca ouvre à angle X
tu envoie 0, ca ferme à angle Y
int ouvert = 90;
int ferme = 0;
blabla
if(bluetooth.available()> 0 ) // receive number from bluetooth
{
int option_gache = bluetooth.read(); // save the received number to servopos
Serial.println(option_gache); // serial print servopos current number received from bluetooth
if (option_gache == 1){
myservo.write(ouvert); // roate the servo the angle received from the android app
delay(1000);
myservob.write(ouvert); // roate the servo the angle received from the android app
}
if (option_gache == 0){
myservob.write(ferme); // roate the servo the angle received from the android app
delay(1000);
myservo.write(ferme); // roate the servo the angle received from the android app
delay(1000);
}