Servus
ich bin gerade dabei eine Uhr mit Wecker und Datum zu programmieren. Das
ganze mache ich mit Bascom.
Nun habe ich hier zwei Probleme und zwar
1. Ich will das Licht mittels eines Distanzsensors einschalten welcher
an dem Analog Eingang Pinc.0 angeschlossen ist. Hierfür verwende ich
einen Sharp GP2D12.
Im bereich Analogwertverarbeitung bin ich nicht so fit deshalb wollte
ich fragen ob in meinem Programm jemand einen Fehler findet warum mein
Licht sich nicht einschaltet.
Bereich des Sensors sind 10-80cm. Ich will ungefähr 20-30cm haben muss
also nicht genau sein.
2. Problem ist wenn ich mit der Uhr durchtappe duch mein Menü und ich
will den Wecker stellen bleiben immer die Sekunden der Uhr rechts neben
dem Wecker stehen. Weiß jemand wie ich das hinbekomme damit die Sekunden
weg sind?
Hier mein Code. Ich weiß dass die Datumsverarbeitung fehlt. Seit bitte
nachsichtig.
Code:$regfile = "m8def.dat" $crystal = 1000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portb.4 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Config Portb.0 = Output Config Portb.5 = Output Config Portb.1 = Output Config Pind.0 = Input Config Pind.1 = Input Config Pind.2 = Input Config Pind.3 = Input Config Pinc.0 = Input Const Adc_multi = 0.00244140625 Config Adc = Single , Prescaler = Auto Start Adc Portd.0 = 1 Portd.1 = 1 Portd.2 = 1 Portd.3 = 1 Enable Interrupts Config Clock = Soft Config Date = Mdy , Separator = / Declare Sub Stunde Declare Sub Minute Declare Sub Stundew Declare Sub Minutew Declare Sub Onoff Declare Sub Licht Declare Sub Stellenmenue Dim Stellenstunde As Byte Dim Stellenminute As Byte Dim Konfiguration As Byte Dim Anaus As Byte Dim Messung As Word Messung = Getadc(0) Cls Time$ = "00:00:00" Date$ = "01/01/00" Do If Konfiguration = 1 Then Locate 1 , 1 If Stellenstunde < 10 Then Lcd "0" Lcd Stellenstunde ; ":" If Stellenminute < 10 Then Lcd "0" Lcd Stellenminute End If Locate 2 , 9 Lcd Date$ Debounce Pind.0 , 0 , Stellenmenue , Sub If Konfiguration = 0 Or Konfiguration = 2 Or Konfiguration = 3 Then Locate 1 , 1 Lcd Time$ End If If Konfiguration = 1 Then 'Wecker stellen Debounce Pind.1 , 0 , Stundew , Sub Debounce Pind.2 , 0 , Minutew , Sub End If If Konfiguration = 2 Then 'Uhr stellen Debounce Pind.1 , 0 , Stunde , Sub Debounce Pind.2 , 0 , Minute , Sub End If Debounce Pind.3 , 0 , Onoff , Sub If Konfiguration = 0 And Anaus = 0 Then 'Wecker an/aus Locate 2 , 1 Lcd "aus " End If If Konfiguration = 0 And Anaus = 1 Then Locate 2 , 1 Lcd "an " End If If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 Then Portb.1 = 1 Else Portb.1 = 0 End If If Messung < 500 Then Portb.5 = 0 Else Portb.5 = 1 End If Loop 'Stellenmenü 'Menü zum einstellen Wecker/Uhr/Datum Stellenmenue: Incr Konfiguration If Konfiguration = 4 Then Konfiguration = 0 If Konfiguration = 1 Then Locate 2 , 1 Lcd "Wecker" End If If Konfiguration = 2 Then Locate 2 , 1 Lcd "Uhr " End If If Konfiguration = 3 Then Locate 2 , 1 Lcd "Datum " End If Return 'Stunde 'Hier wird die Stunde der Uhr hochgezählt Stunde: Incr _hour If _hour > 23 Then _hour = 00 End If Return 'Minute 'Hier wird die Minute der Uhr hochgezählt Minute: Incr _min If _min > 59 Then _min = 00 End If Return 'MinuteW 'Hier wird die Minute des Weckers hochgezählt Minutew: Incr Stellenminute If Stellenminute > 59 Then Stellenminute = 0 End If Return 'Stundew 'Hier wird die Stunde des Weckers hochgezählt Stundew: Incr Stellenstunde If Stellenstunde > 23 Then Stellenstunde = 0 End If Return 'onoff 'Hier wird der Wecker ein- und ausgeschaltet Onoff: Incr Anaus If Anaus = 2 Then Anaus = 0 Return







Zitieren

Lesezeichen