abs(x) liefert den Betrag von x, also in diesem Fall den Betrag der Differenz ldr1 - ldr2.
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.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.
Falls du also Calis' Variante bevorzugst, solltest du sie etwa so anpassen:
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.Code:if (abs(ldr1-ldr2) < tol) { } else if (ldr1 > ldr2) { } else if (ldr1 < ldr2) // Hier würde auch ein einfaches else reichen { }
Bei dieser Implementierung (wie auch bei meiner ersten Variante) ist garantiert, daß auf den LED-Pins immer ein sauberes Signal liegt.
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.Was benötige ich, um die Daten auf einer SD-Karte zu speichern
Lesezeichen