Bonjour Tout le monde !
Je suis tout nouveau dans le monde de l'arduino et du langage C.
j'avais quelques applis que je voulais réaliser et je voulais un moyen simple d'appeler des fronts montant ou descendant sur mes entrées.
Donc je partage.
Vos commentaires sont les bienvenu.
Bon code....
//_________________________________________________________Variables de Front Déscendant jusqu'a 15 entrées pour l'exemple
boolean BPdes_Last_Eta[15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
boolean BPdes_New_Eta[15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
boolean BPdes_Up_Down[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//_________________________________________________________Variables de Front Montant jusqu'a 15 entrées pour l'exemple
boolean BPmont_Last_Eta[15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
boolean BPmont_New_Eta[15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
boolean BPmont_Up_Down[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//_________________________________________________________Variable d'entrées et sorties
const int BP8 = 8; //Entrée Pin8 D8 pour exemple
//_________________________________________________________Compteur pour l'exemple
int Compteur_Front_M=0;
int Compteur_Front_D=0;
//################################################################Setup
void setup() {
Serial.begin(9600); //Démarrage du port série
pinMode(BP8, INPUT); //Déclaration BP8
}
//################################################################Loop
void loop() {
if (Front_M(BP8)==1) //test si on a un front montant sur le BP8
{
Compteur_Front_M++;
Serial.print("Font Montant: ");
Serial.println(Compteur_Front_M);
}
if (Front_D(BP8)==1) //test si on a un front descendant sur le BP8
{
Compteur_Front_D++;
Serial.print("Font Descendant: ");
Serial.println(Compteur_Front_D);
}
}
//################################################################Fonctions
boolean Front_D(int BP) //Front Descendant des entrées
{
BPdes_New_Eta[BP]=digitalRead(BP);
if (BPdes_Last_Eta[BP]!=BPdes_New_Eta[BP]){
BPdes_Last_Eta[BP]=BPdes_New_Eta[BP];
BPdes_Up_Down[BP]=!BPdes_Up_Down[BP];
if (BPdes_Up_Down[BP]==0){
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
//===========================
boolean Front_M(int BP) //Front Montant des entrées
{
BPmont_New_Eta[BP]=digitalRead(BP);
if (BPmont_Last_Eta[BP]!=BPmont_New_Eta[BP]){
BPmont_Last_Eta[BP]=BPmont_New_Eta[BP];
BPmont_Up_Down[BP]=!BPmont_Up_Down[BP];
if (BPmont_Up_Down[BP]==1){
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}