DIY Arduino baserat PHOTO BOOTH (6 / 9 steg)
Steg 6: programmering
/*
Författare: Raphael Dötsch
Datum 10-16-2015
Titel: Photobooth
Beschreibung:
Nach betätigung des START provsmakare beginnt die 7 Segment Anzeige
MIT dem nedräkningen.
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 LCD uppvisning mit einem HD44780 gesteuert.
*/
#include
Variablen für Pins vergeben:
CONST int START = 4; START -> stift 4
CONST int A = 3; Stift 3 -> en (CD4511BE)
CONST int B = 0; PIN 0 -> B (CD4511BE)
CONST int C = 1; Stift 1 -> C (CD4511BE)
CONST int D = 2. Stift 2 -> D (CD4511BE)
CONST int AF = 5; STIFT 5 -> Transistor -> Relais -> Autofokus
CONST int AL = 6; STIFT 6 -> Transistor -> Relais -> Auslöser
CONST int RS = 7. STIFT 7 -> LCD RS
CONST int E = 8. STIFT 8 -> LCD-E
CONST int DB4 = 9. STIFT 9 -> LCD DB4
CONST int DB5 = 10; STIFT 10 -> LCD DB5
CONST int DB6 = 11; STIFT 11 -> LCD DB6
CONST int DB7 = 12. STIFT 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};
booleska outputStatus [12].
int tomt [4] = {A, B, C, D};
Sträng LCDtext [4] = {"Bitte", "Start", "druecken", "laecheln"};
festlegen der Pin mit dem das LCD-skärm angesprochen werden soll
LiquidCrystal lcd (RS, E, DB4, DB5, DB6, DB7);
void setup() {
LCD initialisieren
LCD.BEGIN (16, 2);
LCD.Clear();
LCD.Home();
Stift als Eingang bestimmen:
pinMode (START, indata);
Stift als Ausgang bestimmen:
för (int var = 0; var < 12; var ++) {
pinMode (outputAddress [var], produktionen);
}
}
void loop() {
om (text_state == 0) {
Start_text();
Clear7Seg();
}
PROG();
}
void Start_text()
{
Skriv ut ett meddelande till LCD-skärmen. (Bitte Start drücken)
LCD.Clear();
LCD.Home();
LCD.Print(LCDtext[0]);
LCD.Print(LCDtext[1]);
lcd.setCursor (0, 1);
LCD.Print(LCDtext[2]);
text_state = 1;
}
void Clear7Seg()
{
CD4511BE Tom 1111 = ABCD
för (int jag = 0; jag < 4; i ++) {
digitalWrite (tomt [i], hög);
}
}
void lachen() {
LCD.Clear();
LCD.Home();
LCD.Print(LCDtext[0]);
LCD.Print(LCDtext[3]);
}
void Prog()
{
om (digitalRead(START) == hög)
{//Countdown für Auslöser starten und im sekundentakt von 9 auf 0 zählen lassen
text_state = 0;
Lachen();
ZEIGE ZAHL 9
digitalWrite (en, hög);
digitalWrite B, låga.
digitalWrite (C, låg).
digitalWrite D, hög.
Delay(t);
ZEIGE ZAHL 8
digitalWrite (en, låg);
Delay(t);
ZEIGE ZAHL 7
digitalWrite (en, hög);
digitalWrite B, hög.
digitalWrite (C, hög).
digitalWrite D, låg.
Delay(t);
Startat Autofokus
digitalWrite (AF, hög);
ZEIGE ZAHL 6
digitalWrite (en, låg);
Delay(t);
ZEIGE ZAHL 5
digitalWrite (en, hög);
digitalWrite B, låga.
Delay(t);
ZEIGE ZAHL 4
digitalWrite (en, låg);
Delay(t);
ZEIGE ZAHL 3
digitalWrite (en, hög);
digitalWrite B, hög.
digitalWrite (C, låg).
Delay(t);
ZEIGE ZAHL 2
digitalWrite (en, låg);
Delay(t);
ZEIGE ZAHL 1
digitalWrite (en, hög);
digitalWrite B, låga.
Delay(t);
ZEIGE ZAHL 0
digitalWrite (en, låg);
Warte bis Kamera fokusiert hatt und löst aus
digitalWrite (AL, hög);
Delay(400);
Beide Ausgänge wieder öffnen
digitalWrite (AF, låg);
digitalWrite (AL, låg);
Clear7Seg();
}
}