Note

Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.

  • Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.

👉 Prêt à explorer et à créer avec nous ? Cliquez [ ici ] et rejoignez-nous aujourd’hui !

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.