Bonjour terwal
Oui, c'est pire
, j'ai supprimé les liens, je n'ai pas compris ce qui c'est passé avec les raccourcis ChatGPT.
Je mets la version ChatGPT Arduino, corrigée pour fonctionner avec des potentiomètres, j'ai laissé les lignes inutilisées.
A0 = distance
A1 = vitesse
Le programme:
// Déclarations des broches
const int distanceSensorPin = A0; // Broche pour le capteur de distance (analogique)
const int speedSensorPin = A1; // Broche pour le capteur de vitesse (analogique)
const int actuatorPin = 9; // Broche pour l'actionneur (PWM)
// Variables pour stocker les valeurs des capteurs
volatile int speed = 0;
int distance = 0;
// Variables pour la gestion du temps
unsigned long previousMillis = 0;
const long interval = 100; // Intervalle de mise à jour en millisecondes
void setup() {
pinMode(speedSensorPin, INPUT);
pinMode(distanceSensorPin, INPUT);
pinMode(actuatorPin, OUTPUT);
// Configurer l'interruption pour le capteur de vitesse
//attachInterrupt(digitalPinToInterrupt(speedSensorPin), countSpeed, RISING);
Serial.begin(9600);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Lire la distance
distance = map(analogRead(distanceSensorPin), 0, 1023, 100, 0);
speed = map(analogRead(speedSensorPin), 0, 1023, 0, 100);
// Calculer la force de freinage
int brakeForce = calculateBrakeForce(speed, distance);
// Appliquer la force de freinage
analogWrite(actuatorPin, brakeForce);
// Afficher les valeurs pour le débogage
Serial.print("Speed: ");
Serial.print(speed);
Serial.print(" RPM, Distance: ");
Serial.print(distance);
Serial.print(" cm, Brake Force: ");
Serial.println(brakeForce);
// Réinitialiser la vitesse pour le prochain intervalle
speed = 0;
}
}
// Fonction d'interruption pour compter la vitesse
//void countSpeed() {
//speed++;
//}
// Fonction pour calculer la force de freinage
int calculateBrakeForce(int currentSpeed, int currentDistance) {
// Exemple simple de calcul : augmenter la force de freinage en fonction de la vitesse et de la proximité
int brakeForce = map(currentSpeed, 0, 100, 0, 255); // Adapter les valeurs max en fonction de votre capteur
if (currentDistance < 50) { // Si la distance est inférieure à 50 cm, augmenter la force de freinage
brakeForce = constrain(brakeForce + map(currentDistance, 0, 50, 100, 0), 0, 255);
}
return brakeForce;
}
Bonne journée
jpbbricole