Bonjours,
codant chez moi pour des projets de lycée, je voudrai savoir si un code fonctionnerait pour faire barrière infrarouge. j'ai essayé de faire au plus court mais en fonction de ce que j'ai vue sur des tuto, j'ai l’impression que c'est un peu "trop" court :D.
voici le code :
int ledPin = 13; // broche de la led
int inputPin = 2; // choisir la broche d'entré (du capteur)
int pirState = LOW; // variable pirstate (etat PIR = 0)
int val = 0; // variable lecture état broche
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
if (pirState == LOW) {
// MISE ICI DU CODE QUAND UN OBJET EST DÉTECTER (pas encore fait)
pirState = HIGH;
}
}
else {
digitalWrite(ledPin, LOW); // éteindre la led
if (pirState == HIGH){ // condition : valeur broche = haut
pirState = LOW;
}
}
}
En faite dans ce code, au lieu de faire : si il y a de l'infrarouge, j'ai demande l'inverse, "si il n'y a pas d'infrarouge" avec la variable val. Et il n'y a pas de libraire IRremote
Un des codes que j'ai vue sur internet (même même après installation de la libraire IRremote.h, impossible de le faire fonctionner, mais sans modifier le programme, problème au niveau "IRsend irsend; )
/*
Barrière infrarouge avec Arduino
LED IR sur D3 (géré par librairie IRremote) + TSOP32138 -> D2
La LED13 de l'Arduino s'allume en cas de coupure du faisceau lumineux
*/
#include <IRremote.h>
#define CAPTEUR 2 // récepteur IR -> D2
#define LED_STATUT 13 // LED -> D13
IRsend irsend; // déclaration de l'objet émetteur (pin D3 obligatoire)
void setup()
{
pinMode(CAPTEUR, INPUT);
pinMode(LED_STATUT, OUTPUT);
irsend.enableIROut(38); // crée une sortie modulée à 38KHz
Serial.begin(9600);
}
void loop()
{
irsend.mark(0); // envoi du signal pour une durée illimitée
boolean mesure1 = digitalRead(CAPTEUR); // première mesure
delay(5); // délai
boolean mesure2 = digitalRead(CAPTEUR); // seconde mesure
boolean etat = mesure1 * mesure2; // comparaison
if (etat == HIGH) // si les deux lectures voient une coupure
{
digitalWrite(LED_STATUT, HIGH);
Serial.println("Coupure !");
}
else // sinon
{
digitalWrite(LED_STATUT, LOW);
Serial.println("----------OK----------");
}
delay(5);
}