Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 30

Thema: Endwicklung Stallsteuerung oder - Hühnerstall Stufe 2

  1. #11

    Registriert seit
    20.11.2011
    Ort
    Goslar
    Beiträge
    73
    Themenstarter
    Zitat Zitat von GGK Beitrag anzeigen
    Kann man nicht auf Endschalter verzichten und stattdessen dem Motor eine Einschaltzeit vorgeben?
    Hatte ich auch schon überlegt, aber was ist wenn: Der Motor vieleicht einen Tropfen Öl nötig hätte, die Batterien zusätzlich nicht mehr voll sind und es vieleicht Winter ist?
    Dann dürfte sich die Klappe sicher nicht mehr vollständig öffnen. Der arme Hahn!!
    Meine allererste Idee war: Statt Endschalter nur den Motorstrom überwachen.
    Sollte für die Aufwärtsbewegung auf jeden Fall gehen.
    Klappe ist am Anschlag - der Motorstrom geht linear mit der Erhöhung des Drehmomentes nach oben - passt, da ein großer Unterschied zum "Normalbetrieb" vorhanden ist.
    Aber in der Abwärtsbewegung ist der Unterschied nicht so gravierend anders wenn der Schieber den Boden berührt.
    Hier verhält es sich wie folgt:
    In der normalen Abwärtsbewegung ist der Motorstrom etwas kleiner als beim hochfahren, da das Gewicht des Schiebers mit nach unten zieht. Sobald der Schieber den Boden berührt (oder auch ein Huhn) erhöht sich der Strom minimal da das Gewicht des Schiebers nicht mehr den Motor endlastet. Der Unterschied ist nur gering.
    Geht vieleicht trotzdem? Ist aber nicht soo sicher.
    Fazit: Auf den oberen Endschalter könnte man verzichten da man über eine Überwachung des Motorstroms eigentlich nicht drum herrum kommt (sollte mal was hapern). Allerdings kosten diese Reedschalter (Suchbegriff "Reedkontakt, Fensterkontakt, Alarmkontakt usw.") ja nicht die Welt und Pins sind genügend vorhanden.

  2. #12
    Avatar von GGK
    Registriert seit
    25.09.2011
    Ort
    Ihlow
    PLZ
    26632
    Land
    Niedersachsen
    Beiträge
    206
    Was haste denn jetzt an Hardware benutzt?
    Nur den Arduino und das L293 Modul?
    Denn müsste man ja mit 50€ locker hinkommen für die komplette Steuerung?
    Arduino + L293 gibt ja wohl günstig bei Ihhhbäääh oder?
    1,2 Zwerg Niederrheiner ; 0,1 Hybrid Mix ; 0,1 Zwerg New Hamshire
    -----------------------------Hühnerstallbau-----------------------------
    http://www.file-upload.net/download-10372408/H--hnerstallbau.pdf.html

  3. #13
    Avatar von GGK
    Registriert seit
    25.09.2011
    Ort
    Ihlow
    PLZ
    26632
    Land
    Niedersachsen
    Beiträge
    206
    Hab diese zb. gefunden
    Arduino
    Uhr Modul wenn mans braucht
    L293 Motormodul
    1,2 Zwerg Niederrheiner ; 0,1 Hybrid Mix ; 0,1 Zwerg New Hamshire
    -----------------------------Hühnerstallbau-----------------------------
    http://www.file-upload.net/download-10372408/H--hnerstallbau.pdf.html

  4. #14

    Registriert seit
    20.11.2011
    Ort
    Goslar
    Beiträge
    73
    Themenstarter
    Noch ist meine Hardware eine Eigenkonstruktion - sollte sich aber Alles einfach an Arduino Hardware anpassen lassen.
    Der von Dir vorgeschlagene Arduino ist OK - als Uhrenmodul würde ich das weiter oben vorgeschlagene DS1307 Modul nehmen. Ich weiß nicht ob das DS3231 Modul ein ähnliches Protokoll nutzt.
    Das Motor Shield ist OK - aber hier wäre die Ansteuerung einfacher mit zB diesem Modul,
    oder auch DAS ist geeignet. Bei dem von Dir vorgeschlagenem Modul werden, um Pins zu sparen, sämmtliche Eingänge (ausser den PWM-Eingängen) über ein Schieberegister angesteuert - ist nicht schlimm aber halt etwas aufwendiger.

    Hatte Heute keine Lust auf Hardware und habe deshalb ein bischen mit der Software rumgespielt.
    Hinzugekommen ist das LCD Modul mit Text und Symbol Ausgabe.
    Hier ist das Ergebniss zu sehen - Habe keine Ahnung wer da im Hintergrund rumschnauft?

    Und noch ein paar Bilder
    K1024_Aufbau Steuerung.JPG
    K1024_detail.JPG
    K1024_Motor.JPG
    Sieht viel komplizierter aus als es ist!
    Ist bedingt durch die universelle Hardware - -
    Code:
    'Stallsteuerung die Erste
    
    'Getriebemotor an L293 Modul
    'Endschalter als Reedkontackte ausgeführt
    'LCD 1602
    
    $regfile = "m32def.dat"
    $crystal = 12000000
    
    
    Dim A As Byte
    Dim B As Byte
    
    'Taster an PB1
    Taster Alias Pinb.1
    Config Taster = Input
    Portb.1 = 1                                                 'PullUp-Widerstand einschalten
    'Endschalter Unten an PC2
    Endschalter_u Alias Pinc.2
    Config Endschalter_u = Input
    Portc.2 = 1                                                 'PullUp-Widerstand einschalten
    'Endschalter Oben an PC1
    Endschalter_o Alias Pinc.1
    Config Endschalter_u = Input
    Portc.1 = 1                                                 'PullUp-Widerstand einschalten
    'Hintergrundbeleuchtung an PD4
    Hintergrundbeleuchtung Alias Portd.4
    Config Portd.4 = Output
    'Motor an PC3
    Motor_ein Alias Portc.3
    Config Portc.3 = Output
    'Motor Richtung an PC4 / low ist hoch - high ist runter
    Motor_richtung Alias Portc.4
    Config Portc.4 = Output
    
    Led Alias Portb.0
    Config Portb.0 = Output
    
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    Start Adc
    
    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.5 , Rs = Portd.7
    Config Lcd = 16x2
    Deflcdchar 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 17
    Deflcdchar 2 , 31 , 31 , 17 , 17 , 17 , 17 , 17 , 17
    Deflcdchar 3 , 31 , 31 , 31 , 17 , 17 , 17 , 17 , 17
    Deflcdchar 4 , 31 , 31 , 31 , 31 , 17 , 17 , 17 , 17
    Deflcdchar 5 , 31 , 31 , 31 , 31 , 31 , 17 , 17 , 17
    Deflcdchar 6 , 31 , 31 , 31 , 31 , 31 , 31 , 17 , 17
    Deflcdchar 7 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 17
    'Lcd Chr(255)
    Cls
    Cursor Off
    Hintergrundbeleuchtung = 1
    
    
    Lcd "Stallsteuerung"
    Locate 2 , 1
    Lcd "Vers. 0.1"
    Wait 4
    Cls
    
    Do
       Einsprung1:
          Waitms 500
          If Taster = 0 Then Goto Klappe_fahren
          Led = 1
          A = A + 1
          If A >= 2 Then Led = 0
          If A >= 10 Then
             A = 0
          End If
          If Endschalter_u = 0 Then
             Locate 1 , 1
             Lcd "Klappe"
             Locate 2 , 1
             Lcd "geschlossen"
             Locate 2 , 15
             Lcd Chr(255)
          End If
          If Endschalter_o = 0 Then
             Locate 1 , 1
             Lcd "Klappe"
             Locate 2 , 1
             Lcd "offen      "
             Locate 2 , 15
             Lcd Chr(1)
          End If
    Loop
    
    Klappe_fahren:
       If Endschalter_u = 0 Then
          Motor_richtung = 0
          Goto Hoch
       End If
       If Endschalter_o = 0 Then
          Motor_richtung = 1
          Goto Runter
       End If
       Goto Fahren
    
    Einsprung2:
       Toggle Motor_richtung
       Led = 0
       Motor_ein = 0
       Goto Einsprung1
    
    Hoch:
       Locate 2 , 1
       Lcd Chr(239)
       Lcd "ffnet     "
       Led = 1
       Motor_ein = 1
       Waitms 500
       If Taster = 0 Then Goto Einsprung2
       If Endschalter_o = 0 Then Goto Einsprung2
       Select Case B
          Case 2 : Gosub Klappe1
          Case 3 : Gosub Klappe2
          Case 4 : Gosub Klappe3
          Case 5 : Gosub Klappe4
          Case 6 : Gosub Klappe5
          Case 7 : Gosub Klappe6
          Case 8 : Gosub Klappe7
          Case 9 : Gosub Klappe8
       End Select
       If B < 2 Then B = 10
       B = B - 1
       Goto Hoch
    
    Runter:
       Locate 2 , 1
       Lcd "schlie"
       Lcd Chr(226)
       Lcd "t  "
       Led = 1
       Motor_ein = 1
       Waitms 500
       If Taster = 0 Then Goto Einsprung2
       If Endschalter_u = 0 Then Goto Nachlauf1
    
       Select Case B
          Case 1 : Gosub Klappe1
          Case 2 : Gosub Klappe2
          Case 3 : Gosub Klappe3
          Case 4 : Gosub Klappe4
          Case 5 : Gosub Klappe5
          Case 6 : Gosub Klappe6
          Case 7 : Gosub Klappe7
          Case 8 : Gosub Klappe8
       End Select
       B = B + 1
       If B > 8 Then B = 1
    
       Goto Runter
    
    Fahren:
       If Motor_richtung = 1 Then
          Goto Runter
       Else
          Goto Hoch
       End If
    
    Nachlauf1:
       Waitms 2500
       Goto Einsprung2
    
    Klappe1:
       Locate 2 , 15
       Lcd Chr(1)
    Return
    Klappe2:
       Locate 2 , 15
       Lcd Chr(2)
    Return
    Klappe3:
       Locate 2 , 15
       Lcd Chr(3)
    Return
    Klappe4:
       Locate 2 , 15
       Lcd Chr(4)
    Return
    Klappe5:
       Locate 2 , 15
       Lcd Chr(5)
    Return
    Klappe6:
       Locate 2 , 15
       Lcd Chr(6)
    Return
    Klappe7:
       Locate 2 , 15
       Lcd Chr(7)
    Return
    Klappe8:
       Locate 2 , 15
       Lcd Chr(255)
    Return
    
    End
    Geändert von dussel (25.03.2014 um 04:08 Uhr)

  5. #15
    Gast
    Registriert seit
    01.01.2011
    Beiträge
    2.516
    Wenn deine Klappe in der Realität auch solche Geräusche macht brauchst du kein Display das dir anzeigt dass sie gerade schließt,das hören sogar die Nachbarn,und deine Hühner werden jedes mal wenn die Klappe öffnet oder schließt die Panik bekommen - der Vorteil ist dabei falls der Fuchs in der Nähe der Klappe ist wird er durch den Lärm in den Wald flüchten.
    Was du da baust ist ja eine nette Spielerei,aber ob sich der Aufwand in der Praxis lohnt möchte ich hier einmal
    bezweifeln,da gibt es Lösungen mit weniger Bauteilen und einfacherer Programmierung.

  6. #16

    Registriert seit
    20.11.2011
    Ort
    Goslar
    Beiträge
    73
    Themenstarter

    hast Du Alles gelesen?
    Augenscheinlich nicht!
    Einer der ersten meiner Sätze: "Vieleicht gleich zu Anfang: Die diversen Klappenöffner, welche der Handel bietet sind ausgereift und sicher nicht überteuert, somit genau das Richtige für die Meisten!
    Dies Projekt richtet sich also nicht an die Spar-, sondern an die Bastelfüchse, wie mich."

    ICH kann das Teilprojekt "Klappenöffner" mit einem Getriebemotor, einem Attiny13, einem L293 und ganz wenig (billiges) Hühnerfutter realisieren.
    Ja, tatsächlich "Hühnerfutter" - so nennt der Elektroniker Widerstände, Kondensatoren - halt Alles was so an Kleinkram auf einer Platine ist.
    DIE BRÜCKE ZUM HÜHNERHALTER IST GESCHLAGEN!
    Um aber auf den Anfang des letzten Satzes zurück zu kommen - Ich -
    aber mein Anliegen ist es einen Nachbau ohne großes löten zu ermöglichen. Ob das am Ende klappt oder finanziell einen Sinn gibt - keine Ahnung??
    Wo ich Dir uneingeschränkt recht gebe: Mein Programmierstiel ist schrott! Allerdings bekomme ich trotzdem meine Projekte zu laufen
    Geändert von dussel (25.03.2014 um 15:10 Uhr)

  7. #17
    Avatar von GGK
    Registriert seit
    25.09.2011
    Ort
    Ihlow
    PLZ
    26632
    Land
    Niedersachsen
    Beiträge
    206
    Supi....schaut ja schon vielversprechend aus.
    Gefällt mir sehr gut das Ganze
    Für den Arduino gibts ja auch solche Funk-Module,vielleicht kann man die Klappe auch mit Funk öffnen^^
    Nur der Motor dreht für meinen Geschmack bissle zu langsam liegt wahrscheinlich daran weil meiner rubbeldiekatz unten ist guckst du hier
    1,2 Zwerg Niederrheiner ; 0,1 Hybrid Mix ; 0,1 Zwerg New Hamshire
    -----------------------------Hühnerstallbau-----------------------------
    http://www.file-upload.net/download-10372408/H--hnerstallbau.pdf.html

  8. #18
    Gast
    Registriert seit
    01.01.2011
    Beiträge
    2.516
    [QUOTE=dussel;1065325]
    hast Du Alles gelesen?
    Sorry,ich hab zwar alles gelesen,aber scheinbar etwas überlesen,in diesem Fall
    nehme ich alles zurück und behaupte das Gegenteil.
    Übrigens habe ich nicht deine Programmierarbeit kritisiert sondern den Aufwand.
    Ich werde den Thread selbstverständlich weiter verfolgen und am Ende hoffe ich auf eine
    "ehrliche" Kostenaufstellung deinerseits ( natürlich ohne Arbeitszeit - nur Material).
    Auf die Gefahr hin dass ich noch etwas überlesen habe (ich hab jetzt momentan nicht die Zeit nochmals alles durchzulesen) trotzdem noch eine Frage,ist diese Schaltung auch irgendwie
    Netzwerkfähig?

    Jedenfalls viel Spass noch

  9. #19

    Registriert seit
    20.11.2011
    Ort
    Goslar
    Beiträge
    73
    Themenstarter
    Danke! Werde ich haben - ich liebe basteln.
    Zu den Kosten vorab: Meine selbstentwickelten Projekte waren immer um einiges teurer als fertig Gekauftes.
    Kleines Beispiel: Brauche mal schnell ein ein bestimmten Transistor den ich nicht im Lager habe - renn los zur Elektronikapotheke - macht 8,99Euro - Danke! Bei Reichelt hätte ich 0,99 bezahlt, plus Versand macht 7,-. Das fertige Projekt hätte mich vieleicht im I-net 10,- gekostet, beim Chinesen für 2,99 zu bekommen.
    Was tut man nicht Alles um nach Tagen, Wochen, Monaten was Selbstgebasteltes (manchmal auch Unfertiges) im Regal stehen zu haben .
    Anders verhält es sich bei Nachbauten aus dem I-net - hier kann man manchmal schon ein wenig Geld sparen, da die benötigten Teile ja vor gegeben sind und nichts selber entwickelt werden muß - Zeit darf man allerdings nicht rechnen.

    @GGK
    Das ist die Turboklappe schlechthin! Selbst Rosi-Rennhuhn bekommt den Luftzug der abwärtsrasenden Klappe zu spüren!

    Gestern Nacht ging es wieder einen Schritt vorwärts -
    Der Lichtsensor ist fertig, funktioniert und ist für gut befunden.
    Allerdings passt jetzt das Programm vorn und hinten nicht mehr! Werde es komplett neu schreiben müssen.
    Ich denke das jetzt schon eine Art Menue angesagt ist, um später auch auf die Anderen Funktionen zugreifen zu können.
    Momentan denke ich das es Sechs Tasten werden (5 + Reset sind auf dem LCD Shield schon vorhanden). 5 werden über einen ADC Pin abgefragt - der Sechste soll an einen Interupt Pin um den Kontroller aus dem Schlaf zu wecken.
    Um Strom zu sparen wird der Kontroller in den Schlaf geschickt - aufwachen wird er dann alle 4-8 Sekunden um mal kurz (ein paar Millisekunden) zu schauen was so geht (Lichtsensor und RTC abfragen). Zusätzlich kann ich dann, durch drücken des Tasters am Interuptpin den Kontroller wecken und zur Arbeit bewegen.
    So der erste Plan für das neue Programm -

    Noch mal kurz zurück zum Lichtsensor -
    Hier ist nach LDR und Arduino zu suchen, evt. auch mal bei den Bildern schauen.
    Der komplette Sensor besteht eigentlich nur aus einem Spannungsteiler, gebildet aus dem LDR (lichtempfindlicher Widerstand) und einem Festwiderstand. Der Wert des Festwiderstandes ist erst mal ziemlich unkritisch - zum ersten testen macht man mit 10KOhm nichts verkehrt. Die Beiden Widerstände sind hintereinander angeordnet wie folgt: Gnd (Minus) - 10K Widerstand - Abgang zum ADC am Kontroller - LDR - +5V.
    Das Konstruckt dann in ein Marmeladenglas (egal was, Hauptsache ist gegen Wasser geschützt) und per Kabel an den Mikrokontroller - fertich.
    Durch den sich, bei unterschiedlichem Lichteinfall veränderndem Widerstandes des LDR, liegen dann unterschiedliche Spannungen zwischen 0 und 5 Volt am ADC an.

  10. #20

    Registriert seit
    20.11.2011
    Ort
    Goslar
    Beiträge
    73
    Themenstarter
    Langsam, gaaaaanz langsam nimmt das Programm Gestallt an. Hätte nicht gedacht das da soviel Zeit für ins Land geht.

    RTC läuft -
    Temperatursensor auch -
    Menuesteuerung wird langsam -
    Powerdown klappt -

    Jetzt muß die Motoransteuerung, der LDR und der Watchdogtimer noch bearbeitet werden.

    Wer Lust hat mal ein Blick ins Programm zu werfen?


    Das komplette Programm ist leider etwas zu lang - - -

    [CODE]
    Code:
    'Uhr mit RTC DS1307 und Temperaturfühler DS18B20
    'Stellentaster PortB.1
    '1Wiresensor an PortA.7
    
    $regfile = "m32def.dat"
    $crystal = 12000000                                         '12MHz Quarz
    $hwstack = 40
    $swstack = 32
    $framesize = 60
    
    Config Lcdpin = Pin , Db4 = PortB.3 , Db5 = PortB.2 , Db6 = PortB.1 , Db7 = PortB.0 , E = PortB.5 , Rs = PortB.7
    Config Lcd = 16 * 2
    Cls
    Cursor Off
    
    Deflcdchar 0 , 32 , 4 , 14 , 14 , 14 , 31 , 4 , 32
    Deflcdchar 1 , 32 , 4 , 14 , 10 , 10 , 31 , 4 , 32
    Cls
    
    Config PortB.4 = Output
    Hintergrundbeleuchtung Alias PortB.4
    
    Config PortC.7 = Output
    Kanal1 Alias PortC.7
    Kanal1 = 0
    
    Config PortC.6 = Input
    Portc.6 = 1
    Stellen_taste Alias Pinc.6
    
    'TASTER1 an PD2
    Taster1 Alias Pind.2
    Config Taster1 = Input
    Taster1 = 1       'PullUp-Widerstand einschalten
    
    'Wenn der Interrupt INT0 auftritt, dann springe zum Label On_int0
    On Int0 On_int0
    'Der Interrupt INT0 wird ausgelöst wenn der Pin PD2 gegen GND gezogen wird.
    Enable Interrupts  'Interrupts global einschalten
    
    'ADC für Tasten Auswertung und LDR
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    'Unterprogramm Tastenabfrage
    Declare Sub Tastenabfrage
    
    'OneWire Bus konfigurieren
    Config 1wire = Porta.7
    
    'I2C konfigurieren
    Config Sda = Portc.1
    Config Scl = Portc.0
    
    'Konstanten für RTC-Modul
    Const Ds1307_adresse = 208
    Const Ds1307_lese_adresse = 209
    I2cinit
    
    'Variablen für Tastenabfrage
    Dim ADC_Wert_Tasten as Word
    Dim Offen As Bit
    Dim Auswahl As Bit
    Dim Links As Bit
    Dim Runter As Bit
    Dim Hoch As Bit
    Dim Rechts As Bit
    
    Dim Schlafen as Word
    
    'Variablen für Menue
    Dim Untermenue as Byte
    Untermenue = 1
    dim Zaehler as  Byte
    
    
    Dim A As Byte
    Dim B As Byte
    B = 1
    Dim C As Byte
    C = 1
    Dim D As Byte
    D = 12
    Dim E As Byte
    E = 0
    Dim F As Byte
    F = 0
    Dim G As Byte
    G = 0
    Dim I As Byte
    Dim S As Byte
    S = 5
    Dim T As Byte
    T = 1
    Dim Q As Integer
    
    Dim Wecken As Byte
    Dim Wochentag As Byte
    Dim Tag As Byte
    Dim Monat As Byte
    Dim Jahr As Byte
    Dim Stunden As Byte
    Dim Minuten As Byte
    Dim Sekunden As Byte
    
    Dim E_wecken As Eram Byte
    Dim E_dummy As Eram Byte
    Dim Einschalt_stunde1 As Byte
    Dim E_einschalt_stunde1 As Eram Byte
    Dim Einschalt_minute1 As Byte
    Dim E_einschalt_minute1 As Eram Byte
    Dim Ausschalt_stunde1 As Byte
    Dim E_ausschalt_stunde1 As Eram Byte
    Dim Ausschalt_minute1 As Byte
    Dim E_ausschalt_minute1 As Eram Byte
    
    Einschalt_stunde1 = E_einschalt_stunde1
    Einschalt_minute1 = E_einschalt_minute1
    Ausschalt_stunde1 = E_ausschalt_stunde1
    Ausschalt_minute1 = E_ausschalt_minute1
    Wecken = E_wecken
    
    If Wecken > 1 Then
       Wecken = 0
    End If
    If Einschalt_stunde1 >= 25 Then
       Einschalt_stunde1 = 0
    End If
    If Einschalt_minute1 >= 61 Then
       Einschalt_minute1 = 0
    End If
    If Ausschalt_stunde1 >= 25 Then
       Ausschalt_stunde1 = 0
    End If
    If Ausschalt_minute1 >= 61 Then
       Ausschalt_minute1 = 0
    End If
    
    E_wecken = Wecken
    E_einschalt_stunde1 = Einschalt_stunde1
    E_einschalt_minute1 = Einschalt_minute1
    E_ausschalt_stunde1 = Ausschalt_stunde1
    E_ausschalt_minute1 = Ausschalt_minute1
    
    
    Dim Raus As Single
    Dim Ident(8) As Byte
    Dim Datenarry(9) As Byte
    
    Ident(1) = 1wsearchfirst()
    Waitms 300
    
    Hintergrundbeleuchtung = 1
    Cls
    Lcd "Stallsteuerung  "
    Locate 2 , 1
    Lcd "die Zweite      "
    Wait 4
    Cls
    For I = 0 To 8
       ADC_Wert_Tasten = Getadc(0)
       Gosub Tastenabfrage
       Lcd "zum Uhr stellen"
       Locate 2 , 1
       Lcd "Auswahl druecken"
       Lcd S
       If Auswahl = 1 Then Goto Stellen
       S = S - 1
       Wait 1
    
    Next I
    S = 0
    Goto Fertig
    
    
    Stellen:
       Cls
       Lcd "Uhr Stellen"
       Wait 2
       Cls
       Lcd "Wochentag "
       do
          ADC_Wert_Tasten = Getadc(0)
          Gosub Tastenabfrage
          Locate 1 , 11
          if T = 1 then LCD "Mo"
          if T = 2 then LCD "Di"
          if T = 3 then LCD "Mi"
          if T = 4 then LCD "Do"
          if T = 5 then LCD "Fr"
          if T = 6 then LCD "Sa"
          if T = 7 then LCD "So"
          Waitms 200
          If Hoch = 1 Then
             Gosub Formel1
          End If
          if Runter = 1 then
             gosub Formel101
          end if
       loop until Auswahl = 1
    
       Cls
       Lcd "Tag "
       wait 1
    
       do
          ADC_Wert_Tasten = Getadc(0)
          Gosub Tastenabfrage
          Locate 1 , 5
          Lcd B
          lcd " "
          Waitms 100
          If Hoch = 1 Then
             Gosub Formel2
          End If
          if Runter = 1 then
             gosub Formel202
          end if
       loop until Auswahl = 1
    
       Cls
       Lcd "Monat "
       wait 1
    
       do
          ADC_Wert_Tasten = Getadc(0)
          Gosub Tastenabfrage
          Locate 1 , 7
          Lcd C
          LCD " "
          Waitms 100
          If Hoch = 1 Then
             Gosub Formel3
          End If
          if Runter = 1 then
             gosub Formel303
          end if
       loop until Auswahl = 1
    
       Cls
       Lcd "Jahr "
       wait 1
    
       do
          ADC_Wert_Tasten = Getadc(0)
          Gosub Tastenabfrage
          Locate 1 , 6
          Lcd 20
          Lcd D
          Waitms 100
          If Hoch = 1 Then
             Gosub Formel4
          End If
          if Runter = 1 then
             gosub Formel404
          end if
       loop until Auswahl = 1
    
       Cls
       Lcd "Stunden "
       wait 1
    
       do
          ADC_Wert_Tasten = Getadc(0)
          Gosub Tastenabfrage
          Locate 1 , 9
          Lcd E
          LCD " "
          Waitms 100
          If Hoch = 1 Then
             Gosub Formel5
          End If
          if Runter = 1 then
             gosub Formel505
          end if
       loop until Auswahl = 1
    
       Cls
       Lcd "Minuten "
       wait 1
    
       do
          ADC_Wert_Tasten = Getadc(0)
          Gosub Tastenabfrage
          Locate 1 , 9
          Lcd F
          LCD " "
          Waitms 100
          If Hoch = 1 Then
             Gosub Formel6
          End If
          if Runter = 1 then
             gosub Formel606
          end if
       loop until Auswahl = 1
    
       Cls
       Lcd "Sekunden "
       wait 1
    
       do
          ADC_Wert_Tasten = Getadc(0)
          Gosub Tastenabfrage
          Locate 1 , 10
          Lcd G
          LCD " "
          Waitms 100
          If Hoch = 1 Then
             Gosub Formel7
          End If
          if Runter = 1 then
             gosub Formel707
          end if
       loop until Auswahl = 1
    
    
       Wochentag = T
       Tag = B
       Monat = C
       Jahr = D
       Stunden = E
       Minuten = F
       Sekunden = G
    
       Tag = Makebcd(tag)
       Monat = Makebcd(monat)
       Jahr = Makebcd(jahr)
       I2cstart
       I2cwbyte Ds1307_adresse
       I2cwbyte 3
       I2cwbyte Wochentag
       I2cwbyte Tag
       I2cwbyte Monat
       I2cwbyte Jahr
       I2cstop
    
       Sekunden = Makebcd(sekunden)
       Minuten = Makebcd(minuten)
       Stunden = Makebcd(stunden)
       I2cstart
       I2cwbyte Ds1307_adresse
       I2cwbyte 0
       I2cwbyte Sekunden
       I2cwbyte Minuten
       I2cwbyte Stunden
       I2cstop
    
    
    
       'Einsprung
    Fertig:
       Cls
       'Hauptschleife
       Do
          If Taster1 = 0 then goto Hochzaehlen
          ADC_Wert_Tasten = Getadc(0)     'ADC in = PC.0
          Gosub Tastenabfrage
    
          if Schlafen >= 510 then
             cls
             Locate 1 , 1
             LCD "Schlafmodus"
             wait 2
             enable INT0  'INT0 wieder einschalten
             display off   'Display abschalten
             Hintergrundbeleuchtung = 0 'Hintergrundbeleuchtung abschalten
             config powermode = powerdown  'schlafengehen
          end if
    
          I2cstart
          I2cwbyte Ds1307_adresse
          I2cwbyte 0
          I2cstop
    
          I2cstart
          I2cwbyte Ds1307_lese_adresse
          I2crbyte Sekunden , Ack
          I2crbyte Minuten , Ack
          I2crbyte Stunden , Ack
          I2crbyte Wochentag , Ack
          I2crbyte Tag , Ack
          I2crbyte Monat , Ack
          I2crbyte Jahr , Nack
          I2cstop
    
          Locate 1 , 1
          Wochentag = Makedec(wochentag)
          Select Case Wochentag
             Case 1 : Lcd "Mo  "
             Case 2 : Lcd "Di  "
             Case 3 : Lcd "Mi  "
             Case 4 : Lcd "Do  "
             Case 5 : Lcd "Fr  "
             Case 6 : Lcd "Sa  "
             Case 7 : Lcd "So  "
          End Select
    
          Locate 1 , 5
          Lcd Bcd(stunden) ; ":" ; Bcd(minuten) ; ":" ; Bcd(sekunden) ; "  "
    
          If Wecken = 1 Then
             Locate 1 , 16
             Lcd Chr(1)
          End If
    
          Stunden = Makedec(stunden)
          Minuten = Makedec(minuten)
          If Einschalt_stunde1 = Stunden And Einschalt_minute1 = Minuten And Wochentag <= 7 And Wecken = 1 Then
             Kanal1 = 1
             Locate 2 , 16
             Lcd Chr(0)
          End If
          If Ausschalt_stunde1 = Stunden And Ausschalt_minute1 = Minuten And Wecken = 1 Then
             Kanal1 = 0
             Locate 2 , 15
             Lcd "  "
          End If
    
          Waitms 50
          If Stellen_taste = 0 Then
             Goto Weckzeit_stellen
          End If
          Q = Q + 1
          If Q = 50 Then Gosub Temperatur_einlesen
          If Q = 100 Then Gosub Temperatur_einlesen
          If Q = 150 Then Gosub Temperatur_einlesen
          If Q = 200 Then Gosub Temperatur_einlesen
          If Q = 250 Then Gosub Temperatur_einlesen
          If Q = 251 Then Gosub Datum
          If Q = 252 Then
             Q = 0
          End If
          Schlafen = Schlafen + 1
    
       Loop
    
    
    
       End
    
    
    Menue:
       Zaehler = 0
       Cls
       LCD "Menue"
       wait 3
       cls
       do
          Select case Untermenue
             case 1 : locate 1 , 1 : LCD "Uhr stellen     " : locate 2 , 1 : LCD "Klappensteurung "
             case 2 : locate 1 , 1 : LCD "Klappensteurung " : Locate 2 , 1 : LCD "Lichtsteuerung  "
             case 3 : locate 1 , 1 : LCD "Lichtsteuerung  " : locate 2 , 1 : LCD "Temp-steuerung  "
             case 3 : locate 1 , 1 : LCD "Temp-steuerung  " : locate 2 , 1 : LCD "Feuchtesteuerung"
             case 4 : locate 1 , 1 : LCD "Feuchtesteuerung" : locate 2 , 1 : LCD "Zurück          "
             case 5 : locate 1 , 1 : LCD "Zurück          " : locate 2 , 1 : LCD "Uhr stellen     "
          end  SELECT
          ADC_Wert_Tasten = Getadc(0)
          Gosub Tastenabfrage
          If Hoch = 1 then Untermenue = Untermenue + 1
          if Runter = 1 then Untermenue = Untermenue - 1
          If Untermenue > 5 then Untermenue = 1
          If Untermenue < 1 then Untermenue = 5
          if Auswahl = 1 then goto Untermenue_weiter
          waitms 200
       loop
    
    
    Untermenue_weiter:
       Select case Untermenue
          case 1 : goto STELLEN
          case 2 : goto STELLEN
          case 3 : goto STELLEN
          case 4 : goto STELLEN
          case 5 : goto FERTIG
       end select
    
    
    
    Temperatur_einlesen:
       Gosub Lesen                                                ' "Convert ALL T on the 1w-bus"
       'if you use 2-wire, could be reduced to 200us
       1wverify Ident(1)                                         'Issues the "Match ROM "
       Locate 1 , 1
       If Err = 1 Then
          Lcd "ID-Nicht gefunden "                                'Err = 1 if something is wrong
       Elseif Err = 0 Then
          Waitms 50                                               'Überspringe ROM
          1wreset
          1wwrite &HCC                                            'lcd " Sensor found"
          1wwrite &HBE
          Datenarry(1) = 1wread(9)                                'read bytes into array
          If Datenarry(9) = Crc8(datenarry(1) , 8) Then
             Gosub Wandler                                        'Dg = Decigrades(sc(9))
          End If
       End If
       Locate 2 , 1
       Lcd "Temp: " ; Fusing(raus , "#.#") ; Chr(223) ; "C   "
       Waitms 50
    Return
    
    Datum:
       Locate 1 , 4
       Lcd Bcd(tag) ; "." ; Bcd(monat) ; ".20" ; Bcd(jahr)
       Wait 4
    Return
    
    Formel1:
       incr T
       If T = 8 Then T = 1
       Waitms 500
    return
    
    Formel101:
       decr T
       If T = 0 Then T = 7
       Waitms 500
    return
    
    Formel2:
       incr B
       If B => 32 Then B = 1
          Waitms 500
          return
    
          Formel202:
             decr B
             if B <= 0 then B = 31
             waitms 500
          return
    
          Formel3:
             incr C
             If C => 13 Then C = 1
                Waitms 500
                return
    
                Formel303:
                   decr C
                   if C <= 0 then C = 12
                   waitms 500
                return
    
                Formel4:
                   incr D
                   If D => 50 Then D = 12
                      Waitms 300
                      return
    
                      Formel404:
                         decr D
                         if D <= 11 then D = 50
                         waitms 500
                      return
    
                      Formel5:
                         incr E
                         If E => 24 Then E = 0
                            Waitms 300
                            return
    
                            Formel505:
                               decr E
                               if E <= 0 then E = 23
                               waitms 500
                            return
    
                            Formel6:
                               incr F
                               If F => 60 Then F = 0
                                  Waitms 300
                                  return
    
                                  Formel606:
                                     decr F
                                     if F <= 0 then F = 59
                                     waitms 500
                                  return
    
                                  Formel7:
                                     incr G
                                     If G => 60 Then G = 0
                                        Waitms 300
                                        return
    
                                        Formel707:
                                           decr G
                                           if G <= 0 then G = 59
                                           waitms 500
                                        return
    
                                        Formel8:
                                           Einschalt_stunde1 = Einschalt_stunde1 + 1
                                           If Einschalt_stunde1 = 24 Then
                                              Locate 1 , 16
                                              Lcd " "
                                              Einschalt_stunde1 = 0
                                           End If
                                           Locate 1 , 15
                                           Lcd Einschalt_stunde1
                                           Waitms 300
                                           Goto Sprung8
    
                                        Formel9:
                                           Einschalt_minute1 = Einschalt_minute1 + 1
                                           If Einschalt_minute1 = 60 Then
                                              Locate 1 , 16
                                              Lcd " "
                                              Einschalt_minute1 = 1
                                           End If
                                           Locate 1 , 15
                                           Lcd Einschalt_minute1
                                           Waitms 200
                                           Goto Sprung9
    
                                        Formel10:
                                           Ausschalt_stunde1 = Ausschalt_stunde1 + 1
                                           If Ausschalt_stunde1 = 24 Then
                                              Locate 1 , 16
                                              Lcd " "
                                              Ausschalt_stunde1 = 0
                                           End If
                                           Locate 1 , 15
                                           Lcd Ausschalt_stunde1
                                           Waitms 300
                                           Goto Sprung10
    
                                        Formel11:
                                           Ausschalt_minute1 = Ausschalt_minute1 + 1
                                           If Ausschalt_minute1 = 60 Then
                                              Locate 1 , 16
                                              Lcd " "
                                              Ausschalt_minute1 = 0
                                           End If
                                           Locate 1 , 15
                                           Lcd Ausschalt_minute1
                                           Waitms 200
                                           Goto Sprung11
    Geändert von dussel (29.03.2014 um 05:22 Uhr)

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Hühnerstall bauen oder kaufen?
    Von Mona2709 im Forum Das Hühnerhaus
    Antworten: 3
    Letzter Beitrag: 11.07.2020, 10:25
  2. Marans-BE mit "Stufe 9"
    Von Hühnerjette im Forum Das Brutei
    Antworten: 9
    Letzter Beitrag: 25.03.2013, 09:27
  3. Hühnerstall oder Design-Schnickschnack
    Von Saatkrähe im Forum Das Medienhuhn
    Antworten: 8
    Letzter Beitrag: 16.07.2012, 14:29
  4. Selber bauen oder Hühnerstall kaufen ???
    Von Goggl im Forum Das Hühnerhaus
    Antworten: 85
    Letzter Beitrag: 28.12.2009, 20:42
  5. Wandvertäfelung im Hühnerstall oder spinn ich?
    Von nancynolli im Forum Das Hühnerhaus
    Antworten: 14
    Letzter Beitrag: 29.06.2008, 01:03

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •