bewaesserungsautomat:programmversion_0.2_alpha
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
bewaesserungsautomat:programmversion_0.2_alpha [27.05.2016 13:40] – Frickelpiet | bewaesserungsautomat:programmversion_0.2_alpha [18.05.2023 12:15] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Bewässerungsautomat Programmversion 0.2 alpha ====== | ====== Bewässerungsautomat Programmversion 0.2 alpha ====== | ||
+ | <box 100% round red|**Achtung!**> | ||
+ | |||
Gegenüber [[Programmversion 0.1 alpha]] wurden insbesondere zwei Änderungen vorgenommen: | Gegenüber [[Programmversion 0.1 alpha]] wurden insbesondere zwei Änderungen vorgenommen: | ||
* Es wird kein LCD verwendet. | * Es wird kein LCD verwendet. | ||
* Es werden Neopixel anstatt LEDs verwendet. | * Es werden Neopixel anstatt LEDs verwendet. | ||
- | Grundlagen: | + | Anmerkungen: |
+ | * Das Programm lässt sich kompilieren, | ||
+ | * Der Analog-Pin A0 ist nur dem Prinzip nach eingebunden. Die Messwerte werden sicherlich nicht zwischen 0 und 100 liegen. | ||
+ | |||
+ | |||
+ | Hilfreicher Link für die vorgenommenen Änderungen: | ||
* https:// | * https:// | ||
+ | Was noch zu tun ist: | ||
+ | * Der DHT22 könnte eingebunden werden. Der Sensor misst die Temperatur und Luftfeuchte. Daraus ließe sich der Taupunkt berechnen. Dieser Wert wäre interessant, | ||
+ | * Damit die Neopixel blinken oder pulsieren können, müsste das Programm ohne den delay-Befehl auskommen. | ||
+ | * Der Wasserstandssensor für den Vorratstank muss noch " | ||
+ | * Die Helligkeit der Neopixel soll vom Umgebungslicht abhängig sein. | ||
+ | * Bluetooth | ||
+ | |||
+ | < | ||
+ | // Unterschiede zu Programmversion 0.1: | ||
+ | // - kein LCD | ||
+ | // - Neopixel anstatt LEDs | ||
+ | |||
+ | // include the library code: | ||
+ | #include < | ||
+ | |||
+ | // Definiert die Pins für die NeoPixels | ||
+ | int neoPin1 = 12; // Neopixel an Blumenkastenensor 1 | ||
+ | int neoPin2 = 11; // Neopixel an Blumenkastenensor 2 | ||
+ | int neoPin3 = 10; // Neopixel an Blumenkastenensor 3 | ||
+ | int neoPin4 = 9; // Neopixel an Blumenkastenensor 4 | ||
+ | int neoPin5 = 8; // Neopixelring am Wasserstandssensor im Vorratsbehälter | ||
+ | int neoPin6 = 7; // Neopixelring im Gehäusedeckel | ||
+ | |||
+ | // Definiert die NeoPixels | ||
+ | Adafruit_NeoPixel neopix1 = Adafruit_NeoPixel(1, | ||
+ | Adafruit_NeoPixel neopix2 = Adafruit_NeoPixel(1, | ||
+ | Adafruit_NeoPixel neopix3 = Adafruit_NeoPixel(1, | ||
+ | Adafruit_NeoPixel neopix4 = Adafruit_NeoPixel(1, | ||
+ | Adafruit_NeoPixel neopix5 = Adafruit_NeoPixel(12, | ||
+ | Adafruit_NeoPixel neopix6 = Adafruit_NeoPixel(24, | ||
+ | |||
+ | // 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 = A0; | ||
+ | |||
+ | // 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 NeoPixel-Pins | ||
+ | pinMode(neoPin1, | ||
+ | pinMode(neoPin2, | ||
+ | pinMode(neoPin3, | ||
+ | pinMode(neoPin4, | ||
+ | pinMode(neoPin5, | ||
+ | pinMode(neoPin6, | ||
+ | |||
+ | // Initialisiere die Hall-Pins als Input. Außerdem werden die internen Pullup-Widerstände aktiviert. | ||
+ | // Liegt an dem Hall-Sensor ein Magnetfeld an, ist der Input LOW, ansonsten ist der Input HIGH. | ||
+ | pinMode(hallPin1, | ||
+ | pinMode(hallPin2, | ||
+ | pinMode(hallPin3, | ||
+ | pinMode(hallPin4, | ||
+ | |||
+ | // Initialisiere die Relais-Pins | ||
+ | pinMode(relPin1, | ||
+ | pinMode(relPin2, | ||
+ | pinMode(relPin3, | ||
+ | pinMode(relPin4, | ||
+ | |||
+ | // Initialisiere den Wasserstandsanzeiger | ||
+ | pinMode(level, | ||
+ | |||
+ | // Initialisiere alle NeoPixels | ||
+ | neopix1.begin(); | ||
+ | neopix1.show(); | ||
+ | neopix2.begin(); | ||
+ | neopix2.show(); | ||
+ | neopix3.begin(); | ||
+ | neopix3.show(); | ||
+ | neopix4.begin(); | ||
+ | neopix4.show(); | ||
+ | neopix5.begin(); | ||
+ | neopix5.show(); | ||
+ | neopix6.begin(); | ||
+ | neopix6.show(); | ||
+ | | ||
+ | // Debugging output | ||
+ | Serial.begin(9600); | ||
+ | |||
+ | } | ||
+ | |||
+ | 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 und dem Analog-Pin an die serielle Schnittstelle | ||
+ | Serial.println(hall1); | ||
+ | Serial.println(hall2); | ||
+ | Serial.println(hall3); | ||
+ | Serial.println(hall4); | ||
+ | Serial.println(level); | ||
+ | |||
+ | // 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, | ||
+ | |||
+ | |||
+ | // Ansteuerung der NeoPixels in den Blumenkastensensoren | ||
+ | if(hall1 = LOW) neopix1.setPixelColor(0, | ||
+ | if(hall1 = HIGH) neopix1.setPixelColor(0, | ||
+ | neopix1.show(); | ||
+ | | ||
+ | if(hall2 = LOW) neopix2.setPixelColor(0, | ||
+ | if(hall2 = HIGH) neopix2.setPixelColor(0, | ||
+ | neopix2.show(); | ||
+ | | ||
+ | if(hall3 = LOW) neopix3.setPixelColor(0, | ||
+ | if(hall3 = HIGH) neopix3.setPixelColor(0, | ||
+ | neopix3.show(); | ||
+ | | ||
+ | if(hall4 = LOW) neopix4.setPixelColor(0, | ||
+ | if(hall4 = HIGH) neopix4.setPixelColor(0, | ||
+ | neopix4.show(); | ||
+ | |||
+ | |||
+ | // | ||
+ | |||
+ | neopix5.setPixelColor(0, | ||
+ | neopix5.setPixelColor(11, | ||
+ | |||
+ | if (level >= 90) { | ||
+ | neopix5.setPixelColor(10, | ||
+ | } else if (level < 90) { | ||
+ | neopix5.setPixelColor(10, | ||
+ | } | ||
+ | | ||
+ | if (level >= 80) { | ||
+ | neopix5.setPixelColor(9, | ||
+ | } else if (level < 80) { | ||
+ | neopix5.setPixelColor(9, | ||
+ | } | ||
+ | | ||
+ | if (level >= 70) { | ||
+ | neopix5.setPixelColor(8, | ||
+ | } else if (level < 70) { | ||
+ | neopix5.setPixelColor(8, | ||
+ | } | ||
+ | | ||
+ | if (level >= 60) { | ||
+ | neopix5.setPixelColor(7, | ||
+ | } else if (level < 60) { | ||
+ | neopix5.setPixelColor(7, | ||
+ | } | ||
+ | | ||
+ | if (level >= 50) { | ||
+ | neopix5.setPixelColor(6, | ||
+ | } else if (level < 50) { | ||
+ | neopix5.setPixelColor(6, | ||
+ | } | ||
+ | | ||
+ | if (level >= 40) { | ||
+ | neopix5.setPixelColor(5, | ||
+ | } else if (level < 40) { | ||
+ | neopix5.setPixelColor(5, | ||
+ | } | ||
+ | | ||
+ | if (level >= 30) { | ||
+ | neopix5.setPixelColor(4, | ||
+ | } else if (level < 30) { | ||
+ | neopix5.setPixelColor(4, | ||
+ | } | ||
+ | | ||
+ | if (level >= 20) { | ||
+ | neopix5.setPixelColor(3, | ||
+ | } else if (level < 20) { | ||
+ | neopix5.setPixelColor(3, | ||
+ | } | ||
+ | | ||
+ | if (level >= 10) { | ||
+ | neopix5.setPixelColor(2, | ||
+ | } else if (level <10) { | ||
+ | neopix5.setPixelColor(2, | ||
+ | } | ||
+ | | ||
+ | neopix5.show(); | ||
+ | | ||
+ | | ||
+ | delay(1000); | ||
+ | } | ||
+ | </ | ||
Tags: #Arduino # | Tags: #Arduino # |
bewaesserungsautomat/programmversion_0.2_alpha.1464349240.txt.gz · Zuletzt geändert: 18.05.2023 09:06 (Externe Bearbeitung)