Bonjour
Je viens vous demander de l'aide car mon programme tourne très bien mais ou je but depuis un temps infini sur:
En fin de compte je veux me servir du bouton M/A pour arrêter le système ( sa marche sauf RAZ )
pendant le cycle si besoin et en fin de cycle avec une RAZ d'office pour pouvoir redémarrer le cycle juste avec appuis sur M/A.
J'ai essayé plein de façon différente vu sur la toile j'ai essayé avec circuit RC et autre mais impossible
sans déconnecter entres raz!
Donc j'ai vu que la bibliothèque Watchdog : qui permets un RESET physique ( comme si j’appuie sur le RESET )
include < avr/wdt.h>
// ...
wtd_enable(WDTO_15MS);
for(;;);
Mon Problème impossible de trouver cette bibliothèque Watchdog sur la toile donc je suis preneur de vos idées et vous en remercie
parti pour essais raz
if ( digitalRead(pinBp) == LOW ) //essais raz
{
i=10000;
digitalWrite( pinEndStopY , LOW ); // led jaune
digitalWrite ( pinRaz , LOW );
const int pinRaz= 12; // envoie raz appres appuis sur Bp marche (low puis high)
const int pinEndStopY=10;// faire implusion LOW sur END STOP
const int pinEndStopX=9; // dectection fin ce course point de position garage
const int pinBp=2; // bouton poussoir Marche/Arret
const int pinSonde=5; // Sonde de d'inisialisation point de depart haut,uno vers cnc X-DIR 16
const int pinLed=13; // Led verte initialisation
const int pinEn=8; //En commun sur CNC V3 pour activer les 2 drivers A4988 Z et Y
//Enable: Logique Inversée, permet d'activer ou désactivé le moteur.
//Etat Haut=High = Moteur actif... et axe bloqué entre les pas.
//Etat bas=Low = Axe totalement libre
const int pinStepZ=4; // Signal de PAS uno vers cnc Z STEP 15
const int pinDirZ=7; // Direction uno vers cnc Z DIR 16
//const int pinStepY=3; // Signal de PAS uno vers cnc Y STEP 15
//const int pinDirY=6; // Direction uno vers cnc Y DIR 16
// OK MAIS REGLER PROBLEME PIN BOUTON (stop)
void setup() // preparation
{
Serial.begin(9600);
Serial.println("Test avec A4988");
pinMode( pinRaz, OUTPUT );// Raz arret d'urgence
pinMode( pinEndStopY,OUTPUT );// faire implusion LOW sur END STOP
pinMode( pinEndStopX,INPUT_PULLUP );// dectection fin ce course point de position garage BOUTON ROUGE
pinMode( pinBp , INPUT_PULLUP );// bouton poussoir Marche/Arret vers cnc X-STEP 15 Led rouge
pinMode( pinSonde , INPUT ); // Sonde de d'inisialisation point de depart haut
pinMode( pinLed , OUTPUT ); // Led verte initialisation
pinMode( pinEn , OUTPUT ); // definition broche En (activation drivers)
pinMode( pinStepZ , OUTPUT ); // definition driver Z
pinMode( pinDirZ , OUTPUT ); // definition driver Z
//pinMode( pinStepY , OUTPUT ); // definition driver Y
//pinMode( pinDirY , OUTPUT ); // definition driver Y
digitalWrite ( pinRaz , HIGH );
digitalWrite( pinEndStopY , HIGH ); //
while (digitalRead(pinBp)); // On ne fait rien tant que pinBp n'est pas appuyé
}
void loop()
{
int i = 0;
//digitalWrite( pinStepZ , LOW); // Initialisation de la broche step Z
// 1es 4 boucles du programme moteur Z
//digitalWrite( pinEndStopY , HIGH ); //
//digitalRead(pinEndStopX);
digitalWrite( pinDirZ , LOW ); // Direction monte de fin de cycle
for ( i=0; i < 200; i++)
{ // Monte du moteur Z
if ( digitalRead(pinEndStopX) == LOW ) //detection garage bouton rouge
{
i=2000;
delay( 20 );
}
Serial.println( i );
digitalWrite( pinStepZ , HIGH );
delayMicroseconds(8000); //delay( 7 );
digitalWrite( pinStepZ , LOW );
delayMicroseconds(8000); //delay( 7 );
//digitalWrite( pinEndStopY , LOW ); //led jaune
}
digitalWrite( pinDirZ , HIGH); // Direction descent ralenti
for ( i=0; i < 10000; i++)
{ // Monte du moteur Z
if ( digitalRead(pinBp) == LOW ) //essais raz
{
i=10000;
digitalWrite( pinEndStopY , LOW ); // led jaune
digitalWrite ( pinRaz , LOW );
// delayMicroseconds(80000);
// digitalWrite ( pinEndStopY , HIGH );
// delayMicroseconds(80000);
//digitalWrite ( pinEndStopY , LOW );
//digitalWrite ( pinRaz , LOW );
//delayMicroseconds(80);
//digitalWrite ( pinRaz , HIGH- );
}
Serial.println( i );
digitalWrite( pinStepZ , HIGH );
delayMicroseconds(8000); //delay( 3 );
digitalWrite( pinStepZ , LOW );
delayMicroseconds(8000); //delay( 3 );
}
Serial.println("Fin de programme"); // Fin et blocage du programme
while( true ); // tant que l'expression est vrai
}
