-         

+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Anfänger braucht Hilfe ??

  1. #1

    Anfänger braucht Hilfe ??

    Anzeige

    Hab ein Problem!!!

    Ich möchte gerne eine Programmablaufsteuerung für ein Entwickler-Bad mit
    einem ATmega8 und Bascom aufbauen und komme irgendwie nicht richtig vorwärts.
    Bin auch in Basic noch nicht so perfeckt.
    Hab's mir irgendwie einfacher vorgestellt.

    Die Steuerung sollte folgendes machen:

    Es soll ein Ausgang sofort nach einem Tastendruck (Start) eingeschaltet werden;
    (das ist ja noch kein Problem)
    dann soll nach genau 4:50 Minuten ein zweiter Motor eingeschaltet werden,
    und nach 13:10 Minuten müssen beide Motoren abgeschaltet werden
    (das bekomme ich auch noch hin)
    Wenn während der Laufzeit noch mal start gedrückt wird, soll sich an dem Einschaltzeitpunkt
    des zweiten Motors nichts ändern,
    (allso immer noch nach den ersten angefanngenen 4:50 Minuten Motor zwei einschalten)
    aber der Ausschaltzeitpunkt der beiden Motoren soll jetzt
    um genau die Zeit die zwischen dem ersten Start und dem zweiten,dritten,vierten,...usw.
    (jenachdem wie oft Start gedrückt wird) verlängert werden.

    Hat jemand eine Idee wie man da am besten vorgeht??

    Gruß
    Georg

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.835
    Na ja, du hast zwei Zustände: Werkel steht / Werkel läuft und drei (sekunden) Zähler

    Knopf druck:
    Wenn Werkel steht -->
    ZahlEins = 0
    ZahlZwei = 290 ( 4:50)
    Zahldrei = 790 (13:10)
    Starte Mot 1
    Zustand neu= Werkel läuft

    In Zustand "werkel läuft" zählst du jede sekunde
    Zähleins+1
    Zahlzwei-1
    Zahldrei-1

    Ist zahlzwei = 0 , drehst du Mot2 auf
    Ist zahldrei = 0 , drehst du alle ab, Zustand = "Werkel steht"


    Drück nun wer beim laufen den Knopf, dann
    Knopf druck:
    Wenn Werkel läuft, dann
    Zahldrei + Zähleins
    Zähleins = 0


    Dadurch verlängert sich nur das abdrehen um die Zeit

    logo ? mfg robert

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    13.12.2004
    Alter
    30
    Beiträge
    36
    k*2-1 ergibt einen Generator für ungerade Zahlen,
    setzt du für k eine Schleife for k 1 to 1000 oder ähnliches, kannst du diese Zahlen miteinander vergleichen, ist das Ergebnis wahr -> ungerade Zahl.
    Problem bei dieser Lösung ist enorme Rechenleistung und nur ein kl. Bereich wird abgedeckt.
    Vielleicht hilft es dir ja.

  4. #4

    brauche immer noch Hilfe!!!

    Hallo Robert,
    mit diener Hilfe bin ich schon mal viel viel weiter gekommen.

    Hab mal folgendes Programm erstellt.
    Es läuft auch, nur beim wiederholten drücken der Start Taste ändern sich die Zeiten
    und die Laufzeit ist ca. 0,5sec. zu kurz.

    Hier mal mein 1.Versuch (Bitte nicht lachen!!!)

    $regfile = "m8def.dat"
    'Quarzfrequenz, entsprechend ihren Angaben
    'der passende Quarz muss in die Fassung gesteckt werden
    $crystal = 3686400
    Declare Sub Starttaste
    Dim Zahleins As Integer
    Dim Zahlzwei As Integer
    Dim Zahldrei As Integer
    'Hier wird der Timer und der Teiler festgelegt
    Config Timer1 = Timer , Prescale = 64
    Config Debounce = 50
    Ddrd = &B11010000 'Pin PD6 Ausgang, Rest Eingang
    Portd.5 = 1 'PullUp an PD 5
    'Hier ist die Programmhauptschleife

    Do
    Debounce Pind.5 , 0 , Starttaste , Sub

    If Timer1 = 57600 Then
    Timer1 = 0
    Zahleins = Zahleins + 1
    Zahlzwei = Zahlzwei - 1
    Zahldrei = Zahldrei - 1
    Toggle Portd.7 'nur damit ich sehen kann ob Timer arbeitet

    If Zahlzwei = 0 Then Portd.4 = 1
    If Zahldrei = 0 Then Portd.4 = 0
    If Zahldrei = 0 Then Portd.6 = 0
    End If



    Loop

    Sub Starttaste

    If Portd.6 = 0 Then
    Zahleins = 0
    Zahlzwei = 5 'hab hier kleinere Werte eingegeben
    Zahldrei = 10 'um beim Test nicht so lange warten zu müssen
    Portd.6 = 1 'sollte jetzt 10sec. gesamt laufzeit sein
    Timer1 = 0
    Start Timer1

    Else
    Zahldrei = Zahldrei + Zahleins
    Zahleins = 0
    End If
    End Sub


    Vielleicht kannst du mir ja noch einen Tipp geben ???

    Ich habs auch schon mal mit dem Timer Interrupt versucht aber da hab ich das Programm gar nicht zum laufen gebracht.


    Gruß
    Georg

+ Antworten

Berechtigungen

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