J'ai déjà exposé mon problème juste au dessus....
Pour ce qui est du matériel je dispose d'un motoréducteur et d'une arduino uno. Pour ce que j'ai fait voici le montage que j'ai retranscris sur tinkercad afin que cela soit plus clair. Et voici le code qui va avec.
Je n'arrive donc pas à faire diminuer la vitesse de mon moteur.
const int motor_enablePin = 11; // pont en H
const int motor_in1 = 13; // avance
const int motor_in2 = 12; // recule
const int speed = 255; // vitesse du moteur
const byte triggerPin = 4;
const byte echoPin = 5;
const unsigned long measure_timeout = 25000UL; // temps nécessaire avant de considérer qu'il n'y a pas d'obstacle
const float sound_speed = 340.0 / 1000; // vitesse du son dans l'air
void setup()
{
pinMode(motor_enablePin, OUTPUT); // initialisation du moteur
pinMode(motor_in1, OUTPUT);
pinMode(motor_in2, OUTPUT);
pinMode(triggerPin, OUTPUT); // initialisation du capteur
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
Serial.begin(115200);
}
void loop()
{
digitalWrite(motor_enablePin, HIGH);
analogWrite(motor_in1, speed);
analogWrite(motor_in2, 0);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
long measure = pulseIn(echoPin, HIGH, measure_timeout);
float distance_mm = measure / 2.0 * sound_speed;
/*
if(distance_mm <= 1000 && distance_mm > 500)
{
for(int slowdown=100; slowdown>=0; slowdown-=25)
{
int value = map(slowdown, 100, 0, 255, 0);
analogWrite(motor_enablePin, value);
Serial.print(F("Distance: "));
Serial.print(distance_mm /10.0, 2);
Serial.print(F(" cm,"));
Serial.print(" Vitesse: +");
Serial.print(value);
Serial.println(" rpm");
}
}
*/
/*
if(distance_mm <= 1000)
{
do
{
slowdown(100);
Serial.print(F("Distance: "));
Serial.print(distance_mm /10.0, 2);
Serial.print(F(" cm,"));
Serial.print(" Vitesse: +");
Serial.print(speed*100/255);
Serial.println(" rpm");
}
while (distance_mm > 500);
}
*/
Serial.print(F("Distance: "));
Serial.print(distance_mm / 10.0, 2);
Serial.print(F(" cm,"));
if (distance_mm <= 100)
{
analogWrite(motor_in1, 0);
analogWrite(motor_in2, speed);
Serial.print(" Vitesse: -");
}
else
Serial.print(" Vitesse: +");
Serial.print(speed * 100 / 255);
Serial.println(" rpm");
delay(1000);
}
/*
void slowdown(int percentage)
{
int power = map(percentage, 0, 100, 0, 255);
analogWrite(motor_enablePin, power);
}
*/
code_moteur.ino (2.29 KB)