Hier der sketch (=Programm):
/* Rollladenprojekt Juli 2010, Klasse 10b */
int
LDR_Wert; // LDR
an AnalogPin3
int
WunschHelligkeit; // Poti an AnalogPin1
boolean
EndSchalter1; // DigitalPin3
boolean
EndSchalter2; // DigitalPin4
int
Helligkeit; // berechnet
void setup()
{
pinMode(3,INPUT); // Endschalter 1
pinMode(4,INPUT); // Endschalter 2
pinMode(5,OUTPUT); // für Motortreiber
pinMode(6,OUTPUT); // für Motortreiber
Serial.begin(9600);
Serial.print(22,BYTE); // Einschalten des LCD-Displays
Serial.print(12,BYTE); // Löschen des Displays
delay(5);
Serial.print(17,BYTE); // Hintergrundbeleuchtung an
Serial.print(128,BYTE); // Cursor auf 0,0 (erste Zeile)
Serial.print("Ist : ");
Serial.print(148,BYTE); // Cursor auf 1,0 (zweite Zeile)
Serial.print("Soll: ");
}
void loop()
{
EndSchalter1 = digitalRead(4);
EndSchalter2 = digitalRead(3);
LDR_Wert = analogRead(3);
WunschHelligkeit = 2*analogRead(1); // Poti: Helligkeit bis 2046 Lux!
Helligkeit = 3036.096-28.034*LDR_Wert+0.0935*LDR_Wert*LDR_Wert-
0.000132*LDR_Wert*LDR_Wert*LDR_Wert+
6.90e-8*LDR_Wert*LDR_Wert*LDR_Wert*LDR_Wert;
// Eichung der Helligkeit mit Maple Curve Fitting
Serial.print(136,BYTE); // Cursor
auf 0,8
Serial.print(" ");
Serial.print(136,BYTE); // Cursor
auf 0,8
Serial.print(Helligkeit,DEC);
Serial.print(156,BYTE); // Cursor
auf 1,8
Serial.print(" ");
Serial.print(156,BYTE); // Cursor
auf 1,8
Serial.print(WunschHelligkeit,DEC);
if (Helligkeit <
WunschHelligkeit*0.95) // zu
dunkel !
{
digitalWrite(6,LOW);
if (EndSchalter1==0) digitalWrite(5,HIGH); // Motor dreht links
else
digitalWrite(5,LOW);
// Motor steht
}
if (Helligkeit >
WunschHelligkeit*1.05) // zu
hell !
{
digitalWrite(5,LOW);
if (EndSchalter2==0) digitalWrite(6,HIGH); // Motor dreht rechts
else
digitalWrite(6,LOW);
// Motor steht
}
if (Helligkeit >= WunschHelligkeit*0.95 &&
Helligkeit <= WunschHelligkeit*1.05 ) // Wohlfühlbereich !
{
digitalWrite(5,LOW);
// Motor steht
digitalWrite(6,LOW);
}
delay(60);
}