Bonsoir/Bonjour
J'ai un problème un peu simplet je pense mais pourtant je bloque dessus complètement depuis 4heures.
J'ai une lampe led RGB et un moteur Pas à Pas. J'ai donc deux programmes différents que je voudrais fusionner. Le problème c'est que quand je fusionne tout ça, la led RGB continue à clignoter comme je le souhaite, aucune différence, sauf que le moteur fait un mouvement, puis laisse la place à led, puis fait un mouvement, puis laisse la place à la led et ainsi de suite, en bref le moteur est encore plus lent, au lieu de faire un tour en 5 secondes, il fait un tour en une minute, c'est trop, ma fonction loop n'est donc pas correcte. I need your help !
PS: j'ai consulté plusieurs tuto et sujets du forum mais je bloque toujours.
Merci d'avance pour votre aide.
Moteur pas à pas
int IN1 = 7;
int IN2 = 6;
int IN3 = 5;
int IN4 = 4;
int _step = 0;
boolean dir = false;
int _speed = 1;
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop()
{
_step = StepperMotor(_step,dir, _speed);
}
int StepperMotor(int _step, int dir, int _speed)
{
switch(_step){
case 0:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
case 1:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
break;
case 2:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 3:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 4:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 5:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 6:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 7:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
default:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(_speed);
return _step;
}
Led RGB
int ledR = 1;
int ledB = 2;
int ledG = 3;
void setup() {
}
void loop() {
analogWrite(ledR,0);
analogWrite(ledG,255);
analogWrite(ledB,255);
delay(200);
analogWrite(ledR,255);
analogWrite(ledG,0);
analogWrite(ledB,0);
delay(50);
}