Programme I2C

Bonjour a tous, voici mon premier post sur ce forum !

J’ai donc fais la V1 de mon programme, je ne suis pas un expert arduino il y a surement pas mal de fautes ^^

le principe est de Piloter un moteur avec un pont en H (I2C), suite a l’appuie sur un boutton le programme se lance (pas d’arrêt sur bouton) et allume une led.
Des que l’intensité de surintensité est debloque le moteur change de sens, et des que un capteur fin de course est localisée le moteur s’arrête.
Je dispose d’un capteur de courant : http://www.gotronic.fr/art-capteur-de-courant-12-5a-mr391-21685.htm
En gros, le moteur pilote une plaque de compression qui compacte la canette, une fois finit remonte et s’arrête une fois le capteur détecter.

Voici le programme :

#include <Wire.h>
#include "groveI2CMotor.h"
const int L1 = 2; // broche 2 du micro-contrôleur se nomme maintenant : L1
const int BP = 3; // broche 3 du micro-contrôleur se nomme maintenant : BP
const int Capt1= 7; // broche 7 du micro-contrôleur se nomme maintenant : Capt1

void setup() {
pinMode(L1, OUTPUT); //L1 est une broche de sortie
pinMode(BP, INPUT); // BP est une broche d'entree
pinMode(Capt1, INPUT); // Capt1 est une broche d'entree
Serial.begin(9600);
Wire.begin(); // 
delayMicroseconds(10000);
Serial.println("setup begin");
stepperrun();
}

void loop() {
// envoi les commandes au moteur
int BP = digitalRead(BP); // Lecture de l'entree BP et sockage du résultats dans BP
int test = digitalRead(Capt1);// Lecture de l'entree et sockage du résultats dans test
if(BP==HIGH) // Si BP est à l'état haut
digitalWrite(L1, HIGH); // Allumer L1
Serial.println("sent DC speed 100");
MotorSpeedSetAB(100,20);
delay(10); // délai nécessaire
while (test==LOW) // tant que le capteur n'est pas touche
MotorDirectionSet(0b1010); // 0b1010 rotation dans le sens positive
if (;i<800;i++); // J'ai pas encore la surintensité, je part de l'hypotése que c'est 800ma, des que le capteur detecte 800MA le moteur change de sens.
MotorDirectionSet(0b0101); // 0B0101 Rotation dans le sens opposé
if(test==high) {// Si test est à l'état haut
digitalWrite(L1, LOW); // Eteindre L1
//fin

}

}

J’aimerais savoir ou sont les fautes et comment les corriger.

Un grand merci pour votre aide ! Bonne fin de soirée également a tous !

corrigez votre post ci dessus et rajoutez les code tags autour du code:
[code]`` [color=blue]// votre code ici[/color] ``[/code].

ça doit ressembler à cela:// votre code ici
(faites aussi ctrl-T (PC) or cmd-T (Mac) dans l’IDE avant de copier le code pour qu’il soit indenté correctement)



if (;i<800;i++);c’est quoi cette expression??

les accolades vous en avez entendu parlé?

while (test==LOW) // tant que le capteur n'est pas touche
MotorDirectionSet(0b1010); // 0b1010 rotation dans le sens positive

vous pensez que ça va faire quoi?

il n’est pas complet votre code, si??

Merci pour la rapidité de tas réponse ^^

premièrement l'expression que je t'ai donne est complètement fausse.

Je ne sais pas comment dire a arduino que, des que l'intensité dépasse un seuil faire une action a l'aide du capteur. Je n'ai rien trouver sur sa doc.

deuxièmement, je pense que si le capteur fin de course n'est pas appuyer le moteur tournera dans un sens qui fera descendre la plaque de compression. Le while n'est certainement pas nécessaire.

Et non le code n'est pas complet, je dispose des fonctions de la carte I2C.

Un grand merci pour ton aide ^^ mon plus grand soucis actuellement est de transmettre les donnes de mon capteur sur arduino.

Je ne sais pas comment dire a arduino que, des que l'intensité dépasse un seuil faire une action a l'aide du capteur. Je n'ai rien trouver sur sa doc.

Il faut que tu fasse un algorithme car se n'est pas très clair pour toi.

Prend toi une feuille de papier et décris le fonctionnement de ton système.

Utilise des mots telle que "SI" "FAIRE" "TANT QUE" etc...

On évite pas mal de bêtises grâce a ça.