Étape 2: Circuit et code
Vous devrez télécharger et installer la bibliothèque suivante :
LE CODE / /
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
LiquidCrystal_I2C lcd (0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) ;
#include < IRremote.h >
#define RECV_PIN 4
IRrecv irrecv(RECV_PIN) ;
decode_results distant ;
#define irLed 12 //ir dirigée sur la broche 12
bouton int = 0 ; Traqueur de bouton IR
fdel int = 0 ; retard de déclenchement du flash
pdel int = 0 ; dernier délai de déclenchement du flash
camb int = 10000 ; temps de caméra ampoule
int pcamb = 10000 ; la dernière caméra ampoule fois
#define AMC 10 //camera l’ergot
#define flash 8 //flash l’ergot
int b = 0 ;
int x = 0 ; alors que la prise de boucle
int y = 0 ; alors que le compteur de boucle
int z = 0 ; push button boucle while
int irt ; valeur de transistor IR
int pirt ; dernière valeur de transistor ir
int irTrigger = 900 ; seuil de déclenchement du flash
int pirTrigger = 900 ; seuil de déclenchement du flash dernière
#define bouton p 7 //push bouton sur la broche 7
#define lcdLight 6 //lcd rétro-éclairage sur large broche 6
#define relais 9
void setup() {}
Serial.Begin(9600) ; pour le test
LCD.Begin (16, 2) ; initialiser l’écran lcd pour 16 caractères 2 lignes
LCD.Clear() ;
irrecv.enableIRIn() ; Démarrer le récepteur
pinMode (irLed, sortie) ;
pinMode (AMC, sortie) ;
pinMode (flash, sortie) ;
pinMode (bouton p, INPUT_PULLUP) ;
digitalWrite (irLed, HIGH) ;
pinMode(lcdLight,OUTPUT) ;
digitalWrite(lcdLight,HIGH) ;
pinMode(relay,OUTPUT) ;
}
void loop()
{
IRT=analogRead(a0) ; IR transistor valeur 4 tests
Serial.println(IRT) ;
digitalWrite(lcdLight,HIGH) ;
garder lcd affichage correct / / /
FDEL = contraindre (fdel, 0, 999) ;
Si (fdel == 9 & & pdel == 10 || fdel == 99 & & pdel == 100)
{
LCD.Clear() ;
}
pdel = fdel ;
Camb = contraindre (camb, 3000, 30000) ; temps d’ampoule 3-30 secondes
Si (camb == 9500 & & pcamb == 10000)
{
LCD.Clear() ;
}
pcamb = camb ;
irTrigger = contraindre (irTrigger, 100, 1022) ;
Si (irTrigger == 999 & & pirTrigger == 1000)
{
LCD.Clear() ;
}
pirTrigger = irTrigger ;
Écran LCD data / / /
lcd.setCursor (0, 0) ;
LCD.Print("del:") ;
lcd.setCursor (4, 0) ;
LCD.Print(FDEL) ;
lcd.setCursor (8, 0) ;
LCD.Print("IRT:") ;
lcd.setCursor (12, 0) ;
LCD.Print(irTrigger) ;
lcd.setCursor (0, 1) ;
LCD.Print ("ampoule minuterie:") ;
lcd.setCursor (11, 1) ;
LCD.Print(Camb) ;
Recherchez les ir d’entrée / / /
Si {(irrecv.decode(&remote))
Serial.println(Remote.value) ; Il s’agit pour la cartographie votre distance / / /
caméra triger scène / / /
Si (remote.value == 1320368837)
{
LCD.Clear() ;
digitalWrite(lcdLight,LOW) ; éteindre l’écran lcd
digitalWrite(relay,HIGH) ;
Delay(1000) ;
digitalWrite (AMC, HIGH) ; ouvrir l’obturateur de la caméra
x = 1 ;
alors que (x == 1) / / hold pour seuil ir se déclenchent
{
y = y + 1 ;
Delay(1) ;
IRT = analogRead(A0) ; lu transistor ir
Serial.println(IRT) ; pour le test
Si (irt < irTrigger) / / triger le flash
{
Delay(FDEL) ;
digitalWrite (flash, HIGH) ;
Delay(20) ;
digitalWrite (flash, basse) ;
x = 0 ;
y = 0 ;
Delay(100) ;
digitalWrite (AMC, faible) ;
Delay(1000) ;
digitalWrite(relay,LOW) ;
}
ElseIf (y > camb) //exit si rien ne se passe
{
digitalWrite (AMC, faible) ;
digitalWrite(relay,LOW) ;
x = 0 ;
y = 0 ;
}
}
}
Codes IR pour changer les variables / / /
retard de Flash / / /
ElseIf (remote.value == 1320358637)
{
FDEL = fdel + 1 ;
bouton = 1 ;
}
ElseIf (remote.value == 4294967295 & & bouton == 1)
{
FDEL = fdel + 1 ;
}
ElseIf (remote.value == 1320368327
)
{
FDEL = fdel - 1 ;
bouton = 2 ;
}
ElseIf (remote.value == 4294967295 & & bouton == 2)
{
FDEL = fdel - 1 ;
}
caméra ampoule temps / / /
ElseIf (remote.value == 1320392807)
{
Camb = camb + 500 ;
bouton = 3 ;
}
ElseIf (remote.value == 4294967295 & & bouton == 3)
{
Camb = camb + 500 ;
}
ElseIf (remote.value == 1320360167)
{
Camb = camb - 500 ;
bouton = 4 ;
}
ElseIf (remote.value == 4294967295 & & bouton == 4)
{
Camb = camb - 500 ;
}
IR TRIGGER / / /
ElseIf (remote.value == 1320401477)
{
irTrigger = irTrigger + 1 ;
bouton = 5 ;
}
ElseIf (remote.value == 4294967295 & & bouton == 5)
{
irTrigger = irTrigger + 1 ;
}
ElseIf (remote.value == 1320417287)
{
irTrigger = irTrigger - 1 ;
bouton = 6 ;
}
ElseIf (remote.value == 4294967295 & & bouton == 6)
{
irTrigger = irTrigger - 1 ;
}
garder les autres boutons de déclenchement répéter / / /
d’autre
{
bouton = 0 ; réinitialiser le bouton de la télécommande
}
irrecv.Resume() ; Recevoir la valeur suivante
}
bouton poussoir / / /
Si (digitalRead(pButton) == faible)
{
LCD.Clear() ;
z = 1 ;
Delay(500) ;
tandis que (z == 1)
{
IRT = analogRead(A0) ; lu transistor ir
préserver la stabilité des LCD / /
Si (irt < 9 & & pirt > 10 || irt < 99 & & pirt > 100 || irt < 999 & & pirt > 1000)
{
LCD.Clear() ;
}
PIRT = irt ;
lcd.setCursor (2, 0) ;
LCD.Print (« IRT moniteur: ") ;
lcd.setCursor(6,1) ;
LCD.Print("#") ;
lcd.setCursor (7, 1) ;
LCD.Print(IRT) ;
Delay(500) ;
Si (digitalRead(pButton) == faible)
{
z = 0 ;
LCD.Clear() ;
Delay(500) ;
rupture ;
}
}
}
Comment changent les valeurs rapides retarder / / /
Delay(125) ;
}