Bonjour,
Je suis sur un projet pour lequel j'utilise:
- 1 Arduino Mega 2560
- 1 écran tactile 4D System uLCD-43PT ou uLCD-70DT
- 1 électronique propre comprenant en particulier un interrupteur à pédale, un relais de puissance (pour chauffer une résistance), un shunt (pour mesurer le courant de chauffage)
Pour mon processus, j'appuye sur une pédale (bouton poussoire), ce qui entraine le changement d'état du relais de puissance et donc le chauffage de la résistance.
Je voudrais ajouter une sécurité sur le fonctionnement, qui consite à stopper le chauffage si le temps de chauffage dépasse une valeur maximale (par exemple 10 secondes).
Après avoir regardé sur le forum et les tutoriels, je pensais pouvoir utiliser la fonction "pulseIn", mais cela ne fonctionne pas et je ne comprends pas pourquoi.
Voici la partie du code que j'ai faite pour cette sécurité (je n'ai pas mis tout le code pour ne vous inonder d'informations...) :
//Pédale (sur PIN 5 Arduino)
int buttonPin = 5;
int buttonState = 0;
//Relais de commande chauffage (sur PIN 3 Arduino)
const int relais = 3;
//définition du temps de chauffage (en milli secondes)
unsigned long Tps_chauffage;
//Temps de chauffage maximal 5s (en milli secondes)
const unsigned long Tps_chauf_max=5000;
void setup
{
// pedale est une entrée
pinMode(buttonPin, INPUT);
//initialisaton de la pedale
//buttonState = LOW;
// relais est une sortie
pinMode(relais, OUTPUT);
//initialisaton du relais
analogWrite(relais,0);
}
void loop
{
// lecture de l'état de la pédale:
buttonState = digitalRead(buttonPin);
Tps_chauffage = pulseIn(buttonPin, LOW);
//Si la pédale est appuyée, lancement du processus de chauffage
if (buttonState == LOW)
//on lance le chauffage
{
chauffage();
}
void chauffage()
{
if (buttonState == HIGH)
{
arret_chauffage();
}
else if (Echauf < Echauf_theor && START == 1)
{
//on lance le chauffage (on ferme le relais) tant que la pédale est appuyée, le bouton START appuyé et l'énergie de chauffage "Echauf_theor" choisie par l'utilisateur pas atteinte
analogWrite(relais,255);
if (Tps_chauffage > Tps_chauf_max && compteur > 1)
{
arret_chauffage();
}
}
}