Das Erste ist Sinnvoller, oder Profesioneller als das Zweite.
Das Zweite ist aber für Anfänger viel besser zu verstehen.
Das Programm hat drei verschiedene Funkitonen. Im ersten Programm sind diese drei Funktionen als einzelne Programm-LOOP´s geschrieben. Und sie werden dann im eigentlichen LOOP der Hauptteiles nur der Reihe nach aufgerufen. Dieser HauptLoop, wird ja laufend von oben nach unten abgearbeitet. Kaum unten angekommen, geht es wieder oben los. Nur was im HauptLoop aufgerufen wird, wird auch abgearbeitet. Also im HauptLoop wird entschieden welche Funktionen, in welcher Reihenfolge an der Reihe ist. Natürlich kann man trotzdem auch im HauptLoop noch andere Dinge bearbeiten, die in keiner eigenen Funktion stehen. Also ich kann auch über if Abfragen noch entscheiden, ob eine Funktion aufgerufen wird. Also z.B. >
Code: Alles auswählen
void loop()
{
if (WertA == 100)
{
getPoti();
}
}
oder eben einfach alle drei Funktionen der Reihe nach aufrufen >
Code: Alles auswählen
void loop()
{
getPoti();
getVoltage();
getLumi();
}
Ich schreibe die nächsten Tage mehr zu dem Unterschied. Heute ist es mir zu spät.
Hier das profesionellere Programm:
Code: Alles auswählen
const byte potiPin = A0;
const byte voltagePin = A1;
const byte lumiPin = A2;
const byte pwmOutPin = 5;
const byte voltageRelaisOutPin = 4;
const byte lumiRelaisOutPin = 6;
void setup()
{
pinMode(voltageRelaisOutPin, OUTPUT);
pinMode(lumiRelaisOutPin, OUTPUT);
}
void loop()
{
getPoti();
getVoltage();
getLumi();
}
void getPoti()
{
if (analogRead(potiPin) >= 1023)
digitalWrite(pwmOutPin, HIGH);
else if (analogRead(potiPin) <= 1)
digitalWrite(pwmOutPin, LOW);
else
analogWrite(pwmOutPin, (analogRead(potiPin) / 4));
}
void getVoltage()
{
if (analogRead(voltagePin) > 500)
digitalWrite(voltageRelaisOutPin, HIGH);
if (analogRead(voltagePin) < 450)
digitalWrite(voltageRelaisOutPin, LOW);
}
void getLumi()
{
if (analogRead(lumiPin) > 500)
digitalWrite(lumiRelaisOutPin, HIGH);
if (analogRead(lumiPin) < 450)
digitalWrite(lumiRelaisOutPin, LOW);
}
Und es hat ein paar zusätzliche Erklärungen drinn.
Code: Alles auswählen
const byte potiPin = A0;
const byte voltagePin = A1;
const byte lumiPin = A2;
const byte pwmOutPin = 5;
const byte voltageRelaisOutPin = 4;
const byte lumiRelaisOutPin = 6;
void setup()
{
pinMode(voltageRelaisOutPin, OUTPUT);
pinMode(lumiRelaisOutPin, OUTPUT);
//Diese Imputs braucht man nicht wirklich,
//weil Analog Pins automatisch inputs sind.
//man kann sie so schreiben, aber auch weg lassen.
pinMode(potiPin, INPUT);
pinMode(voltagePin, INPUT);
pinMode(lumiPin; INPUT);
}
void loop()
{
// Vom Analog Pin kommt der Wert 0 bis 1023 für 0 - 5 Volt vom Poti
analogWrite(pwmOutPin, (analogRead(potiPin) / 4));
//==================================================
// 0 - 5 Volt am Eingang ist wieder der Auslesewert 0 - 1023
if (analogRead(voltagePin) > 500)
{
digitalWrite(voltageRelaisOutPin, HIGH);
}
if (analogRead(voltagePin) < 450)
{
digitalWrite(voltageRelaisOutPin, LOW);
}
//==================================================
// 0 - 5 Volt am Eingang ist wieder der Auslesewert 0 - 1023
if (analogRead(lumiPin) > 500)
{
digitalWrite(lumiRelaisOutPin, HIGH);
}
if (analogRead(lumiPin) < 450)
{
digitalWrite(lumiRelaisOutPin, LOW);
}
}