Bonjour,
Je chemine doucement..... (voir page)
Ayant reçu mon L298N, j'ai débuté la rédaction de mon code. Mes fin de course sont de type"à languette", avec résistance de tirage.
Le gauche (position ouverture) sera fixé au mur. Le droit (fermeture) au volet pour s'arrêter sur tout obstacle éventuel.
Mon code fonctionne. Est-il correct? (comprendre sensé et propre)
D'autre part, je voudrais injecter une commande manuelle qui prenne la priorité sur l'automatisme, pour en tout temps pouvoir ouvrir/fermer jusqu'à la position voulue avec un bouton à bascule ou bien une télécommande.
Ca se fait comment? :o
Voici mon code:
/******************************
* Code fonctionnel: condition pluie démarre et arrête le moteur
* 08 janvier, fin de course droite fonctionne, fin de course gauche fonctionne
*/
//Déclaration paramètres moteur:
//Moteur A
const int moteurPin1 = 6;
const int moteurPin2 = 5;
int fdcD; //Déclaration fin de course droit (volet fermé)
int fdcG; //Déclaration fin de course gauche (volet ouvert)
void setup(){
Serial.begin(9600); //initialisation moniteur
pinMode(4, OUTPUT); //affectatiion de pin 4 à A0 du capteur de pluie
fdcD = 7; //affectation du pin 7 à fdcD
pinMode(fdcD, INPUT); //mode lecture pour fdcD
fdcG = 8; // affectation du pin 8 pour fdcG
pinMode(fdcG,INPUT);//mode de lecture pour fdcG
}
void loop()
{
//Lecture analogique avec seuils "Pas de pluie", "Pluie modérée", "Pluie"
if(analogRead(0)<500) Serial.println(" Pluie");//lecture du seuil
else if(analogRead(0)<700) Serial.println(" Pluie modérée");//lecture du seuil
else Serial.println(" Pas de pluie notable");// affichage si capteur sec
int Valeur_analogique = analogRead(A0);//Lecture de la valeur analogique et affichage de la valeur lue
Serial.print("Valeur analogique = ");
Serial.print(Valeur_analogique);
delay(1000);
//Essai d'introduction code moteur:
boolean etatfdcD = digitalRead(fdcD); //définition de etatfdcD
boolean etatfdcG = digitalRead(fdcG); //définition de etatfdcG
{ if(analogRead(0)<700) //lecture capteur pluie
{ analogWrite(moteurPin1, 150);//ordre rotation -définition du sens
analogWrite(moteurPin2, 0);//ordre rotation -définition du sens
}
if((etatfdcD == HIGH) || (analogRead(0)>700))// lecture état de la condition fin de course et si capteur sec
{ analogWrite(moteurPin1, 0);//arrêt moteur si fdcD enclenché
analogWrite(moteurPin2, 0);//arrêt moteur si fdcD enclenché
}
}
{ if (analogRead(0)>700) // lecture capteur pluie retour temps sec
{ analogWrite(moteurPin1, 0);//ordre rotation -définition du sens
analogWrite(moteurPin2, 150);//ordre rotation -définition du sens
}
if((etatfdcG == HIGH) && (analogRead(0) > 700))
{ analogWrite(moteurPin1, 0);//arrêt moteur si fdcD enclenché
analogWrite(moteurPin2, 0);//arrêt moteur si fdcD enclenché
}
}
}