'IntervallSchaltuhr ' Zur Ansteuerung einer Kamera für Zeitreihenaufnahmen (Zeitraffer) ' Es kann ein Intervall und das Ende der Aufnahmen (Stoppzeit) ' eingestellt werden. ' ' Copyright (C) 2010, Friedrich Lischeck ' ' Version 1.0 ' ' Dieses Programm ist eine frei kopierbare Software. Sie können es weiter- ' vertreiben und/oder verändern, wenn Sie die Bedingungen der GNU General ' Public License wie sie in der Free Software Foundation, Version 2, oder ' späterer Ausgabe beschrieben sind, einhalten. ' Dies Programm wurde in der Hoffung entwickelt, das es Ihnen nützt. ' Ich übernehme jedoch keine Garantie oder Gewährleistung auf die Funktion ' des Programmes. Insbesondere hafte ich nicht für eventuelle Schäden ' und/oder Folgeschäden, die sich aus der Anwendung dieses Programmes ' ergeben. $regfile = "m88def.dat" $crystal = 8000000 Dim A As String * 16 Dim Preload As Word Dim Sekunde As Long Dim Cnt As Long Dim Vorgabestart As Long Dim Vorgabestop As Long Dim Vorgabeintervall As Long Dim Verzeit As Long Dim Laeuft As Byte Dim Starttimer As Long Dim Zeit As String * 8 Dim B As String * 4 Dim H As String * 4 Dim Hilfsvar1 As Long Dim Hilfsvar2 As Long 'menue Dim Taste As Byte Dim Stu As Byte Dim Mnu As Byte Dim Sek As Byte Dim Menue(5) As String * 16 Dim Auswahl As Byte Schlafen Alias Portd.7 Config Schlafen = Output Reset Schlafen Led Alias Portd.0 Config Led = Output 'Die Led blinkt nach Ablauf des Intervalls auf. Kamera Alias Portd.1 Config Kamera = Output Set Kamera Rot Alias Pind.2 Config Rot = Input Portd.2 = 1 Schwarz Alias Pind.3 Config Schwarz = Input Portd.3 = 1 ' Wenn die LCD - Konfiguraton nicht unter Options eingestellt ist: 'Config Lcdbus = 4 'Config Lcd = 16 * 2 'Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 'Cls 'Sekundentimer Preload = &HE17C Config Timer1 = Timer , Prescale = 1024 Enable Timer1 Timer1 = Preload On Timer1 Mtimer Enable Interrupts Config Debounce = 100 'Alle Zeitangaben in Sekunden Vorgabestop = 120 Vorgabeintervall = 30 Vorgabeintervall = Vorgabeintervall - 1 Neustart: Cnt = 0 Vorgabestart = 0 Disable Timer1 Menue(1) = " Dauer setzen " Menue(2) = "Intervall setzen" Menue(3) = " Timer starten " Auswahl = 1 Hmenue: Cls 'Locate 1 , 1 'Lcd " Hauptmenue " Decr Auswahl : If Auswahl < 1 Then Auswahl = 3 Locate 2 , 1 Lcd Menue(auswahl) Cursor Off Noblink Warten1: Debounce Schwarz , 0 , Hmenue Debounce Rot , 0 , Menue2 Goto Warten1 Menue2: Cls Cursor Off If Auswahl = 3 Then Goto Hauptprogramm Locate 1 , 1 Lcd Menue(auswahl) Select Case Auswahl Case Is = 1 Sekunde = Vorgabestop Gosub Sekunde_in_zeit Locate 2 , 4 Lcd Zeit Gosub Zeiteingabe Vorgabestop = Sekunde Case Is = 2 Sekunde = Vorgabeintervall Gosub Sekunde_in_zeit Locate 2 , 4 Lcd Zeit Gosub Zeiteingabe Vorgabeintervall = Sekunde Vorgabeintervall = Vorgabeintervall - 1 Case Is = 3 Goto Hauptprogramm Case Else End Select Goto Hmenue Hauptprogramm: Cursor Off Noblink Enable Timer1 Cls Laeuft = 0 Do 'StartZeit erreicht? If Cnt < Vorgabestart Then Sekunde = Vorgabestart Gosub Sekunde_in_zeit Locate 2 , 4 Lcd Zeit Else If Cnt < Vorgabestop Then Sekunde = Vorgabestop Gosub Sekunde_in_zeit Locate 2 , 4 Lcd Zeit Gosub Intervallschalter Else 'PROGRAMM BEENDEN ODER ZURUECK INS MENUE Reset Led Set Kamera Exit Do End If End If Wait 1 ' sonst kommt das LCD nicht mit. Loop Standby: Display Off Set Schlafen Waitms 500 Reset Schlafen Powerdown Waitms 500 Display On Goto Neustart End Mtimer: Timer1 = Preload Incr Cnt If Cnt > 356400 Then Cnt = 0 'max. 99 Stunden Sekunde = Cnt Gosub Sekunde_in_zeit Locate 1 , 4 Lcd Zeit If Led = 1 Then Reset Led Set Kamera End If Return Zeiteingabe: Gosub Sekunde_in_zeit H = Left(zeit , 2) Stu = Val(h) H = Mid(zeit , 4 , 2) Mnu = Val(h) H = Right(zeit , 2) Sek = Val(h) Cursor On Seingabe: B = "00" + Str(stu) B = Right(b , 2) Mid(zeit , 1 , 2) = B Locate 2 , 4 Lcd Zeit Locate 2 , 5 Warten2: Debounce Schwarz , 0 , Weiter1 Debounce Rot , 0 , Meingabe Goto Warten2 Weiter1: Incr Stu : If Stu > 24 Then Stu = 0 Goto Seingabe Meingabe: B = "00" + Str(mnu) B = Right(b , 2) Mid(zeit , 4 , 2) = B Locate 2 , 4 Lcd Zeit Locate 2 , 8 Warten3: Debounce Schwarz , 0 , Weiter2 Debounce Rot , 0 , Seeingabe Goto Warten3 Weiter2: Incr Mnu : If Mnu > 59 Then Mnu = 0 Goto Meingabe Seeingabe: B = "00" + Str(sek) B = Right(b , 2) Mid(zeit , 7 , 2) = B Locate 2 , 4 Lcd Zeit Locate 2 , 11 Warten4: Debounce Schwarz , 0 , Weiter3 Debounce Rot , 0 , Verlassen1 Goto Warten4 Weiter3: Incr Sek If Sek > 59 Then Sek = 0 Goto Seeingabe Verlassen1: Cursor Off Gosub Zeit_in_sekunde Return Sekunde_in_zeit: Hilfsvar1 = Sekunde Hilfsvar2 = Hilfsvar1 Hilfsvar1 = Hilfsvar1 / 3600 Zeit = "00" + Str(hilfsvar1) Zeit = Right(zeit , 2) Zeit = Zeit + ":" Hilfsvar1 = Hilfsvar1 * 3600 Hilfsvar1 = Hilfsvar2 - Hilfsvar1 Hilfsvar2 = Hilfsvar1 Hilfsvar1 = Hilfsvar1 / 60 B = "00" + Str(hilfsvar1) B = Right(b , 2) Zeit = Zeit + B + ":" Hilfsvar1 = Hilfsvar1 * 60 Hilfsvar1 = Hilfsvar2 - Hilfsvar1 Hilfsvar2 = Hilfsvar1 Hilfsvar1 = Hilfsvar1 B = "00" + Str(hilfsvar1) B = Right(b , 2) Zeit = Zeit + B Return Zeit_in_sekunde: 'Stunden B = Left(zeit , 2) Hilfsvar1 = Val(b) Hilfsvar2 = Hilfsvar1 * 3600 'Minuten B = Mid(zeit , 4 , 2) Hilfsvar1 = Val(b) Hilfsvar1 = Hilfsvar1 * 60 Hilfsvar2 = Hilfsvar2 + Hilfsvar1 'Sekunden B = Right(zeit , 2) Hilfsvar1 = Val(b) Hilfsvar2 = Hilfsvar2 + Hilfsvar1 Sekunde = Hilfsvar2 Return Intervallschalter: 'zeit laeuft If Laeuft = 0 Then Laeuft = 1 Starttimer = Cnt Else Do Verzeit = Cnt - Starttimer If Verzeit < Vorgabeintervall Then Else Starttimer = Cnt Laeuft = 0 Set Led Reset Kamera End If Loop Until Laeuft = 0 End If Return |