Zitat Zitat von Fischy Beitrag anzeigen
Danke euch beiden!

Hab Calis`s Version genommen, funktioniert super genau wie ichs haben wollte.

Kannst du mir noch das "abs" Dingens erklären?
abs(x) liefert den Betrag von x, also in diesem Fall den Betrag der Differenz ldr1 - ldr2.

Das Programm soll später eine 2 achsige Nachfüranlage für PV-Module steuern.

An die 2 Ledpins will ich je ein Transistor mit Lastrelais anschließen der den Motor 12V/4A Getriebemotor steuert.
Dann solltest du entweder meinen Vorschlag verwenden, oder seinen so anpassen, daß du zuerst auf Gleichheit prüfst und die anderen beiden Fälle mit "else if" statt "if". Denn wie Calis schon angesprochen hat, wird auch in dem Fall daß die Differenz innerhalb der Toleranz liegt trotzdem immer eine der LEDs ganz kurz eingeschaltet. Das mag zwar bei LEDs keine Rolle spielen (man sieht es ja nicht), aber wenn da noch was anderes dran hängt ist es zumindest unschön.


Falls du also Calis' Variante bevorzugst, solltest du sie etwa so anpassen:
Code:
if (abs(ldr1-ldr2) < tol)
{
}
else if (ldr1 > ldr2)
{
}
else if (ldr1 < ldr2) // Hier würde auch ein einfaches else reichen
{
}
Wobei die Bedingung beim zweiten "else if" nicht zwingend notwendig ist, denn wenn die Differenz nicht kleiner ist als die Toleranz UND ldr1 nicht größer als ldr2, dann kann ldr1 ohnehin nurnoch kleiner sein als ldr2.

Bei dieser Implementierung (wie auch bei meiner ersten Variante) ist garantiert, daß auf den LED-Pins immer ein sauberes Signal liegt.

Was benötige ich, um die Daten auf einer SD-Karte zu speichern
SD Karten kann man per SPI ansprechen, was sehr gut ist da nahezu jeder µC eine SPI Schnittstelle hat. Allerdings muss man mit der Versorgungsspannung aufpassen, denn die liegt nur bei 3,3V. Softwareseitig wird die Sache schon schwieriger wenn die Daten "PC-kompatibel" gespeichert werden sollen, denn in diesem Fall benötigst du eine Bibliothek für das FAT Dateisystem.