Bonjour,
pourriez-vous m'aider, j'ai un problème dans mon script mais je ne le trouve pas, le servomoteur revient en position initial et je ne sais pas pourquoi. Je vous explique le projet:
j'ai connecté deux cartes Arduino grâce à un kit de deux modules Rf, un émetteur et un récepteur, ce qui me permet de contrôler à distance un servomoteur grâce à un potentiomètre a un axe.
J'arrive bien a envoyer l'information de l'angle que je souhaite donner au servomoteur, mais il alterne entre la position envoyer et la position initial en boucle.
voici le cote émetteur :
#include <RCSwitch.h>
#include <Servo.h>
#include <SoftwareSerial.h>
RCSwitch mySwitch = RCSwitch();
Servo servo_direction;
unsigned long LED_OFF = 1327124;
unsigned long LED_ON = 1327125;
unsigned long LED_ON_1 = 1327126;
unsigned long LED_OFF_1 = 1327127;
int pos=0;
int variateur=0;
int pot=A0;
int val;
int pinBouton;
int pinBouton1;
void setup() {
Serial.begin(9600);
mySwitch.enableTransmit(9);
Serial.begin(9600);
pinBouton=10;
pinBouton1=8;
pinMode(pinBouton,INPUT);
pinMode(pinBouton1,INPUT);
}
void loop() {
val=analogRead(pot);
val=map(val,0,1023,65,115);
mySwitch.send(val, 24);
boolean etatBouton=digitalRead(pinBouton);
if (etatBouton == 1) {
mySwitch.send(LED_ON, 24);
}
else
{
mySwitch.send(LED_OFF, 24);
}
boolean etatBouton1=digitalRead(pinBouton1);
if (etatBouton1 == 1) {
mySwitch.send(LED_ON_1, 24);
}
else
{
mySwitch.send(LED_OFF_1, 24);
}
}
voici le code récepteur :
#include <RCSwitch.h>
#include <Servo.h>
#include <SoftwareSerial.h>
const int LED = 3;
const int LED_1 = 4;
int val;
Servo servo_direction;
RCSwitch mySwitch = RCSwitch();
void setup() {
pinMode(LED, OUTPUT);
pinMode(LED_1, OUTPUT);
Serial.begin(9600);
mySwitch.enableReceive(0);
servo_direction.attach(6);
servo_direction.write(90);
}
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
}
else {
if (mySwitch.getReceivedValue()==1327125)
digitalWrite(LED, HIGH);
if (mySwitch.getReceivedValue()==1327124)
digitalWrite(LED, LOW);
if (mySwitch.getReceivedValue()==1327126)
digitalWrite(LED_1, HIGH);
if (mySwitch.getReceivedValue()==1327127)
digitalWrite(LED_1, LOW);
if (65<mySwitch.getReceivedValue()<115)
val=mySwitch.getReceivedValue();
}
mySwitch.resetAvailable();
}
servo_direction.write(val);
}
Merci de votre aide.