Tastenabfrage und Text auslesen am RN-Mega8 und LCD
Hallo,
Vorweg habe ich an euch eine allgeine Frage bezüglich des Demo-Programms vom RN-Control Mega8.
Ich habe es so abgeändert, dass es bei Tastendruck auf taster 1-5 einen text auf das LCD ausgibt.
Hier erstmal der Code:
Declare Sub Taste1()
Declare Sub Taste2()
Declare Function Tastenabfrage() As Byte
Declare Sub Taste3()
Declare Sub Taste4()
Declare Sub Taste5()
Declare Sub Willkommen()
$regfile = "m8def.dat"
Dim Ws As Word
Dim Adc_ohne_taste As Word
$crystal = 16000000
$baud = 9600
Config Adc = Single , Prescaler = Auto , Reference = Off
Config Pinc.0 = Input
Portc.0 = 1
Start Adc
Dim Taste As Byte
Config Pind.6 = Output
Portd.6 = 0
Dim ___lcdno As Bit
Config Lcdpin = Pin , E = Portc.3 , Rs = Portc.2 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5
Config Lcd = 16 * 4
Adc_ohne_taste = Getadc(0)
Call Willkommen
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Call Taste1
Case 2
Call Taste2
Case 3
Call Taste3
Case 4
Call Taste4
Case 5
Call Taste5
End Select
End If
Loop
End
Function Tastenabfrage() As Byte
Tastenabfrage = 0
Ws = Getadc(0)
If Ws < Adc_ohne_taste Then
Select Case Ws
Case 400 To 440
Tastenabfrage = 1
Case 330 To 370
Tastenabfrage = 2
Case 260 To 300
Tastenabfrage = 3
Case 180 To 230
Tastenabfrage = 4
Case 100 To 130
Tastenabfrage = 5
End Select
End If
End Function
Sub Taste1()
___lcdno = 0
Cls
Locate 1 , 1
Lcd "Taste1"
End Sub
Sub Taste2()
___lcdno = 0
Initlcd
Cursor Off
Cls
Home
Lcd "Taste2"
End Sub
Sub Taste3()
Initlcd
Cursor Off
Cls
Lcd "Taste3"
End Sub
Sub Taste4()
___lcdno = 0
Initlcd
Cursor Off
Cls
Home
Lcd "Taste4 "
End Sub
Sub Taste5()
___lcdno = 0
Initlcd
Cursor Off
Cls
Home
Lcd "Taste5"
End Sub
Sub Willkommen()
___lcdno = 0
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd " Willkommen!"
End Sub
---------------------------------
Jetzt frage ich euch, wie kommt aus diesem code eine Tastenabfrage des Tasterport portc.0 zu stande?
Was bedeuten die Zahlen in der "function" "case 400 to 440" usw.?
---------------------------------
Mein Ziel ist es 9 taster anzuschließen mit denen ich Zahlen von 1-9 aufs LCD bringen kann. Der Lautsprecher soll dann die eingegebene Zahl in "Beep's" wiedergeben (oder ein Blinken von einer LED).
-----------------------------------
Wenn mir jemand weiterhelfen könnte, wäre ich sehr dankbar.
Vielen Dank
Timo
Re: Tastenabfrage und Text auslesen am RN-Mega8 und LCD
Zitat:
Zitat von timo1105
Jetzt frage ich euch, wie kommt aus diesem code eine Tastenabfrage des Tasterport portc.0 zu stande?
Was bedeuten die Zahlen in der "function" "case 400 to 440" usw.?
400 to 440 sind die Werte, die der ATMega am ADC misst. Jeder Taster hat einen anderen Widerstand, also kommt am ADC bei einem höheren Widerstand ein kleinerer Wert raus, bei einem niedreigen Widerstand ein größerer.
Zitat:
Zitat von timo1105
Mein Ziel ist es 9 taster anzuschließen mit denen ich Zahlen von 1-9 aufs LCD bringen kann. Der Lautsprecher soll dann die eingegebene Zahl in "Beep's" wiedergeben (oder ein Blinken von einer LED).
Dann must du weiter 4(?) Taster über vier, sich deutlich von den anderen Widerstanden unterscheidenden, Widerstände anbringen und im Programm die einzelnen ADC-Werte austesten.
jon