bewaesserungsautomat:programmversion_0.1_alpha
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
bewaesserungsautomat:programmversion_0.1_alpha [27.05.2016 13:07] – angelegt Frickelpiet | bewaesserungsautomat:programmversion_0.1_alpha [18.05.2023 12:15] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Programmversion 0.1 alpha ====== | + | ====== |
- | Das Programm habe ich für meinen [[[[arduino: | + | <box 100% round red|**Achtung!**> |
+ | |||
+ | Das Programm habe ich für meinen [[[[arduino: | ||
+ | |||
+ | Es liegt mittlerweile die [[Programmversion 0.2 alpha]] | ||
+ | |||
+ | < | ||
+ | // include the library code: | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); | ||
+ | |||
+ | // Definiert die Farben des LCD | ||
+ | #define RED 0x1 | ||
+ | #define YELLOW 0x3 | ||
+ | #define GREEN 0x2 | ||
+ | #define TEAL 0x6 | ||
+ | #define BLUE 0x4 | ||
+ | #define VIOLET 0x5 | ||
+ | #define WHITE 0x7 | ||
+ | |||
+ | // Definiert die Pins für Status-LEDs | ||
+ | int ledPin1 = 8; // LED an Sensor 1 | ||
+ | int ledPin2 = 9; // LED an Sensor 2 | ||
+ | int ledPin3 = 10; // LED an Sensor 3 | ||
+ | int ledPin4 = 11; // LED an Sensor 4 | ||
+ | int ledPin5 = 12; // LED an Sensor 5 (Wasserstand Vorratsbehälter) | ||
+ | |||
+ | // Definiert die Pins für die Hall-Sensoren | ||
+ | int hallPin1 = 31; // Hall-Sensor 1 | ||
+ | int hallPin2 = 33; // Hall-Sensor 2 | ||
+ | int hallPin3 = 35; // Hall-Sensor 3 | ||
+ | int hallPin4 = 37; // Hall-Sensor 4 | ||
+ | |||
+ | // Definiert den Pin für den Level-Sensor im Vorratsbehälter | ||
+ | int levelPin = 0; | ||
+ | |||
+ | // Definiert die Pins für die Pumpenrelais | ||
+ | int relPin1 = 30; // Pumpe 1 | ||
+ | int relPin2 = 32; // Pumpe 2 | ||
+ | int relPin3 = 34; // Pumpe 3 | ||
+ | int relPin4 = 36; // Pumpe 4 | ||
+ | |||
+ | // Definiert die Variablen | ||
+ | int hall1 = 0; | ||
+ | int hall2 = 0; | ||
+ | int hall3 = 0; | ||
+ | int hall4 = 0; | ||
+ | int level = 0; | ||
+ | |||
+ | void setup() { | ||
+ | // Initialisiere die LED-Pins als output | ||
+ | pinMode(ledPin1, | ||
+ | pinMode(ledPin2, | ||
+ | pinMode(ledPin3, | ||
+ | pinMode(ledPin4, | ||
+ | pinMode(ledPin5, | ||
+ | |||
+ | // Initialisiere die Hall-Pins als Input. Außerdem werden die internen Pullup-Widerstände aktiviert. | ||
+ | // Liegt an dem Hall-Sensor | ||
+ | pinMode(hallPin1, | ||
+ | pinMode(hallPin2, | ||
+ | pinMode(hallPin3, | ||
+ | pinMode(hallPin4, | ||
+ | |||
+ | // Initialisiere die Relais-Pins | ||
+ | pinMode(relPin1, | ||
+ | pinMode(relPin2, | ||
+ | pinMode(relPin3, | ||
+ | pinMode(relPin4, | ||
+ | |||
+ | // Initialisiert den Wasserstandsanzeiger | ||
+ | |||
+ | |||
+ | // Debugging output | ||
+ | Serial.begin(9600); | ||
+ | |||
+ | // Einrichten des LCD und Anzeige der Versionsnummer | ||
+ | lcd.begin(16, | ||
+ | lcd.setBacklight(WHITE); | ||
+ | lcd.setCursor(0, | ||
+ | lcd.print(" | ||
+ | lcd.setCursor(0, | ||
+ | lcd.print(" | ||
+ | |||
+ | delay(1000); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // Auslesen der digitalen Eingänge | ||
+ | hall1 = digitalRead(hallPin1); | ||
+ | hall2 = digitalRead(hallPin2); | ||
+ | hall3 = digitalRead(hallPin3); | ||
+ | hall4 = digitalRead(hallPin4); | ||
+ | level = analogRead(levelPin); | ||
+ | |||
+ | // Ausgabe der Eingangssignale an den Hall-Pins an die serielle Schnittstelle | ||
+ | Serial.println(hall1); | ||
+ | Serial.println(hall2); | ||
+ | Serial.println(hall3); | ||
+ | Serial.println(hall4); | ||
+ | Serial.println(level); | ||
+ | |||
+ | // Anzeige des Wasserstands im Vorratsbehälter auf dem LCD | ||
+ | // Die angegebenen Messwerte sind Platzhalter. Die richtigen Werte müssen noch empirisch ermittelt werden. | ||
+ | lcd.setCursor(0, | ||
+ | lcd.print(" | ||
+ | lcd.setCursor(0, | ||
+ | if(level < 100) lcd.print(" | ||
+ | if(level < 90) lcd.print(" | ||
+ | if(level < 80) lcd.print(" | ||
+ | if(level < 70) lcd.print(" | ||
+ | if(level < 60) lcd.print(" | ||
+ | if(level < 50) lcd.print(" | ||
+ | if(level < 40) lcd.print(" | ||
+ | if(level < 30) lcd.print(" | ||
+ | if(level < 20) lcd.print(" | ||
+ | else{lcd.print(" | ||
+ | |||
+ | // Ändert die Hintergrundbeleuchtung des LCD | ||
+ | if(level < 50) lcd.setBacklight(RED); | ||
+ | if(level < 90) lcd.setBacklight(YELLOW); | ||
+ | else{lcd.setBacklight(GREEN); | ||
+ | |||
+ | // Ansteuerung der Pumpen. | ||
+ | // Ist der Wasserstand niedrig, liegt kein Magnetfeld am Hall-Sensor an (Input = LOW). | ||
+ | // Die entsprechende Pumpe wird aktiviert, bis der Soll-Wasserstand erreicht ist (Input = HIGH), | ||
+ | // - sofern keine andere Pumpe läuft und | ||
+ | // - sofern Wasser im Vorratsbehälter ist. | ||
+ | if(hall1 = LOW && level > 5 && digitalRead(relPin2) == HIGH && digitalRead(relPin3) == HIGH && digitalRead(relPin4) == HIGH) digitalWrite(relPin1, | ||
+ | if(hall1 = HIGH) digitalWrite(relPin1, | ||
+ | if(hall2 = LOW && level > 5 && digitalRead(relPin1) == HIGH && digitalRead(relPin3) == HIGH && digitalRead(relPin4) == HIGH) digitalWrite(relPin2, | ||
+ | if(hall2 = HIGH) digitalWrite(relPin2, | ||
+ | if(hall3 = LOW && level > 5 && digitalRead(relPin1) == HIGH && digitalRead(relPin2) == HIGH && digitalRead(relPin4) == HIGH) digitalWrite(relPin3, | ||
+ | if(hall3 = HIGH) digitalWrite(relPin3, | ||
+ | if(hall4 = LOW && level > 5 && digitalRead(relPin1) == HIGH && digitalRead(relPin2) == HIGH && digitalRead(relPin3) == HIGH) digitalWrite(relPin4, | ||
+ | if(hall4 = HIGH) digitalWrite(relPin4, | ||
+ | |||
+ | delay(1000); | ||
+ | } | ||
+ | </ | ||
+ | Tags: #Arduino # |
bewaesserungsautomat/programmversion_0.1_alpha.1464347273.txt.gz · Zuletzt geändert: 18.05.2023 09:06 (Externe Bearbeitung)