Étape 6: programmation
/*
Autor : Raphael Dötsch
Référence 16/10/2015
Titel : Photobooth
Beschreibung :
Nach betätigung des dégustateurs START beginnt die Anzeige de Segment 7
mit dem compte à rebours.
Von 9 auf 0 zählen.
Während dessen wir die Kamera dazu gebracht zu fokusieren und bei
0 den Auslöser zu betätigen.
Dieses wird über 2 Relais realisiert.
Das ganze wird über ein écran LCD mit einem HD44780 gesteuert.
*/
#include
Variablen fuer Pins vergeben :
const int START = 4 ; Démarrer -> broche 4
const int A = 3 ; Broche 3 -> une (CD4511BE)
const int B = 0 ; Axe 0 -> B (CD4511BE)
const int C = 1 ; Broche 1 -> C (CD4511BE)
const int D = 2 ; Broche 2 -> D (CD4511BE)
const int AF = 5 ; BROCHE 5 -> Transistor -> Relais -> Autofokus
const int AL = 6 ; BROCHE 6 -> Transistor -> Relais -> Auslöser
const int RS = 7 ; Broche 7 -> LCD RS
const int E = 8 ; Broche 8 -> LCD E
const int DB4 = 9 ; BROCHE 9 -> LCD DB4
const int DB5 = 10 ; BROCHE de réglage 10 -> LCD DB5
const int DB6 = 11 ; BROCHE 11 -> LCD DB6
const int DB7 = 12 ; AXE 12 -> LCD DB7
const int t = 800 ;
int text_state = 0 ;
int outputAddress [12] = {A, B, C, D, AF, AL, RS, E, DB4, DB5, DB6, DB7} ;
outputStatus booléen [12] ;
int blanc [4] = {A, B, C, D} ;
String LCDtext [4] = {"Bitte", « Démarrer », « druecken », « laecheln »} ;
das de festlegen der goupille mit dem écran LCD angesprochen werden soll
Innovente lcd (RS, E, DB4, DB5, DB6, DB7) ;
void setup() {}
LCD initialisieren
LCD.Begin (16, 2) ;
LCD.Clear() ;
LCD.Home() ;
Tiges d’als Eingang bestimmen :
pinMode (entrée, démarrage) ;
Tiges d’als Ausgang bestimmen :
pour (int var = 0; var < 12 ; var ++) {}
pinMode (outputAddress [var], sortie) ;
}
}
void loop() {}
Si (text_state == 0) {}
Start_text() ;
Clear7Seg() ;
}
PROG() ;
}
Sub Start_text()
{
Imprimer un message à l’écran LCD. (Bitte Start Button)
LCD.Clear() ;
LCD.Home() ;
LCD.Print(LCDtext[0]) ;
LCD.Print(LCDtext[1]) ;
lcd.setCursor (0, 1) ;
LCD.Print(LCDtext[2]) ;
text_state = 1 ;
}
Sub Clear7Seg()
{
Blank CD4511BE 1111 = ABCD
pour (int i = 0; i < 4; i ++) {}
digitalWrite (vierges [i], HIGH) ;
}
}
void lachen() {}
LCD.Clear() ;
LCD.Home() ;
LCD.Print(LCDtext[0]) ;
LCD.Print(LCDtext[3]) ;
}
Sub Prog()
{
Si (digitalRead(START) == HIGH)
{//Countdown für Auslöser starten und im sekundentakt von 9 auf 0 zählen lassen
text_state = 0 ;
Lachen() ;
DIR ZAHL 9
digitalWrite (A, élevée) ;
digitalWrite (B, faible) ;
digitalWrite (C, faible) ;
digitalWrite (D, élevé) ;
Delay(t) ;
ZAHL DIR 8
digitalWrite (A, faible) ;
Delay(t) ;
ZAHL DIR 7
digitalWrite (A, élevée) ;
digitalWrite (B, élevé) ;
digitalWrite (C, élevé) ;
digitalWrite (D, faible) ;
Delay(t) ;
Starte Autofokus
digitalWrite (AF, élevé) ;
ZAHL DIR 6
digitalWrite (A, faible) ;
Delay(t) ;
DIR ZAHL 5
digitalWrite (A, élevée) ;
digitalWrite (B, faible) ;
Delay(t) ;
ZAHL DIR 4
digitalWrite (A, faible) ;
Delay(t) ;
ZAHL DIR 3
digitalWrite (A, élevée) ;
digitalWrite (B, élevé) ;
digitalWrite (C, faible) ;
Delay(t) ;
ZAHL DIR 2
digitalWrite (A, faible) ;
Delay(t) ;
DIR ZAHL 1
digitalWrite (A, élevée) ;
digitalWrite (B, faible) ;
Delay(t) ;
ZAHL DIR 0
digitalWrite (A, faible) ;
Warte bis Kamera fokusiert hat und löst aus
digitalWrite (AL, élevé) ;
Delay(400) ;
Beide Ausgänge wieder öffnen
digitalWrite (AF, faible) ;
digitalWrite (AL, faible) ;
Clear7Seg() ;
}
}