Charriot fin de course. Besoin d'aide.

Bonjour tout le monde !!

Je suis un débutant de l'arduino et je voudrais vous demandez un petit code voila le principe :

Je dispose de un arduino, plusieurs puces L293D Motor et un DC Motor avec deux inter fin de courses

Ce que je voudrait faire :

Quand le moteur (en mode ouverture) fini par toucher le "Contact 1" je voudrais qu'il reparte dans l'autre sens jusqu’à toucher le 2 ieme contact et une fois la boucle terminée (Juste le faire une fois) je voudrais que le système se mette en arrêt. Et aussi un rajout de commande par bluetooth (je ferrais l'apli avec app inventor) que quand je dit par bluetooth avec mon app le message telle que "Activation" le système se déclenche a chaque fois que je envoie ce message.

Voila ou j'en suis :

const int moteur = 4;
const int bouton1 = 5;
const int bouton2 = 6;

int etatbouton1 = LOW;
int etatbouton2 = LOW;

void setup() {
 pinMode (moteur, OUTPUT);
 pinMode (etatbouton1, INPUT);
 pinMode (etatbouton2, INPUT);
}

void loop() {
  digitalWrite (moteur ,HIGH);

}

Merci beaucoup de votre aide !!
Cordialement un noob même pas câble d'inverser les polarités d'un moteur...

Je voudrais bien changer le monde mais ils ne veulent pas me donner le code source

Alors là t'es pas bien loin ! Déjà tu oublies dans ton setup de déclarer bouton1 et 2 en output ! Ensuite ton etatbouton1 et 2 sont cencés te stocker l'état de tes fins de courses, alors pour y arriver tu dois faire un : etatbouton1 = digitalRead ( bouton1);
Ensuite avec des if, tu peux utiliser l'état de ton fin de course pour créer tes actions , à savoir actionner ton moteur ( ce que tu fais dans ta loop) , sauf que ton moteur va démarrer et ne s'arrêtera jamais . Il ne faut pas non plus oublier de gérer le sens de ton moteur !

Fredericzim:
Alors là t'es pas bien loin ! Déjà tu oublies dans ton setup de déclarer bouton1 et 2 en output !

Es-tu sûr que les boutons soient des sorties ?

Je pense que ce que Fredericzim a voulu dire c'est que ArduiFolie utilise la variable 'etatbouton1' au lieu du numéro du bouton 'bouton1' dans le pinMode().

Oui en effet! Les Boutons doivent être déclaré en entrée ! C'est bien ce que je voulais dire !c'est une erreur . Et effectivement kamill a raison

Deja merci beaucoup de m'avoir répondu aussi vite !

const int moteur = 4;
const int bouton1 = 5;
const int bouton2 = 6;

int etatbouton1 = LOW;
int etatbouton2 = LOW;

void setup() {
 pinMode (moteur, OUTPUT);
 pinMode (etatbouton1, INPUT);
 pinMode (etatbouton2, INPUT);
 pinMode (bouton1, OUTPUT);
 pinMode (bouton2, OUTPUT);
 etatbouton1 = digitalRead ( bouton1);
}

void loop() {
  digitalWrite (moteur ,HIGH);

}

Et pour le bluetooth ou même l'inversion de la polarité comment je pourrais faire?

Merci vraiment de porter votre attention sur ce sujet !

Si vous avez des proposition de code n’hésitez pas !

Ton pinmode ( etatbouton) ne sert à rien . Ensuite ton digitalRead doit se trouver dans ta loop .
Tu peux également gérer tes fins de course avec des boolean .
Tu dois également tenir compte du fait que ton moteur est en ouverture ou en fermeture ( si ouverture : état moteur =1, si fermeture état moteur = 2 , si arrêt état moteur = 0.)
Pour finir avec des conditions , tu arrivera à ce que tu veux

comme je suis vraiment debutant en java voici le nouveau code :
par contre je ne sais pas quoi mettre dans les boolean ...

const int moteur = 4;
const int bouton1 = 5;
const int bouton2 = 6;

void setup() {
 pinMode (moteur, OUTPUT);
 pinMode (bouton1, OUTPUT);
 pinMode (bouton2, OUTPUT);

}

void loop() {
  digitalWrite (moteur ,HIGH);
   etatbouton1 = digitalRead ( bouton1);
   
  if (boolean etatmoteur = 1);

  if (boolean etatmoteur = 2);

  if (boolean etatmoteur = 0);

  
  
   

}

Merci !

comme je suis vraiment debutant en java voici le nouveau code :

déjà c'est du C++ et non java

  if (boolean etatmoteur = 1);

  if (boolean etatmoteur = 2);

  if (boolean etatmoteur = 0);

ca ne veut rien dire du tout, boolean est soit 1 true soit 0 false

une recherche sur le net avec l293d arduino et tu aurais trouvé ton bonheur
http://www.zem.fr/arduino-controler-des-moteurs-dc-avec-le-composant-l293d/

Il faut faire la différence entre
etat_moteur = 1
et
etat_moteur == 1

Dans le premier cas on force etat_moteur a prendre la valeur 1.
Dans le deuxieme cas on fait une comparaison : on cherche à savoir si etat_moteur possède ou non la valeur 1

Le résultat de la comparaison sera un booléen c'est à dire true ou false.
Si c'est "true" le code contenu dans le if sera éxécuté, si c'est faux il sera ignoré.

Rebonjour tout le monde apres des heures de boulot voici le code presque finish ! (;

int pinboutton = 2;    // bouton 1
int pinboutton2 = 5; // bouton 2
int moteur1Pin1 = 3;    // pin 2 sur L293D
int moteur1Pin2 = 4;    // pin 7 sur  L293D
int enablePin = 9;    // pin 1 sur  L293D

void setup() {
  // mettre le bouton en INPUT
  pinMode(pinboutton, INPUT);
  pinMode(pinboutton2, INPUT);
  // mettre les autres pins en OUTPUT
  pinMode(moteur1Pin1, OUTPUT);
  pinMode(moteur1Pin2, OUTPUT);
  pinMode(enablePin, OUTPUT);
  // mettre enablePin en HIGH
  digitalWrite(enablePin, HIGH);
}

void loop() {
  // Si le bouton1 est pressé le moteur va tourner dans un sens
  if (digitalRead(pinboutton) == HIGH) {
    digitalWrite(moteur1Pin1, LOW);   // mettre le pin 2 en LOW
    delay(2500);
    digitalWrite(moteur1Pin2, HIGH);  // mettre le pin 2 en HIGH
    delay(2500);
  }
  // Si le bouton2 est presser il tourne dans l'autre sens
  if (digitalRead(pinboutton2) == HIGH) {
    digitalWrite(moteur1Pin1, HIGH);  // mettre le pin 2 en HIGH
    delay(2500);
    digitalWrite(moteur1Pin2, LOW);   // mettre le pin 2 en LOW
    delay(2500);
    
  }
}

Donc je voulais savoir comment faire pour que le code qui se situe dans la loop s'execute qu'une fois : que si j'envoie (par bluetooth) "Ouvrir".

Donc cela implique de integrer le bluetooth dans le code. Si vous avez des idées, des codes a me proposer n'hesiter pas !
Merci beaucoup !

Jai aussi integrer le bluetooth voila le code :

int pinboutton = 2;    // bouton 1
int pinboutton2 = 5; // bouton 2
int moteur1Pin1 = 3;    // pin 2 sur L293D
int moteur1Pin2 = 4;    // pin 7 sur  L293D
int enablePin = 9;    // pin 1 sur  L293D

char val;

void setup() {
  // mettre le bouton en INPUT
  pinMode(pinboutton, INPUT);
  pinMode(pinboutton2, INPUT);
  // mettre les autres pins en OUTPUT
  pinMode(moteur1Pin1, OUTPUT);
  pinMode(moteur1Pin2, OUTPUT);
  pinMode(enablePin, OUTPUT);
  // mettre enablePin en HIGH
  digitalWrite(enablePin, HIGH);
  
 
  Serial.begin(115200);       // start serial communication at 115200bps
}

void loop() {
    if( Serial.available() )       // if data is available to read
  {;}
    val = Serial.read();         // read it and store it in 'val'
 
  if( val == '0' )
  Serial.println("En cours...");
  // Si le bouton1 est pressé le moteur va tourner dans un sens
  if (digitalRead(pinboutton) == HIGH) {
    digitalWrite(moteur1Pin1, LOW);   // mettre le pin 2 en LOW
    delay(2500);
    digitalWrite(moteur1Pin2, HIGH);  // mettre le pin 2 en HIGH
    delay(2500);
  }
  // Si le bouton2 est presser il tourne dans l'autre sens
  if (digitalRead(pinboutton2) == HIGH) {
    digitalWrite(moteur1Pin1, HIGH);  // mettre le pin 2 en HIGH
    delay(2500);
    digitalWrite(moteur1Pin2, LOW);   // mettre le pin 2 en LOW
    delay(2500);
    
  }
}

pour l'instant il n'y a pas d'erreur reste que a tester...^^

Bon cette fois si il est totalement finish le voici :

// Wifi hack Livebox V.3
// By TheValentin61
// OPEN SOURCE !

int pinboutton = 2;    // bouton 1
int moteur1Pin1 = 3;    // pin 2 sur L293D
int moteur1Pin2 = 4;    // pin 7 sur  L293D
int pinboutton2 = 5; // bouton 2
int enablePin = 9;    // pin 1 sur  L293D

char val;

void setup() {
  // mettre le bouton en INPUT
  pinMode(pinboutton, INPUT);
  pinMode(pinboutton2, INPUT);
  // mettre les autres pins en OUTPUT
  pinMode(moteur1Pin1, OUTPUT);
  pinMode(moteur1Pin2, OUTPUT);
  pinMode(enablePin, OUTPUT);
  // mettre enablePin en HIGH
  digitalWrite(enablePin, HIGH);
  
  // Led
  pinMode(13, OUTPUT); // Led "ATTENTE"
  pinMode(6, OUTPUT); // Led "FIN PROCESSUS"
  pinMode(7, OUTPUT); // Led  "DEBUT PROCESSUS"
  pinMode(8, OUTPUT); // Led  "ERREUR"

 // Communication
  Serial.begin(115200);       // Commencer la communication a 115200 baud
}

void loop() {

// Led d'attente...
    {
    digitalWrite(13, HIGH);   
    delay(1000);              // Attendre pendant une seconde
    digitalWrite(13, LOW);    
    delay(1000);              // Attendre pendant une seconde
    }
  
    if( Serial.available() )       // Si le data est sûr read
  {;}
    val = Serial.read();         // Lire et stocker dans 'val'
 
  if( val == 'o' )
  
  Serial.println("En cours..."); // Message de retour quand il recoi "ouvrir"

    digitalWrite(7, HIGH);  //Led commencement du processus   
    delay(3000);              // Attendre pendant une seconde
    digitalWrite(7, LOW);    
    delay(3000); 
 
  // Si le bouton1 est pressé le moteur va tourner dans un sens
  if (digitalRead(pinboutton) == HIGH) {
    digitalWrite(moteur1Pin1, LOW);   // mettre le pin 2 en LOW
    delay(2500);
    digitalWrite(moteur1Pin2, HIGH);  // mettre le pin 2 en HIGH
    delay(2500);
  }
  // Si le bouton2 est presser il tourne dans l'autre sens
  if (digitalRead(pinboutton2) == HIGH) {
    digitalWrite(moteur1Pin1, HIGH);  // mettre le pin 2 en HIGH
    delay(2500);
    digitalWrite(moteur1Pin2, LOW);   // mettre le pin 2 en LOW
    delay(2500);

    digitalWrite(6, HIGH); //Led processus terminé  "FIN"
    delay(3000);              // Attendre pendant une seconde
    digitalWrite(6, LOW);    
    delay(3000); 
  }
    {

       if( Serial.available() )       // Si le data est sûr read
  {;}
    val = Serial.read();         // Lire et stocker dans 'val'
 
  if( val == '0' )
  
  Serial.println("Commande inconnue..."); // Message de retour quand il recoi "un mot autre que 1"
  
    digitalWrite(8, HIGH);   
    delay(1000);              // Attendre pendant une seconde
    digitalWrite(8, LOW);    
    delay(1000);              // Attendre pendant une seconde

    }
  }
//fin du programme

Je ne l'ai pas encore test mais si vous voyez des erreurs dite le moi !
merci !!

Je ne l'ai pas encore test mais si vous voyez des erreurs dite le moi !
merci !!

des erreurs dans quoi?
ca compile?
teste le avant de demander s'il y a des erreurs, c'est aussi comme cela que l'on apprend.
on a pas forcément le matériel sous la main pour tester, ni le temps de le faire pour toi :wink:

En même temps, lorsqu'on voit ça

       if( Serial.available() )       // Si le data est sûr read
  {;}

on se dit que même si ça compile il doit se passer des choses pas claires.
Mais qu'as-tu voulu coder en écrivant cette ligne???

il a du vouloir mettre

       if( !Serial.available() )       
  {;}