INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Fight the Fox
02.08.2014, 19:29
Beitrag #1
Big Grin Fight the Fox
Hallo,

ich habe mal wieder ein verständnisproblem Tongue

Ich habe für meine Tante einen Code geschrieben, um den Hühnerstall bei Bedarf und nach Zeit zu öffnen und zu schließen, der Fuchs geht um....

Ich habe hierfür eine DS1307, einen Motor zum hoch- / runterfahren der Klappe und zwei Taster für die manuelle Steuerung gewählt.

Weiterhin hatte ich gehofft, die Steuerung zum runterfahren mit einem switch zu regeln, hoch fährt die Klappe immer um die gleiche Zeit.

Nun sagt mir der Compiler alles is in Ordnung, nur in der Praxis.. funktioniert es irgendwie nicht.

Kann mir vlt jemand sagen wo der Fehler liegt, uu is auch mechanisch etwas nicht in Ordnung, aber ich weiss nunmal leider nicht, ob mein selbst gestalteter Code überhaupt richtig funktioniert...

Meinen Messungen nach funktionieren aber alle Einzelteile soweit...

Für Ideen wäre ich sehr dankbar, ihr werdet wohl bemerken, ich habs codetechnisch n icht so ganz drauf,...

Ich bin dankbar für alle Anregungen und Kritik Wink

Mfg , Hilgi



Code:
int hoch = 2;      // +5V für hochdrehen
int runter = 3;    // +5V für runterdrehen

int oben = 4;      // Taster oben, endpunkt
int unten = 5;     // Taster unten, endpunkt

int manh = 6;      // Taster hochdrehen, manuel
int manr = 7;      // Taster runterdrehen, manuel

int valo = 0;      // Variable für endpunkt oben
int valu = 0;      // Variable für endpunkt unten

int mh = 0;        // Variable für hochdrehen, manuel
int mr = 0;        // Variable für runterdrehen, manuel

int taster = 0;    // Variable für Taster auslesen/nicht auslesen

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

void setup ()
{

  pinMode(hoch, OUTPUT);
  pinMode(runter, OUTPUT);
  
  pinMode(oben, INPUT);
  pinMode(unten, INPUT);
  
  pinMode(manh, INPUT);
  pinMode(manr, INPUT);
  
  digitalWrite(hoch, LOW);
  digitalWrite(runter, LOW);
  
  Serial.begin(9600);
  Serial.println("Startup");

  Wire.begin();
  rtc.begin();

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // January 21, 2014 at 3am you would call:
     rtc.adjust(DateTime(2014, 8, 1, 20, 20, 0));
  }
}

void hinauf()
{
digitalWrite(hoch, HIGH);
delay(1000);
taster = HIGH;
}

void hinab()
{
digitalWrite(runter, HIGH);
delay(1000);
taster = HIGH;
}

void aus()
{
digitalWrite(hoch, LOW);
digitalWrite(runter, LOW);
taster = LOW;
delay(10);
}

void loop ()
{
    
    valo = digitalRead(oben);
    valu = digitalRead(unten);
    
    mh = digitalRead(manh);
    mr = digitalRead(manr);
    
    DateTime now = rtc.now();
    
//    Serial.print(now.year(), DEC);
//    Serial.print('/');
//    Serial.print(now.month(), DEC);
//    Serial.print('/');
//    Serial.print(now.day(), DEC);
//    Serial.print(' ');
//    Serial.print(now.hour(), DEC);
//    Serial.print(':');
//    Serial.print(now.minute(), DEC);
//    Serial.print(':');
//    Serial.print(now.second(), DEC);

    if ((mh == HIGH) && (valo == LOW))
    {
    hinauf();
    }
    
    if ((mr == HIGH) && (valu == LOW))
    {
    hinab();
    }
    
    if ((valo == HIGH) || (valu == HIGH))
    {
      if ((taster == HIGH))
      {
      aus();
      }
    }
    
    if ((now.hour() == 10) && (valo == LOW))
    {
    hinauf();
    }
    
    if (valu == LOW)
    {
        switch (now.month())
    {
        case 1:
        if (now.hour() == 18)
        {hinab();}
    break;
        case 2:
        if (now.hour() == 19)
        {hinab();}
    break;
        case 3:
        if (now.hour() == 20)
        {hinab();}
    break;
        case 4:
        if (now.hour() == 21)
        {hinab();}
    break;
        case 5:
        if (now.hour() == 22)
        {hinab();}
    break;
        case 6:
        if (now.hour() == 23)
        {hinab();}
    break;
        case 7:
        if (now.hour() == 23)
        {hinab();}
    break;
        case 8:
        if (now.hour() == 22)
        {hinab();}
    break;
        case 9:
        if (now.hour() == 21)
        {hinab();}
    break;
        case 10:
        if (now.hour() == 20)
        {hinab();}
    break;
        case 11:
        if (now.hour() == 19)
        {hinab();}
    break;
        case 12:
        if (now.hour() == 18)
        {hinab();}
    break;
    }
    }
    
}

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.08.2014, 19:41
Beitrag #2
RE: Fight the Fox
sieht hier niemand wenigstens n fehler im code? Tongue

ichh ab alles nochmal durchgeprüft ich komme einfach nicht drauf es muss wohl wirklich was mit der logik des codes zu tun haben Sad

kritisiert mich, findet den fehler bitte Big Grin
(wie oft hört man das schon Wink )

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.08.2014, 20:08
Beitrag #3
RE: Fight the Fox
Ich muss leider sagen, dass ich Dir nicht so ganz glaube, aber versuchen wir's mal.
Was genau funktioniert denn nicht?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.08.2014, 20:33
Beitrag #4
RE: Fight the Fox
Hallo Hilgi,

wenn man versuchen will den Code zu verstehen wären ein paar Infos über den Aufbau der Schaltung hilfreich.

Schaltplan vorhanden??
wenn ja bitte hier posten

wenn nicht,
wie sind die Taster angeschlossen?

gibt es Pulldown- oder Pullup-Widerstände an den Eingängen?

was schalten die Ausgänge? (Transistoren oder Relais)

gibt es eine hardwareseitige Verriegelung der beiden Laufrichtungen?

soll die Klappe beim drücken eines Tasters (manh/manr) bis in die Endlage laufen oder soll die Klappe nur laufen solange der Taster gedrückt ist.

wozu dienen die delay() in hinauf(), hinab() und aus() ?

was passiert wenn ein Huhn (oder der Fuchs) beim verfahren der Klappe eingeklemmt wird?

Viele Grüße
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.08.2014, 20:55
Beitrag #5
RE: Fight the Fox
Abgesehen von den berechtigten Fragen zur Hardware anbei mal ein PAP der Loop-Schleife. Hilft ja vielleicht auch weiter.
Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.12.2014, 21:37
Beitrag #6
RE: Fight the Fox
Hi,
zwar keine direkte Antwort zu Deiner Frage aber der Link zu einer funktionierenden Lösung:
http://giveback.danielmenzel.de/?p=70
LG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste