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
Lesezeichen