Je suis en terminales S option SI. Du coup j'ai des projet à faire, et j'ai choisit la chatière automatisé. Je doit détecter un chat, grace à un capteur RFID, puis déverrouiller la chatière grâce à un électro-aimant, tout en gérant d'autres conditions (météo, permissions d'entrée/sortie du chat par l'utilisateur). Je suis débutant en arduino (mais je connais le C ^^), et même si j'ai réussi à avancer mon programme, je ne vois pas du tout comment gérer la rfid. J'ai deux lecteurs rfid, 1 à l'interieur et 1 à l'exterieur, et j'ai deux emmetteurs (pour deux chat éventuellement).
je m'excuse pour mon ignorance mais ça veut dire quoi 9600 bauds ?
Sinon pour connecter mes capteurs, j'ai besoin d'une base shield à connecter sur l'arduino. Je l'ai commandé mais en attendant, je peux juste faire le programme pour l'arduino, sans avoir branché quoi que ce soit dessus.
En attendant voici mon programme et des informations complémentaires :
/*Le but de ce programme est de restreindre les entrées et sorties du chat selon les désirs du propriétaire
Le propriétaire peut choisir entre 4 choix: le chat entre mais ne sort pas, le chat sort mais n'entre pas, le chat peut entrer et sortir, le chat ne peut ni entrer ni sortir
Un humidistance permet de capter l'humidité de l'air ainsi que la température exterieure. Si les conditions météo sont défavorables, le chat ne peut pas sortir mais peut entrer, quel que soit le choix de l'utilisateur.
Deux lecteurs rfid (un à l'interieur et un à l'exterieur), me permettent de capter le chat et de connaitre sa position.
Un temoin sur la chatière me permet de savoir quand elle est fermée, et de refermé la chatière grâce à un electro-aimant tirant*/
#include "DHT.h" // bibliothèque des fonctions de l'humidistance
#define DHTPIN 2 // pour l'humidistance
#define DHTTYPE DHT22 // pour l'humidistance
DHT dht(DHTPIN, DHTTYPE); // pour l'humidistance
int humidistance ();
const int rfidDedans = 10;
const int rfidDehors = 11;
const int temoin = 13;
const int electroAimant = 14;
const int tto = 15; // tout ouvert
const int smpe = 16; // sortie mais pas entrée
const int emps = 17; // entrée mais pas sortie
const int ttf = 18; // tout fermé
int etat = 0;
int i = 0;
void setup()
{
Serial.begin(9600);
pinMode (rfidDedans, INPUT);
pinMode (rfidDehors, INPUT);
pinMode (temoin, INPUT);
pinMode (electroAimant, OUTPUT);
pinMode (tto, INPUT); // tout ouvert
pinMode (smpe, INPUT); // sortie mais pas entrée
pinMode (emps, INPUT); // entrée mais pas sortie
pinMode (ttf, INPUT); // tout fermé
dht.begin();
}
void loop()
{
if (digitalRead (rfidDedans)==HIGH || digitalRead (rfidDehors)==HIGH ) // on attend qu'un des capteurs rfid détecte le chat
{
if (digitalRead (tto) == HIGH) {etat = 1;}
else if (digitalRead (smpe) == HIGH) {etat = 2;}
else if (digitalRead (emps) == HIGH) {etat = 3;}
else if (digitalRead (ttf) == HIGH) {etat = 4;} // selon le choix de l'utilisateur, on affecte un certain nombre à "etat"
/*****LE CHAT EST DEDANS*****/
if (rfidDedans == HIGH) //si le chat est dedans
{
if (humidistance()== 0) // et qu'il ne pleut pas
{
if (etat == 1 || etat == 2) // et que l'utilisateur l'a permit
{
digitalWrite (electroAimant, LOW); //on arrete de faire passer le courant vers l'electro-aimant (dévérouillage)
do
{
delay (5000);
i = 1;
if (digitalRead (rfidDedans)==HIGH || digitalRead (rfidDehors)==HIGH) { i = 0;} // si le chat est encore là, alors i=0
else if (digitalRead (temoin)==LOW) {i = 0;} // si le témoin n'est pas allumé, alors i=0
// sinon i reste à 1
} while (i);
digitalWrite (electroAimant, HIGH); //on refait passer le courant dans l'électro-aimant (vérouillage)
}
}
}
/*****LE CHAT EST DEHORS****/
else
{
if (humidistance() == 1) // si il pleut
{
digitalWrite (electroAimant, LOW); //on arrete de faire passer le courant vers l'electro-aimant (dévérouillage)
do
{
delay (5000);
if (digitalRead (rfidDedans)==HIGH || digitalRead (rfidDehors)==HIGH) { i = 0;}
if (digitalRead (temoin)==LOW) {i = 0;}
} while (i);
digitalWrite (electroAimant, HIGH); //on refait passer le courant dans l'électro-aimant (vérouillage)
}
else if (etat == 1 || etat == 3) //si il pleut pas et que l'utilisateur le permet
{
digitalWrite (electroAimant, LOW); //on arrete de faire passer le courant vers l'electro-aimant (dévérouillage)
do
{
delay (5000);
if (digitalRead (rfidDedans)==HIGH || digitalRead (rfidDehors)==HIGH) { i = 0;}
if (digitalRead (temoin)==LOW) {i = 0;}
} while (i);
digitalWrite (electroAimant, HIGH); //on refait passer le courant dans l'électro-aimant (vérouillage)
}
}
}
}
int humidistance () // cette fonction humidistance renvoie 1 si les condition météo sont défavorables et 0 si elles sont favorables
{
float h = dht.readHumidity(); // variable humidité
float t = dht.readTemperature(); // variable température
if (isnan(t) || isnan(h)) //le capteur ne renvoie rien donc celà signifie que la température est inferieure à 0°C, car le constructeur précise que l'humidisance ne marche plus en dessous de cette température.
{
return 1; // les conditions sont défavorables
}
else if (h >= 93) // le pourcentage d'humidité dans l'air est de 93%, il pleut
{
return 1; // conditions défavorables
}
else
{
return 0; // conditions favorable
}
}
ça y'est !! J'ai reçu ma base shield (ENFIN !! ^^) . J'ai connecté un de mes deux lecteurs RFID, et il fait une super petite lumière rouge encourageante, youpii
Mais je ne comprend pas ce qu'il est censé me faire...
Pleeeasssee heeelp !!
Chatière Automatisé
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Retrouvez moi sur mon blog et ma chaine Youtube !