Salut à tous,
Je suis nouveau sur arduino et dans la programmation.
J'essaye de faire une machine de curing pour mes pièces en SLA, sortie de FAB-ADD.
J'ai toute ma structure, mon environnement, etc... Il me reste plus qu'à coder le côté elec.
J'ai fais un premier programme :
Celui-ci me permet lors de l'appui sur un bouton poussoir d'allumer des LED's pendant 5s et de faire fonctionner un servo à 12rpm. Et ainsi de suite à chaque appui sur le bouton poussoir.
Le but recherché est maintenant de mettre un temps d'opération plus long (1heure) ainsi que de rajouter une option qui me permettrait d'arrêter ma boucle et d'éteindre led et moteur si j'appuie sur le bouton poussoir lors du cycle.
Ce qui revient pour moi, à changer mon delay de 5000ms à 360000ms.
Première question, est-ce qu'il est pertinent de mettre 360000ms dans un delay ?
Et concernant la partie "sortir de la boucle" grâce au bouton poussoir je vous avoue que je suis un peu perdu, enfaite l'objectif de la manoeuvre serait de créer un bouton type Pause, sur le même boutton qui me permet d'allumer mon système.
Je vous joins le code et la photo de mon montage que j'ai réalisé pour le moment, si j'ai omis de vous fournir des élèments je suis bien entendu à votre disposition pour essayer de vous les fournir.
#include <Servo.h>// on importe la bibliothèque
Servo servo; // on crée l'objet Servo
int pinBouton, pinLed,pinLed1,pinLed2,pinLed3,pinLed4,pinLed5,pinLed6,pinLed7,pinLed8,pinLed9, i;
boolean etatAllumage;
unsigned long previousMillis=0;
void setup()
{
;
//initialisation des variables
i=1;
pinBouton = 2;
pinLed = 3;
pinLed1 = 4;
pinLed2 = 5;
pinLed3 = 6;
pinLed4 = 7;
pinLed5 = 8;
pinLed6 = 9;
pinLed7 = 10;
pinLed8 = 11;
pinLed9 = 12;
etatAllumage=0;
//définition des modes
servo.attach(13);
pinMode(pinBouton, INPUT_PULLUP);
pinMode(pinLed, OUTPUT);
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
pinMode(pinLed4, OUTPUT);
pinMode(pinLed5, OUTPUT);
pinMode(pinLed6, OUTPUT);
pinMode(pinLed7, OUTPUT);
pinMode(pinLed8, OUTPUT);
pinMode(pinLed9, OUTPUT);
Serial.begin(9600);
}
void loop()
{
{
while (etatAllumage) {
digitalWrite(pinLed, HIGH);//on allume la LED
digitalWrite(pinLed1, HIGH);//on allume la LED
digitalWrite(pinLed2, HIGH);//on allume la LED
digitalWrite(pinLed3, HIGH);//on allume la LED
digitalWrite(pinLed4, HIGH);//on allume la LED
digitalWrite(pinLed5, HIGH);//on allume la LED
digitalWrite(pinLed6, HIGH);//on allume la LED
digitalWrite(pinLed7, HIGH);//on allume la LED
digitalWrite(pinLed8, HIGH);//on allume la LED
digitalWrite(pinLed9, HIGH);//on allume la LED
servo.write(100);
delay(5000);
digitalWrite(pinLed, LOW);//on allume la LED
digitalWrite(pinLed1, LOW);//on allume la LED
digitalWrite(pinLed2, LOW);//on allume la LED
digitalWrite(pinLed3, LOW);//on allume la LED
digitalWrite(pinLed4, LOW);//on allume la LED
digitalWrite(pinLed5, LOW);//on allume la LED
digitalWrite(pinLed6, LOW);//on allume la LED
digitalWrite(pinLed7, LOW);//on allume la LED
digitalWrite(pinLed8, LOW);//on allume la LED
digitalWrite(pinLed9, LOW);//on allume la LED
servo.write(90);
etatAllumage=0;
delay(100);
break;
}
}
boolean etatPinBouton = digitalRead(pinBouton);
Serial.println(etatPinBouton);
//test des conditions
if (!etatPinBouton)
{
if (etatAllumage)
{
etatAllumage=0;
}
else //sinon
{
etatAllumage=1;
}
}
}
Je pense qu'il faut utiliser la fonction millis(), mais j'ai du mal à comprendre son fonctionnement !
En vous remerciant par avance,
Aymeric