2. Mouvement par Code

Dans le projet précédent, nous avons essayé de contrôler le fonctionnement du moteur en utilisant différents signaux de niveau pour l’entrée du module L9110.

Si nous modifions les signaux de niveau par le programme, alors nous pouvons contrôler le mouvement de la voiture de manière flexible.

Composants requis

Pour ce projet, nous aurons besoin des composants suivants.

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DE CE KIT

LIEN

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Carte SunFounder R3

BUY

Module de Contrôle Moteur L9110

-

Moteur TT

-

Câblage

Connectez les fils entre le module L9110 et la carte R3 selon le schéma ci-dessous.

L9110 Module

R3 Board

Motor

A-1B

5

A-1A

6

B-1B(B-2A)

9

B-1A

10

OB(B)

Black wire of right motor

OA(B)

Red wire of right motor

OB(A)

Black wire of left motor

OA(A)

Red wire of left motor

../_images/car_2.png

Code

Note

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

  • Ou copiez ce code dans Arduino IDE.

Après le téléchargement du code, la voiture se déplacera respectivement vers l’avant, l’arrière, la gauche et la droite pendant deux secondes.

Comment ça fonctionne ?

Ce projet est essentiellement le même que le précédent, impliquant de faire avancer, reculer, tourner à gauche et à droite la voiture, ainsi que de l’arrêter en fournissant différents niveaux de signal aux broches d’entrée du module L9110.

  1. Initialisez les broches du module L9110.

    const int A_1B = 5;
    const int A_1A = 6;
    const int B_1B = 9;
    const int B_1A = 10;
    
    void setup() {
        pinMode(A_1B, OUTPUT);
        pinMode(A_1A, OUTPUT);
        pinMode(B_1B, OUTPUT);
        pinMode(B_1A, OUTPUT);
    }
    
  2. Réglez les broches d’entrée à différents niveaux hauts ou bas pour contrôler la rotation des moteurs gauche et droit, puis encapsulez-les dans des fonctions individuelles.

    void moveForward() {
        digitalWrite(A_1B, LOW);
        digitalWrite(A_1A, HIGH);
        digitalWrite(B_1B, HIGH);
        digitalWrite(B_1A, LOW);
    }
    
    void moveBackward() {
        digitalWrite(A_1B, HIGH);
        digitalWrite(A_1A, LOW);
        digitalWrite(B_1B, LOW);
        digitalWrite(B_1A, HIGH);
    }
    ...
    
  3. Appelez ces fonctions dans loop().

    void loop() {
        moveForward();
        delay(2000);
        stopMove();
        delay(500);
    
        moveBackward();
        delay(2000);
        stopMove();
        delay(500);
    ...
    
  • digitalWrite(pin, value)

    • pin : le numéro de la broche Arduino.

    • value : HIGH ou LOW.

    Écrit une valeur HIGH ou LOW sur une broche numérique. Si la broche a été configurée comme une OUTPUT avec pinMode(), sa tension sera réglée sur la valeur correspondante : 5V (ou 3,3V sur les cartes 3,3V) pour HIGH, 0V (masse) pour LOW.

  • pinMode(pin, mode)

    • pin : le numéro de la broche Arduino à configurer.

    • mode : INPUT, OUTPUT ou INPUT_PULLUP.

    Configure la broche spécifiée pour se comporter soit comme une entrée, soit comme une sortie.

  • delay(ms)

    • ms : le nombre de millisecondes de pause. Types de données autorisés : unsigned long.

    Interrompt le programme pendant la durée (en millisecondes) spécifiée en paramètre. (Il y a 1000 millisecondes dans une seconde.)