3. Accélération

En plus du signal numérique (HIGH/LOW), l’entrée du module L9110 peut également recevoir un signal PWM pour contrôler la vitesse de sortie.

En d’autres termes, nous pouvons utiliser AnalogWrite() pour contrôler la vitesse de déplacement de la voiture.

Dans ce projet, nous faisons varier progressivement la vitesse de la voiture vers l’avant, en accélérant d’abord puis en décélérant.

Câblage

Ce projet utilise le même câblage que 2. Mouvement par Code.

Code

Note

  • Ouvrez le fichier 3.speed_up.ino dans le chemin 3in1-kit\car_project\3.speed_up.

  • Ou copiez ce code dans Arduino IDE.

  • Ou téléchargez le code via le Arduino Web Editor.

Après l’exécution du programme, la voiture accélérera progressivement puis décélérera graduellement.

Comment ça fonctionne ?

Le but de ce projet est d’écrire différentes valeurs PWM aux broches d’entrée du module L9110 pour contrôler la vitesse avant de la voiture.

  1. Utilisez la déclaration for() pour donner speed par paliers de 5, en écrivant des valeurs de 0 à 255 afin de voir le changement de vitesse de la voiture.

    void loop() {
        for(int i=0;i<=255;i+=5){
            moveForward(i);
            delay(500);
        }
        for(int i=255;i>=0;i-=5){
            moveForward(i);
            delay(500);
        }
    }
    
  2. À propos de la fonction moveForward().

    Contrairement à 2. Mouvement par Code qui donne directement des niveaux hauts/bas aux broches d’entrée du module L9110, ici nous passons un paramètre speed là où nous devons donner des niveaux hauts.

    void moveForward(int speed) {
        analogWrite(A_1B, 0);
        analogWrite(A_1A, speed);
        analogWrite(B_1B, speed);
        analogWrite(B_1A, 0);
    }
    

La déclaration for est utilisée pour répéter un bloc d’instructions entre accolades. Un compteur d’incrémentation est généralement utilisé pour incrémenter et terminer la boucle.

for (initialization; condition; increment) {
// statement(s);
}
  • initialization : se produit d’abord et une seule fois.

  • condition : à chaque passage dans la boucle, la condition est testée ; si elle est vraie, le bloc d’instructions et l’incrémentation sont exécutés, puis la condition est à nouveau testée. Lorsque la condition devient fausse, la boucle se termine.

  • increment : exécuté à chaque passage dans la boucle lorsque la condition est vraie.