// Controle d'un moteur à courant continu par PWM // Un potentiomètre doit être branché sur l'entrée A0 // Un bouton poussoir doit être cablé sur l'entrée D10 // Un pont en H peut être connecté sur les broches // D5 (broche moteur A), // D6 (broche moteur B), // D7 (broche enable), // Entrées-sorties int moteurA = 5; int moteurB = 6; int enableAB = 7; int activation_in = 10; // Détection front montant et activation bool val_activation = 0; bool old_val_activation = 0; bool etat_activation = 0; // Valeur lue sur potentiomètre int val_pot; int rapport_cyclique; void setup() { pinMode(moteurA, OUTPUT); pinMode(moteurB, OUTPUT); pinMode(enableAB, OUTPUT); pinMode(activation_in, INPUT); } void loop() { val_activation = digitalRead(activation_in); if(val_activation != old_val_activation){ etat_activation = !etat_activation; } if(etat_activation == 1){ val_pot = analogRead(A0); rapport_cyclique = map(val_pot, 0, 1023, -255, 255); if(rapport_cyclique < 0){ digitalWrite(enableAB, HIGH); analogWrite(moteurA, -rapport_cyclique); analogWrite(moteurB, 0); } else{ digitalWrite(enableAB, HIGH); analogWrite(moteurA, 0); analogWrite(moteurB, rapport_cyclique); } } else{ digitalWrite(enableAB, LOW); analogWrite(moteurA, 0); analogWrite(moteurB, 0); } }