'################################################### '# # '# Fernausloeser für (Digital-)Kameras # '# # '# Grundlage : SnugBoard V1.0 # '# Umgebung : Bascom, Vers. 1.11.8.2 # '# Datum : 18.04.2006 # '# Kontakt : snug11@hotmail.com # '# Webseite : Www.pixelklecks.de # '# # '################################################### $regfile = "m8def.dat" 'Atmega8/16 $crystal = 16000000 'Quarztakt 16Mhz $eeprom 'internes Eeprom aktivieren Config Servos = 1 , Servo1 = Portd.4 , Reload = 10 'Einstellung Servo Enable Interrupts Config Adc = Single , Prescaler = Auto 'Einstellung A/D-Wandler Start Adc Config Portd.5 = Input 'Taster zum Konfigurieren Config Portd.2 = Output 'Signalanschluss Modellbauservo Config Portc.4 = Input 'Poti Servoposition Config Portc.5 = Input 'Poti Zeitverzögerung Dim T As Word 'Variable Zeit zwischen erneuter Auslösung Dim X1 As Word 'ServoPosition 1 Dim X2 As Word 'ServoPosition 2 Readeeprom X1 , 1 'falls schon Daten, lese aus Eeeprom Readeeprom X2 , 2 If X1 = 65535 Then X1 = 100 'wenn eeprom leer, stelle auf sichere Position, oder If X2 = 65535 Then X2 = 100 Servo(1) = X1 'Falls richtige Daten in Eeeprom, gehe auf Position 1 '############################################################################################################## ' Konfiguration - Positionen : Vor Einschalten Taste kurz gedrückt halten bis LED ausgeht, dann loslassen '############################################################################################################## Portd.2 = 1 'Schalte LED ein If Pind.5 = 0 Then Wait 2 Portd.2 = 0 'Wenn Taster nach 2S immer gedrueckt, LED aus, spring nach Sub Config If Pind.5 = 0 Then Gosub Config End If End If Portd.2 = 1 'LED auf jeden Fall wieder einschalten '########################################################################################## ' Konfiguration - Zeit : Zeitpoti in Stellung bringen, Bereich 10 Sek - 3600 Sek. '########################################################################################## T = Getadc(5) 'Zeitverzögerung einlesen T = T * 4 'max. Wert (1024) x 4 = 4096sek. If T > 3600 Then T = 3600 'beschraenken auf 3.600 Sek,(1h) maximal If T < 10 Then T = 10 'minimale Ausloesezeit : 10 Sek. Wait 10 'Warte 10 Sek. auf allererste Betätigung '########################################################################################## ' Hauptschleife - Positionen anfahren, Zeiten abwarten '########################################################################################## Do Servo(1) = X2 'Gehe auf Ausloeseposition Wait 2 'warte dort 2 Sek. Servo(1) = X1 'gehe nach Warteposition Wait T 'warte durch Poti eingestellte Zeit Loop End '########################################################################################## ' Subroutine - Positionskonfiguration ' Achtung - darauf achten, dass sich das Poti zuerst etwa in Mittelstellung befindet !!! '########################################################################################## Config: Wait 1 Portd.2 = 1 'LED signalisiert Eingabe Warteposition Do X1 = Getadc(4) 'Position per Poti einstellen X1 = X1 / 10 X1 = X1 + 45 Servo(1) = X1 Loop Until Pind.5 = 0 'solange bis Taste erneut gedrueckt Writeeeprom X1 , 1 'schreibe Position dauerhaft in Eeeprom Portd.2 = 0 'LED kurz aus Wait 1 Portd.2 = 1 'LED signalisiert Eingabe Ausloeseposition Do X2 = Getadc(4) 'Position per Poti einstellen X2 = X2 / 10 X2 = X2 + 45 Servo(1) = X2 Loop Until Pind.5 = 0 'solange bis Taste erneut gedrueckt Writeeeprom X2 , 2 'schreibe Position dauerhaft in Eeeprom Portd.2 = 0 Wait 1 Servo(1) = X1 'gehe in Warteposition Return