Stap 6: programmeren
/*
Autor: Raphael Dötsch
Datum 10-16-2015
Titel: Photobooth
Beschreibung:
Nach betätigung des START proevers beginnt sterven 7 Segment Anzeige
mit dem Countdown.
Von 9 auf 0 zählen.
Während dessen wir sterven 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 Display mit einem HD44780 gesteuert.
*/
#include
Variablen fuer Pins vergeben:
Const int begin = 4; START -> PIN 4
Const int A = 3; Pin 3 -> een (CD4511BE)
Const int B = 0; PIN 0 -> B (CD4511BE)
Const int C = 1; Pin 1 -> C (CD4511BE)
Const int D = 2; Pin 2 -> D (CD4511BE)
Const int AF = 5; PIN 5 -> Transistor -> Relais -> Autofokus
Const int AL = 6; PIN 6 -> Transistor -> Relais -> Auslöser
Const int RS = 7; PIN 7 -> LCD RS
Const int E = 8; PIN 8 -> LCD E
Const int DB4 = 9; PIN 9 -> LCD DB4
Const int DB5 = 10; PIN 10 -> LCD DB5
Const int DB6 = 11; PIN 11 -> LCD DB6
Const int DB7 = 12; PIN 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};
Booleaanse outputStatus [12];
int leeg [4] = {A, B, C, D};
String LCDtext [4] = {"Bitte", "Start", "druecken", "laecheln"};
toegangsmachtigingen der Pin van mit dem das LCD Display angesprochen werden soll
LiquidCrystal lcd (RS E, DB4, DB5, DB6, DB7);
VOID Setup {}
LCD initialisieren
LCD.begin (16, 2);
LCD.Clear();
LCD.Home();
Pinnen als Eingang bestimmen:
pinMode (START, INPUT);
Pinnen als Ausgang bestimmen:
voor (int var = 0; var < 12; var ++) {}
pinMode (outputAddress [var], OUTPUT);
}
}
void loop {}
Als (text_state == 0) {}
Start_text();
Clear7Seg();
}
PROG();
}
VOID Start_text()
{
Een bericht op het LCD-scherm afdrukt. (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 blank 1111 = ABCD
for (int i = 0; ik < 4; i ++) {}
digitalWrite (leeg [i], hoge);
}
}
ongeldig lachen() {}
LCD.Clear();
LCD.Home();
LCD.Print(LCDtext[0]);
LCD.Print(LCDtext[3]);
}
VOID Prog()
{
Als (digitalRead(START) == HIGH)
{//Countdown für Auslöser starten und im sekundentakt von 9 auf 0 zählen lassen
text_state = 0;
lachen();
ZEIGE ZAHL 9
digitalWrite (A, hoog);
digitalWrite (B, laag);
digitalWrite (C, laag);
digitalWrite D, hoge;
delay(t);
ZEIGE ZAHL 8
digitalWrite (A, laag);
delay(t);
ZEIGE ZAHL 7
digitalWrite (A, hoog);
digitalWrite (B, hoge);
digitalWrite (C, hoge);
digitalWrite (D, laag);
delay(t);
Starte Autofokus
digitalWrite (AF, hoge);
ZEIGE ZAHL 6
digitalWrite (A, laag);
delay(t);
ZEIGE ZAHL 5
digitalWrite (A, hoog);
digitalWrite (B, laag);
delay(t);
ZEIGE ZAHL 4
digitalWrite (A, laag);
delay(t);
ZEIGE ZAHL 3
digitalWrite (A, hoog);
digitalWrite (B, hoge);
digitalWrite (C, laag);
delay(t);
ZEIGE ZAHL 2
digitalWrite (A, laag);
delay(t);
ZEIGE ZAHL 1
digitalWrite (A, hoog);
digitalWrite (B, laag);
delay(t);
ZEIGE ZAHL 0
digitalWrite (A, laag);
Warte bis Kamera fokusiert hoed und löst aus
digitalWrite (AL, hoge);
delay(400);
Beide Ausgänge wieder öffnen
digitalWrite (AF, laag);
digitalWrite (AL, laag);
Clear7Seg();
}
}