Hallo zusammen,
ich schreibe hier über mein erstes Arduinoprojekt überhaupt also wenn etwas nicht so sein sollte wie üblich beißt mir nicht den Kopf ab Ich habe selbst grundlegende Erfahrung in Programmierung mit C++ und R und dachte mir ich mache mich mit einem überarbeiteten Code für meine Bewässerung selbstständig.
Zum Projekt: Ich will mein Gewächshaus im Garten ohne Strom mittels Solarzelle, Akku und Regler betreiben. Ich verwende hierzu eine Pumpe aus dem Wohnmobilbereich, mit der ich eine 1/2" Ringleitung mit drehenden Sprinklern betreibe. Vllt erweitere ich das System auch noch auf ein Beet aber erstmal zu meinem Problem.
Zu Beginn lief auch alles ganz ok die Ansteuerung der Pumpe erfolgt mittels Arduino Nano Nachbau mit ATmega 328P welcher Daten von einem mit Urethan beschichteten Capacitiven Soil v1.2 Sensor erhält und mittels "Timer" ein ständiges bewässern wenn die Feuchtigkeit unter einen bestimmten Grenzwert fällt.
Den Timer habe ich in der Schleife eingebaut wie man später in meinem Code sehen kann.
Das Problem schon zu Beginn war, dass ich den Arduino zusätzlich zum Strom vom Spannungswandler LM 2596s welchen ich in meinem Projekt verwendet habe, mit dem USB Anschluss an den Laderegler anschließen musste, da mein Code sonst nicht vernünftig lief.
Habe ein bisschen nachgelesen und das mag vllt. an dem "niedrigen" Eingangsstrom am Arduino gelegen haben. Leider ist mir in der Elektronik etwas kaputt gegangen weswegen ich das Projekt nochmal neu aufgebaut habe. Diesmal versorgt der Spannungswandler nur das Display den Feuchtesensor und das Relais mit 5V und der Arduino läuft über usb am neuen Spannungswandler.
Leider habe ich in der Zwischenzeit am Code gebastelt, da ich Probleme mit dem Feuchtesensor hatte und das System solange so umgestellt hab das es nur über den Timer lief.
Mein Problem bei der ganzen Sache ist aber nun folgendes:
Der Arduino bewässert das Gewächshaus gar nicht mehr. Wenn ich ihm Strom aus beiden Quellen gebe (usb+Spannungswandler) schaltet das Relais nach dem starten und ein paar Sekunden direkt ab. Aber auch nicht wieder an. Folglich verdursten die Pflanzen. Wenn ich den Arduino nur über eine Quelle Speise läuft die Pumpe dauerhaft und zieht meine Tonne trocken was aber auch nicht so sein sollte wenn man sich den Code durchliest.
Ich habe die Befürchtung das ich am Code etwas verändert habe auf das ich jetzt aufs verrecken nicht komme ich stehe quasi wie der Ochs vorm Berg.
Daher dachte ich es wäre vielleicht hilfreich wenn einer von euch Experten sich meine Konstruktion mal ansieht wenn ihr Zeit und Lust habt
Hier mal eine Übersicht über meine Konstruktion bzw im Anhang:

Und hier mein Sketch:
int sensor_pin = A1;
int output_value;
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
unsigned long startMillis;
unsigned long LONG_DELAY_MS = 43200000; //43200000; 12h // 28.800.000; 8h Pause
unsigned int WATERING_TIME = 480000; //480000; 8min //5 Minuten gießen 300000
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
pinMode(7, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.setTextColor(WHITE);
display.setCursor(5, 10);
display.setTextSize(2);
display.println("Startet");
display.display();
delay(5000);
display.clearDisplay();
}
void loop() {
output_value = analogRead(sensor_pin);
output_value = map(output_value, 860, 20, 0, 420);
display.setCursor(15, 0);
display.setTextSize(1);
display.println("Giessomat");
display.setCursor(50, 15);
display.setTextSize(2);
display.print(output_value);
display.println(" % ");
display.display();
delay(1000);
display.clearDisplay();
if (output_value <50 && (millis()- startMillis) > LONG_DELAY_MS)
{
digitalWrite(7, LOW);
delay(WATERING_TIME);
startMillis = millis();
}
else
{
digitalWrite(7, HIGH); //
}
}
Edit: Danke an Tommy56 und Ja 7 ist der D7 Pin für das Relais