Besoin d'aide projet arduino

Bonjour je suis nouveau en arduino, je vous explique j'ai un moteur cc et un moteur pas a pas controler. Ce que je veux c'est simple je lance le moteur pas a pas pour x temps puis il s'arrete et je lance le moteur cc pour x temps. J'ai fait un programme seulement pour le moteur CC qui fonctionne et un programme seulement pour le moteur pap et il fonctionne mais quand je rassemble les deux, sa ne fonctionne plus, pouvez vous m'aider.

Je vous envoie en pièce jointe le programme que j'ai fait.(programme moteur total)

Au passage je vous envoie les deux programmes seul pour chaque element qui eux fonctionne.

#define STEP_PIN 11
#define DIR_PIN 10
int M1DIR = 4; // direction du moteur 1= broche 4
int M1PWM = 5; // commande du moteur 1 = broche 5

bool dirHigh = true;

void setup()
{
dirHigh = true;
digitalWrite(DIR_PIN, HIGH);
digitalWrite(STEP_PIN, LOW);
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
pinMode(M1DIR, OUTPUT);
pinMode(M1PWM, OUTPUT);
}

void loop()
{
void verin()
{

digitalWrite(M1DIR, 1); // rotation sens négatif on monte
digitalWrite(M1PWM, 1);
delay(4000);
digitalWrite(M1DIR, 0); // arrêt
digitalWrite(M1PWM, 0);
delay(2000);
digitalWrite(M1DIR, 0); // rotation sens positif on descend
digitalWrite(M1PWM, 1);
delay(2600);
digitalWrite(M1DIR, 0); // arrêt
digitalWrite(M1PWM, 0);
delay(2000);

}
void moteur()
{

// Toggle the DIR pin to change direction.
if (dirHigh)
{
dirHigh = false;
digitalWrite(DIR_PIN, LOW);
}
else
{
dirHigh = true;
digitalWrite(DIR_PIN, HIGH);
}

// Step the motor 50 times before changing direction again.
for (int i = 0; i < 200; i++)
{
// Trigger the motor to take one step.
digitalWrite(STEP_PIN, HIGH);
delay(5);
digitalWrite(STEP_PIN, LOW);
delay(5);
}

}
}

programme_moteur_total.ino (1.24 KB)

moteurcc.ino (628 Bytes)

programme_moteur.ino (640 Bytes)

Il te faut créer une procédure qui gére les deux en même temps...car lui fait un après l'autre
(il faut mixer les commandes en gérant les bons tempos dans une grosse procédure ou avoir les 3(A,B et AB))

Pour détailler un peu plus ce que vient de dire Brolensky, je pense que tu pourrais faire quelque chose dans ce genre là.

Tu créer une fonction qui fait tourner ton premier moteur, une autre ton deuxième moteur et enfin une qui doit faire tourner les 2 en même temps.

C'est cette dernière qu'il te faut si j'ai bien compris. Alors, tu peux faire une boucle for, par exemple for(i=0;i<500;i++) et dans celle-ci tu actualise tes 2 moteurs avec des instructions qui se suivent avec des delay très courts.

Par exemple:
for(i=0;i<500;i++)
{
digitalWrite(STEP_PIN1, HIGH);
digitalWrite(STEP_PIN2, HIGH);
delay(5);
digitalWrite(STEP_PIN1, LOW);
digitalWrite(STEP_PIN2, LOW);
delay(5);
}

STEP_PIN1 et 2 feraient référence à chacun de tes 2 moteurs du coup. Dans cet exemple ils iraient à la même vitesse, mais en bidouillant un peu tu peux faire des vitesses différentes si tu as besoin.

Voilà je ne sais pas si j'ai été très clair mais n'hésite pas à reposer des questions.

Oui voilà c est cela ou juste une procédure qui gère les deux avec en paramètre d'entrée vitesseA et vitesseB
Reste à calculer les bon tempos et les interactions.
Le mieux est de faire un loop et si timeread = tempsactionA, faire l actionA puis ActionB dans la foulée si timeread = tempsactionB
Avec cela pas de interférences

Merci pour votre réponse mais je penses m’être mal exprimé en faite je ne veux pas que les deux marche en même temps mais juste l'un après l'autre cependant avec le programme que j'ai fait j'ai mit l'un après l'autre il me semblait mais ça ne fonctionne pas y'en a qui n'est jamais pris en compte en gros y'a un moteur qui fonctionne mais pas l'autre. Alors qu'ils devraient fonctionner l'un après l'autre. Ducoup c'est comme si j'avais q'un seul moteur.

bonjour,
des void dans des void, bof bof, autant virer la ligne void ou alors déporter les void en dehors du loop
ca éclaircit le code en plus

void loop(){
verin();
moteur();
}


void verin(){
...
...
}

void moteur(){
....
...
}

en plus, pour voir si une partie fonctionne, il suffit de commenter l'autre

//verin();
moteur();

Je vais essayer sa mais la moteur et verin vont fonctionner en meme temps non ? Si je veux un apres l'autre ?

loop =boucle
verin = process 1
moteur = process 2

quand tu lis une page, tu ne lis pas toutes les lignes en même temps, si?
là, c'est la même chose

Bonjour, merci j'ai essayer le programme ça fonctionne très bien

leo3620:
Bonjour, merci j'ai essayer le programme ça fonctionne très bien

comme quoi, avec un peu de réflexion, on y arrive.
édite le 1er post et passe en [Résolu] dans ce cas.