Bonsoir ou bonjour à tous !
Pour commencer, je suis un vrai noob sur Arduino alors pardonnez moi si je n'ai pas la bonne terminologie et si je pose des question stupides .
Alors pourquoi cette chatière est si spéciale. Pour commencer, il faut remettre le chat au milieu du village. C'est un chat très peureux et je le soupçonne en plus d'être un bon gros faignant par dessus le reste.
Il y a de ça quelques temps, j'ai installé sur la porte de mon amie, une chatière à authentification RFID (via sa puce) qui lui a coûtée un bras, mais Mr le chat, n'a jamais souhaiter faire l'effort de s'en servir. Donc aujourd'hui, ma pote lui ouvre la chatière à 12h et l'appelle depuis son perron dès 18h jusqu'à que Mr daigne rentrer. Ca ne la dérange pas de le faire mais elle doit partir dans 3 semaines en vacances et elle culpabilise un max de devoir demander à sa mère de devoir la matonne pour la promenade du chat. Donc je lui ai proposé de me pencher sur la question pour automatiser le truc, pour qu'elle puisse partir tranquille et l'esprit légé en vacance.
Donc voici le projet :
1 - Tous les jours à midi, la trappe de la chatière doit s'ouvrir.
2 - Jusqu'à 18h, elle doit rester ouverte.
3 - A partir de 18h, la trappe doit se fermer si et seulement si Mr le chat est rentré. Car bien entendu, tous les chats du quartier entrent et sortent à leur convenance, mais ne reste jamais à l'intérieur. Ils bouffent et ils repartent direct.
Pour ce qui est de l'authentification, je vais récupérer un contact sec de la fameuse trappe en place. Ca me facilite grandement le travail. je me pencherai sur la fabrication d'un portique RFID plus tard.
Afin de m'assurer qu'il soit bien rentré et qu'il n'ait pas changé d'avis entre la chatière et sa gamelle et donc qu'il ne soit pas ressorti, je vais installer une barrière infrarouge et les deux conditions devront être validées pour que la trappe se referme. Et si il y a un autre chat à l'intérieur, bin le squatteur attendra le lendemain 12h pour sortir. Point barre.
Alors voilà déjà le bout de code que j'ai pondu et qui est fonctionnel intégrant la séquence d'initialisation à midi avec l'ouverture de la trappe et la fermeture de celle-ci avec les conditions nécessaires et respectées pour la fermeture de celle-ci.
#include <Servo.h>
Servo myServo;
const int ledPresence = 2;
const int rfid = 4;
const int ledIr = 6;
const int Ir = 12;
const int ledEtat_mem = 13;
int buttonState;
// variable pour stocker les valeurs de passage du rfid
int rfidv;
// creation d'une memoire_2 et forçage a 0 de la variable
// etat du telerupteur
int memoire_2=0;
// etat precedent du rfid et forçage a 0 de la variable
int etat_rfidv=0;
void setup() {
Serial.begin(9600);
while(!Serial);
pinMode(rfid,INPUT);
pinMode(Ir, INPUT);
pinMode(ledPresence, OUTPUT);
pinMode(ledEtat_mem, OUTPUT);
pinMode(ledIr, OUTPUT);
myServo.attach(9);
//initialisation position ouverte
myServo.write(100);
delay(20);
//attendre 18h pour activer les conditions de fermeture
delay(5000);
}
void loop() {
rfidv = digitalRead(rfid);
// télérupteur rfid
if (rfidv!=etat_rfidv)
{
if (!rfidv)
{
//Inversion de la valeur de la variable memoire
memoire_2=!memoire_2;
}
//Inversion de la valeur de la variable memoire
memoire_2=!memoire_2;
}
if (memoire_2==1)
{
digitalWrite(ledEtat_mem, 1);
}
else {
digitalWrite(ledEtat_mem, 0);
}
buttonState = digitalRead(Ir);
if(buttonState == 0)
{
digitalWrite(ledIr, 0);
}
else
{
digitalWrite(ledIr, 1);
}
if (memoire_2==1 && buttonState==1){
myServo.write(0);
digitalWrite(ledPresence, 1);
delay(20);
}
// memorisation de l'anciennne valeur de la
// variable
etat_rfidv=rfidv;
}
//une fois fermée, mettre en hibernation jusqu'au lendemain midi pour relancer l'ensemble du programme.
Mais voilà, comme vous le constatez, la gestion de l'heure n'est pas encore implémentée et c'est là que j'ai besoin de votre aide. Comment on fait ça !!!
Je cherche de mon côté, mais n'est pas encore trouvé la meilleure des manières. Alors je me tourne vers vous pour un petit coup de pouce, qui je suis sûr, me fera gagner de nombreuses heures que je pourrais passer avec ma famille.
En tout cas, merci à tous du temps que vous aurez pris pour lire mon premier roman !!
La bise au chat