Bonjour,
Assez novice en la matière je me suis fait un petit piège photo avec une barrière laser.( arduino UNO)
Boitier laser autonome.
Détection laser en entrée A4
Appareil photo commandé par transistor en sortie D13
Flash commandé par transistor en sortie D12
Le système fonctionne correctement quand le faisceau est coupé à ceci près que si l'animal reste devant le faisceau et bien les sorties restent activées en permanence aussi longtemps que le faisceau est coupé.
J'aimerais que les sorties repassent au niveau bas immédiatement après leurs activation.
Après maintes recherches je n'ai pas trouvé satisfaction.
Avez-vous une idée ?
Merci
/*
Dispositf à déclencher en PIN D13 App Photo et PIN D12 FLASH
Le boitier du capteur Capteur laser est relié en en PIN A4 (entrée analogique) via le câble
*/
const int analogInPin = A4; // pin capteur 4
int photo = 13; // pin sortie app photo 13
int flash = 12; // pin sortie flash
int sensorValue = 0; // valeur renvoyé par capteur
int outputValue = 0; // valeur sortie
int seuil = 900; // valeur seuil sensibilité capteur
void setup() {
Serial.begin(9600); // moniteur série à 9600bds
pinMode(photo, OUTPUT); // defini la sortie app photo pin 13
pinMode(flash, OUTPUT); // defini la sortie flash pin 12
pinMode(A4, INPUT); // defini l'entrée capteur
}
void loop() {
sensorValue = analogRead (analogInPin); // lire la valeur analogique en entrée
outputValue = digitalRead (photo);
delay(20); // délais 20msec
// afficher résultat sur moniteur série
Serial.print("capteur= ");
Serial.print(sensorValue);
Serial.print(" PHOTO=");
if (analogRead(A4) < 900) {
Serial.println(" CLIC");
}
else {
Serial.println(" OFF");
}
// si valeur d'entrée passe à 0 (faisceau coupé) alors allumer la sortie (PHOTO)
if (analogRead(4) < 900) {
digitalWrite (13, HIGH); // photo ON (ou lampe,etc....)
delay(100); // delay temps de latence appareil photo
digitalWrite (12, HIGH); // flash on
}
else {
digitalWrite(13, LOW); // Photo off (ou lampe,etc...)
digitalWrite(12, LOW); // flash off
}
}