Benutzer-Werkzeuge

Webseiten-Werkzeuge


bewaesserungsautomat:programmversion_0.1_alpha

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
bewaesserungsautomat:programmversion_0.1_alpha [27.05.2016 13:07] – angelegt Frickelpietbewaesserungsautomat:programmversion_0.1_alpha [18.05.2023 12:15] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== Programmversion 0.1 alpha ====== +====== Bewässerungsautomat Programmversion 0.1 alpha ====== 
-Das Programm habe ich für meinen [[[[arduino:bewaesserungsautomat|Arduino Bewässerungsautomat]] geschrieben. Das Programm lässt sich kompilieren, wurde aber nicht getestet. Gegenüber der Programmversion 0.2 alpha werden normale LEDs angesteuert. (Bei [[Programmversion 0.2 alpha]] habe ich Neopixel eingebunden.) Das Programm bindet außerdem ein LCD ein. +<box 100% round red|**Achtung!**>Es liegt eine neuere Programmversion vor: [[bewaesserungsautomat:programmversion_0.2_alpha|Bewässerungsautomat Programmversion 0.2 alpha]]</box> 
 + 
 +Das Programm habe ich für meinen [[[[arduino:bewaesserungsautomat|Arduino Bewässerungsautomat]] geschrieben. Das Programm lässt sich kompilieren, wurde aber nicht getestet. So ungefähr sollte es jedoch funktionieren. 
 + 
 +Es liegt mittlerweile die [[Programmversion 0.2 alpha]] vor 
 + 
 +<code> 
 +// include the library code: 
 +#include <Wire.h> 
 +#include <Adafruit_RGBLCDShield.h> 
 +#include <utility/Adafruit_MCP23017.h> 
 + 
 +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, OUTPUT); 
 +  pinMode(ledPin2, OUTPUT); 
 +  pinMode(ledPin3, OUTPUT); 
 +  pinMode(ledPin4, OUTPUT); 
 +  pinMode(ledPin5, OUTPUT); 
 + 
 +  // 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, INPUT_PULLUP); 
 +  pinMode(hallPin2, INPUT_PULLUP); 
 +  pinMode(hallPin3, INPUT_PULLUP); 
 +  pinMode(hallPin4, INPUT_PULLUP); 
 + 
 +  // Initialisiere die Relais-Pins 
 +  pinMode(relPin1, OUTPUT); 
 +  pinMode(relPin2, OUTPUT); 
 +  pinMode(relPin3, OUTPUT); 
 +  pinMode(relPin4, OUTPUT); 
 + 
 +  // Initialisiert den Wasserstandsanzeiger  
 +   
 +   
 +  // Debugging output 
 +  Serial.begin(9600); 
 +   
 +  // Einrichten des LCD und Anzeige der Versionsnummer  
 +  lcd.begin(16, 2); 
 +  lcd.setBacklight(WHITE);       // Stellt die Farbe der Hintergrundbeleuchtung ein 
 +  lcd.setCursor(0, 0); 
 +  lcd.print("Autowasser");       // Zeigt den Programmname an 
 +  lcd.setCursor(0, 1); 
 +  lcd.print("V 0.1 alpha");      // Zeigt eine Versionsnummer an 
 +   
 +  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, 0); 
 +  lcd.print("Wasserstand"); 
 +  lcd.setCursor(0, 1); 
 +    if(level < 100) lcd.print("100%"); 
 +    if(level < 90) lcd.print("90%"); 
 +    if(level < 80) lcd.print("80%"); 
 +    if(level < 70) lcd.print("7%"); 
 +    if(level < 60) lcd.print("60%"); 
 +    if(level < 50) lcd.print("50%"); 
 +    if(level < 40) lcd.print("40%"); 
 +    if(level < 30) lcd.print("30%"); 
 +    if(level < 20) lcd.print("20%"); 
 +    else{lcd.print("10%");}  
 + 
 +  // Ä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, LOW); 
 +  if(hall1 = HIGH) digitalWrite(relPin1, HIGH); 
 +  if(hall2 = LOW && level > 5 && digitalRead(relPin1) == HIGH && digitalRead(relPin3) == HIGH && digitalRead(relPin4) == HIGH) digitalWrite(relPin2, LOW); 
 +  if(hall2 = HIGH) digitalWrite(relPin2, HIGH); 
 +  if(hall3 = LOW && level > 5 && digitalRead(relPin1) == HIGH && digitalRead(relPin2) == HIGH && digitalRead(relPin4) == HIGH) digitalWrite(relPin3, LOW); 
 +  if(hall3 = HIGH) digitalWrite(relPin3, HIGH); 
 +  if(hall4 = LOW && level > 5 && digitalRead(relPin1) == HIGH && digitalRead(relPin2) == HIGH && digitalRead(relPin3) == HIGH) digitalWrite(relPin4, LOW); 
 +  if(hall4 = HIGH) digitalWrite(relPin4, HIGH); 
 + 
 +  delay(1000);                    // 1 Sek Pause 
 +
 +</code> 
 +Tags: #Arduino #Bewässerungsautomat #Code
bewaesserungsautomat/programmversion_0.1_alpha.1464347273.txt.gz · Zuletzt geändert: 18.05.2023 09:06 (Externe Bearbeitung)