Hallo
Nach vielen Arbeitsstunden bin ich mit meinem Nest weiter gekommen. Habe es jetzt mit Gewicht gemacht und funktioniert besser als gedacht. Da sich jetzt die Möglichkeit ergab eine Eiererkennung mit einzubauen bin ich am code schreiben. Ziel ist es über eine Segmentanzeige außen am Hühnerstall anzeigen zu lassen wie viele Eier gelegt wurden. Nun habe ich das Problem, das ich die Anzeige erst nach 10 Sekunden umschalten will, wenn ein Ei dazu kommt. Möchte es gern ohne Delay lösen aber komme zu keinem Ergebnis. Gibt es eine eine art 10 Sekunden Timer den ich nach der if abfrage einsetzen kann? Im jetzigen Code schaltet die Anzeige immer zwischen 0-10 Sekunden weil die Zeit erst alle 10 Sekunden zurück gesetzt wird. Hier mal der Code
#include "HX711.h"
unsigned long umschaltZeit;
unsigned long taraZeit;
const int WAAGE_1_DOUT_PIN = 5; // DT Pin des Hx711
const int WAAGE_1_SCK_PIN = 6; // SCK Pin des Hx711
int eiImNest = 4;
int tara = 3;
int huhnImNest = 2;
float messwert1status;
float gewichtnest;
int segment1 = 7;
int segment2= 8;
int segment3 = 9;
int segment4 = 10;
int segment5 = 11;
int segment6 = 12;
int segment7 = 13;
int segment8 = A0;
HX711 waage1;
void setup() {
Serial.begin(9600);
waage1.begin(WAAGE_1_DOUT_PIN, WAAGE_1_SCK_PIN);
pinMode(eiImNest, OUTPUT);
pinMode(huhnImNest, OUTPUT);
pinMode(tara, INPUT_PULLUP);
pinMode(segment1, OUTPUT);
pinMode(segment2, OUTPUT);
pinMode(segment3, OUTPUT);
pinMode(segment4, OUTPUT);
pinMode(segment5, OUTPUT);
pinMode(segment6, OUTPUT);
pinMode(segment7, OUTPUT);
pinMode(segment8, OUTPUT);
gewichtnest = messwert1status;
taraZeit = millis();
}
void loop() {
if (digitalRead(tara) == LOW) { // Wenn das Nest geöffnent wird, wird das Gewicht wieder auf Null gestellt wenn kein Huhn im Nest
gewichtnest = messwert1status;
}
if (waage1.is_ready()) {
float messwert1 = ((waage1.read() * (-0.0001)) - 36) * 0.409; // Gewicht vom Nest wird gemessen
Serial.print("Gewicht Legenest: ");
Serial.println(messwert1, 2);
messwert1status = ((waage1.read() * (-0.0001)) - 36) * 0.409; //Gewicht wird gespeichert
Serial.print("Gewichtnest: ");
Serial.println(messwert1status - gewichtnest, 2);
}
else {
Serial.println("HX711 Messstelle 1 nicht verbunden.");
}
if ((messwert1status - gewichtnest > 10.00) && (millis() - taraZeit > 1000)){ // tara nicht betätigt Null blinkt
digitalWrite(segment1, LOW);
digitalWrite(segment2, LOW);
digitalWrite(segment3, LOW);
digitalWrite(segment4, LOW);
digitalWrite(segment5, LOW);
digitalWrite(segment6, LOW);
digitalWrite(segment7, LOW);
digitalWrite(segment8, HIGH);
taraZeit = millis();
}
if ((messwert1status - gewichtnest > 10.00) && (millis() - taraZeit > 500)){ //tara nicht betätigt Null blinkt
digitalWrite(segment1, HIGH);
digitalWrite(segment2, HIGH);
digitalWrite(segment3, HIGH);
digitalWrite(segment4, HIGH);
digitalWrite(segment5, HIGH);
digitalWrite(segment6, HIGH);
digitalWrite(segment7, LOW);
digitalWrite(segment8, LOW);
}
// null Eier im Nest
if ((messwert1status - gewichtnest <= 0.04)&& (millis() - umschaltZeit > 10000)){
digitalWrite(segment1, LOW);
digitalWrite(segment2, LOW);
digitalWrite(segment3, LOW);
digitalWrite(segment4, LOW);
digitalWrite(segment5, LOW);
digitalWrite(segment6, LOW);
digitalWrite(segment7, LOW);
digitalWrite(segment8, LOW);
umschaltZeit = millis();
}
// ein Ei im Nest
if ((messwert1status - gewichtnest > 0.05) && (messwert1status - gewichtnest <= 0.10) && (millis() - umschaltZeit > 10000)){
digitalWrite(segment1, LOW);
digitalWrite(segment2, HIGH);
digitalWrite(segment3, HIGH);
digitalWrite(segment4, LOW);
digitalWrite(segment5, LOW);
digitalWrite(segment6, LOW);
digitalWrite(segment7, LOW);
digitalWrite(segment8, LOW);
umschaltZeit = millis();
}
// zwei Eier im Nest
if ((messwert1status - gewichtnest > 0.10) && (messwert1status - gewichtnest <= 0.15) && (millis() - umschaltZeit > 10000)){
digitalWrite(segment1, HIGH);
digitalWrite(segment2, HIGH);
digitalWrite(segment3, LOW);
digitalWrite(segment4, HIGH);
digitalWrite(segment5, HIGH);
digitalWrite(segment6, LOW);
digitalWrite(segment7, HIGH);
digitalWrite(segment8, LOW);
umschaltZeit = millis();
}
// drei Eier im Nest
if ((messwert1status - gewichtnest > 0.15) && (messwert1status - gewichtnest <= 0.20) && (millis() - umschaltZeit > 10000)){
digitalWrite(segment1, HIGH);
digitalWrite(segment2, HIGH);
digitalWrite(segment3, HIGH);
digitalWrite(segment4, HIGH);
digitalWrite(segment5, LOW);
digitalWrite(segment6, LOW);
digitalWrite(segment7, HIGH);
digitalWrite(segment8, LOW);
umschaltZeit = millis();
}
// vier Eier im Nest
if ((messwert1status - gewichtnest > 0.20) && (messwert1status - gewichtnest <= 0.26) && (millis() - umschaltZeit > 10000)){
digitalWrite(segment1, LOW);
digitalWrite(segment2, HIGH);
digitalWrite(segment3, HIGH);
digitalWrite(segment4, LOW);
digitalWrite(segment5, LOW);
digitalWrite(segment6, HIGH);
digitalWrite(segment7, HIGH);
digitalWrite(segment8, LOW);
umschaltZeit = millis();
}
// fünf Eier im Nest
if ((messwert1status - gewichtnest > 0.26) && (messwert1status - gewichtnest <= 0.33) && (millis() - umschaltZeit > 10000)){
digitalWrite(segment1, HIGH);
digitalWrite(segment2, LOW);
digitalWrite(segment3, HIGH);
digitalWrite(segment4, HIGH);
digitalWrite(segment5, LOW);
digitalWrite(segment6, HIGH);
digitalWrite(segment7, HIGH);
digitalWrite(segment8, LOW);
umschaltZeit = millis();
}
if (messwert1status - gewichtnest > 0.5){ //Huhn im Nest
digitalWrite(huhnImNest, LOW);
}
if (messwert1status - gewichtnest <= 0.5){
digitalWrite(huhnImNest, HIGH);
}
}
Hat jemand einen Tipp für mich?