Moteur CC

Bonjour,

J'ai ce programme pour contrôler un moteur courant continu de 9V, le programme le fait accélérer et déccélérer , jusqu'à la, tout va bien mais le problème ce que je veux qu'au bout de 5 secs, il s'arrête complètement et ne redémarre plus. Comment faire?

// déclarer la variable pour contenir la pin associée au moteur
int pinMoteur = 9;

void setup()
{
    // spécifier que la pin liée au moteur est une sortie
    pinMode(pinMoteur, OUTPUT);
}

void loop()
{
    // boucle pour faire accélérer le moteur
    for (int i = 0 ; i <= 255 ; i++)
    {
        //envoyer la valeur de 0 à 255
        analogWrite( pinMoteur, i);
        // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
        delay(10);
    }

    // boucle pour faire décélérer le moteur
    for (int j = 0 ; j <= 255 ; j++)
    {
        //envoyer la valeur de 255 à 0
        analogWrite( pinMoteur, 255 - j);
        // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
        delay(10);
    }
}

Ensuite, je voudrais savoir comment faire pour au lieu contrôler un moteur, en contrôler deux.
Dans mon circuit, j'utilise un transistor NPS BC337, une résistance de 2.2 Kohm, une diode de roue libre, une pile de 9 V et une arduino mega.

le branchement est comme en pièce jointe. Et il marche très bien en réalité.
Merci.
Edwin

moteur_mousse_1_1.png

Salut,

Tu peux utiliser la fonction millis() pour savoir le nombre de millisecondes écoulées depuis le démarrage de l'arduino.

unsigned long time = millis();

while( millis() - time < 5000) {
  ... // ton code
}

après 5 secondes on entre plus dans la boucle while

Tu crée une fonction que tu appellera a chaque fois que tu veut que ton moteur s’arrête, c'est pas très compliqué avec le PWM car 0% signifie en quelque sorte 0v et 100% Vmax

void stopMotor() {
 analogWrite(pinMoteur, 0);
}

Pour la fonction millis, je dois l'insérer avant la déclaration de variables et mettre ensuite tout le code?
Pour

void stopMotor() {
 analogWrite(pinMoteur, 0);
}

Je dois le mettre où, après le dernier delay?

Merci

J'ai essayé de mettre la boucle millis et delay mais il ne s'arrête toujours pas:

// déclarer la variable pour contenir la pin associée au moteur
int pinMoteur = 9;

void setup()
{
    // spécifier que la pin liée au moteur est une sortie
    pinMode(pinMoteur, OUTPUT);
}

void loop()
{
  unsigned long time = millis();

while( millis() - time < 5000)
{
    // boucle pour faire accélérer le moteur
    for (int i = 0 ; i <= 255 ; i++)
    {
        //envoyer la valeur de 0 à 255
        analogWrite( pinMoteur, i);
        // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
        delay(10);
    }

    // boucle pour faire décélérer le moteur
    for (int j = 0 ; j <= 255 ; j++)
    {
        //envoyer la valeur de 255 à 0
        analogWrite( pinMoteur, 255 - j);
        // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
        delay(10);
    }
}
}

Et quelle valeur de résistance je dois mettre dans le circuit (2.2 K ohm suffit?)?

Merci.

Tu inclus la fonction, puis tu l'appelle a chaque fois que tu veut tout simplement.

Comment ça? La fonction millis? Je ne l'ai jamais utilisée, comment faire pour ce programme? Je veux juste qu'après que le moteur deccélère, il se stoppe complètement et ne redémarre surtout pas ou ne recommance pas la boucle.

Merci à vous