Analiser une entree analogique pendant 2 seconde

Bonjour ,
Je suis débutant en programmation arduino et j'ai un problème avec mon programme.

Je n'ai peut-être pas utilisée les bons termes car je n'ai pas trouver d'exemple pour m'aider.

J'explique :
j'ai besoin de capter un signal venant d'un clavier opérateur pour allumer une strip de led 24v.
Donc si l'opérateur active l'option en question une led s'allume , j'ai relier cette led à l'entrée analogique A0 d'un NANO .

Si cette option est désactivée la strip de led 24VDC (OUTPUT D13) s'allume pour alerter l’opérateur.

Le problème est que ce signal est très faible et très instable à cause de la distance environ 10 mètres.

J'ai installé un câble shielded mais même avec cela ce n'est pas suffisant .

Ce que j'aimerait faire c'est d'analyser l'entrée A0 pendant , exemple 2 secondes,

Donc si A0 ­> 0.20Volt pendant 2000 mSeconde " digitalWrite(LisecStrip, LOW); "

SVP, soyer indulgent je suis débutant mais j'ai soif d'apprendre.

Merci

int port = A0; // lire la tention sur la led
int LisecStrip = 13; // signal sortie relay 24vdc
int valeur = 0; // valeur lu a A0
float vin = 0; // voltage si Gaz ON

void setup() {
// définit le port 13 en sortie
pinMode(LisecStrip, OUTPUT);
Serial.begin(9600);
}

void loop() {
// Lit l’entrée analogique A0
valeur = analogRead(port);
// convertit l’entrée en volt
vin = (valeur * 5.0) / 1024.0;
Serial.print(vin);
Serial.print("Volt");
Serial.println();

if (vin > 0.20) { // GAZ ON
digitalWrite(LisecStrip, LOW);
Serial.println("Gas Active");
delay(1200);

}
else { // GAZ OFF
digitalWrite(LisecStrip, HIGH);
Serial.println("Gas Desactive");
delay(1200);
digitalWrite(LisecStrip, LOW);

}
delay(500);
}

  1. met ton code entre balises code --> icône </>

2)Le signal provient du clavier. C'est quel type de signal ?
Est-ce que il n'y aurait pas des réseaux résistifs pour obtenir plusieurs niveaux qu'il faut discriminer ?
Dire qu'il est affaibli ne suffit pas, il en dire plus la nature de ce signal .
Quel est la nature du câble blindé ?
Le blindage ne devrait être mis à la masse que du coté de la carte arduino.

2a.
En fait je me conect a une led de 3 mm
Donc environ 2volt.

2b
??? "Est-ce que il n'y aurait pas des réseaux résistifs pour obtenir plusieurs niveaux qu'il faut discriminer ?" ??? Désolée mais, Que voulez vous dire .

2c.
C'est un cable blindé traissé, 22awg, deux conducteurs.

2d.
Oui il est relié au gnd sur le arduino seulement

Merci de votre aide

int port = A0;    // lire la tention sur la led 
int LisecStrip = 13; // signal sortie relay 24vdc     
int valeur = 0;  // valeur lu a A0
float vin = 0; // voltage si Gaz ON


void setup() { 
  // définit le port 13 en sortie 
  pinMode(LisecStrip, OUTPUT); 
  Serial.begin(9600); 
}



void loop() { 
  // Lit l'entrée analogique A0 
  valeur = analogRead(port);    
  // convertit l'entrée en volt 
  vin = (valeur * 5.0) / 1024.0; 
   Serial.print(vin);
  Serial.print("Volt");
  Serial.println(); 
  
if (vin > 0.20) { // GAZ ON
    digitalWrite(LisecStrip, LOW);
    Serial.println("Gas Active");
    delay(1200);
      
  } 
  else { // GAZ OFF
    digitalWrite(LisecStrip, HIGH);
    Serial.println("Gas Desactive");
    delay(1200);
    digitalWrite(LisecStrip, LOW);
     
  }
  delay(500);                  
}

Bonjour,

J'avoue que je ne comprends pas ce que tu veux faire que vin soit > 0.20 ou inférieur finalement on met ledStrip à low

Pas clair.
Signal de commande :
Il n'aurait rien rien à voir avec le clavier. Est-ce vrai ?
Il proviendrait d'une led Del. Est-ce vrai ?

Et comment elle est branchée la Del ?
Par quel moyen, sur quel phénomène, la tension à ses bornes peut-elle se modifier ?
L'utilise-tu normalement en émetteur ou en utilisation détournée en détecteur ?

Pas clair, pas clair.

bonsoir
meme avis qu'au dessus
exposé plus que flou :grin:

explique "mieux" ton probléme

Je sais que ce n'est pas clair a vrai dire je ne comprend pas vraiment pourquoi le voltage au bornes de cette led varie autant.: exemple 0.1 volt a 1.99 volt.Sur le moniteur serie de IDE .

Voici une image du clavier ou (console opérateur) en question .

J'ai relier a la led d'un des bouton de cette console les pins A0 et GND du arduino NANO .
Donc si cette option est activer la led s'allume .

Si l'option est desactivé J'ai un 0.00 volt presque constant (presque il y a des peek occasionnel ) probablement a cause de la distance.

C'est incroyablement instable voila pourquoi j'ai utilisé un entrée analogique a 0.2v et plus.

Meme avec une très courte distance 15 cm de câble sa reste très instable .

Si l'option est desactivé

Croyez vous qu'il serait possible d'ajouter a mon programme une analyse des voltage sur un temp donné et de faire une moyenne .

comme cette exemple :

int pinIR = 2;

int eval1;
int eval2;
int eval3;
int eval4;
int eval5;
int evalMoy;

void setup(void) {
 pinMode(pinIR, INPUT);
}

void evalDistance() {
   
   eval1 = analogRead(pinIR);
   delay(200);
   eval2 = analogRead(pinIR);
   delay(200);
   eval3 = analogRead(pinIR);
   delay(200);
   eval4 = analogRead(pinIR);
   delay(200);
   eval5 = analogRead(pinIR);
   delay(200);
   
   evalMoy = (eval1 + eval2 + eval3 + eval4 + eval5)/5;

}

void loop(void) {
 
 evalDistance();
 
}

Encore une fois merci de votre aide .
j'espere que c'est plus clair .

C'est pas vraiment plus clair (pour ma part en tout cas)

De ce que je comprend:
l'appui sur un bouton du panneau doit allumer un strip de del, c'est bien ca?
ET
pour détecter cet appui, tu te base sur le voyant du bouton en question pour voir sur la del est alimentée. C'est toujours ca?

taktin:
2b
??? "Est-ce que il n'y aurait pas des réseaux résistifs pour obtenir plusieurs niveaux qu'il faut discriminer ?" ??? Désolée mais, Que voulez vous dire.

Ce qu'il veut dire c'est que les boutons sont en tous en série avec une resistance chacun, ce qui permet avec une seule entrée analogique de "muliplexer" les boutons.

Oui lorsque l’opérateur appuis sur un bouton la led(témoin de ce bouton change d’état ( toggle ).

donc si le Gas est activé la led du panneau est allumé .
si le Gas n'est pas en fonction alors la led n'est pas allumé et ma strip de led doit s'allumer.

Pour ce qui est du "réseau résistif" , je ne connaissait pas ce terme . Oui je suis certain que c'est de cette facon qu'il fonctionne.

Merci pour l'image :

Merci encore