USB/PS2 billentyűzet
USB/PS2 billentyűzet
B.U.É.K Mindenkinek!!!! Sikeres AVR programozást erre az évre is!!!
Nemrég vetem agy USB/PS2 billentyűzetet (Laptopokhoz árulják,csak a számok vannak rajta) és össze akarom hozni egy Mega16-tal...
Sima PS2 billzet már üzemel vele, s a grafikus LCD-n szépen lehet lépkedni a menükben,de a sima billzet vhogy túl nagy lenne ide..azert gondoltam a laptophoz gyartott kis billzetre...
Hogy mondhatnam meg neki,hogy PS2 üzemben menjen????
Nemrég vetem agy USB/PS2 billentyűzetet (Laptopokhoz árulják,csak a számok vannak rajta) és össze akarom hozni egy Mega16-tal...
Sima PS2 billzet már üzemel vele, s a grafikus LCD-n szépen lehet lépkedni a menükben,de a sima billzet vhogy túl nagy lenne ide..azert gondoltam a laptophoz gyartott kis billzetre...
Hogy mondhatnam meg neki,hogy PS2 üzemben menjen????
Újabb probléma jelent meg a menürendszerben:
külön-külön szabályoznám két lábon a feszültséget egy timeres pwm segítségével,de a Portd.5 reagál csak rá, a Portd.6 nem
pedig a programban helyesen vannak irva,minden a helyén van:
'******************************************************
Sub Pwmhatter
Cls
Vonal = 10
Do
Lcdat 2 , 30 , "HATTERVILAGITAS"
Lcdat 8 , 2 , "ENTER=OK BACKSPACE=VISSZA"
Call Billzetlekerdezes
If B = 56 Then
Vonal = Vonal + 4
Lcdat 4 , Vonal , "I"
If Vonal = 110 Then Vonal = 10
Lcdat 4 , Vonal , "I"
Lcdat 5 , 10 , "MIN"
Lcdat 5 , 60 , "FEL"
Lcdat 5 , 110 , "MAX"
A = A + 10 '
Pwm1a = A
Portd.5 = A
End If
If B = 50 Then
Vonal = Vonal - 4
If Vonal = 10 Then Vonal = 110
Cls
Lcdat 4 , Vonal , "I"
Lcdat 5 , 10 , "MIN"
Lcdat 5 , 60 , "FEL"
Lcdat 5 , 110 , "MAX"
A = A - 10 '
Pwm1a = A
Portd.5 = A
End If
Call Menubolki
Loop
End Sub
'*******************************************************************************
Sub Ledpwm
Cls
Vonal = 10
Do
Lcdat 2 , 30 , "LED-vilagitasok"
Lcdat 8 , 2 , "ENTER=OK BACKSPACE=VISSZA"
Call Billzetlekerdezes
If B = 56 Then
Vonal = Vonal + 4
Lcdat 4 , Vonal , "I"
If Vonal = 110 Then Vonal = 10
Lcdat 4 , Vonal , "I"
Lcdat 5 , 10 , "MIN"
Lcdat 5 , 60 , "FEL"
Lcdat 5 , 110 , "MAX"
A = A + 10 '
Pwm1a = A
Portd.6 = A
End If
If B = 50 Then
Vonal = Vonal - 4
If Vonal = 10 Then Vonal = 110
Cls
Lcdat 4 , Vonal , "I"
Lcdat 5 , 10 , "MIN"
Lcdat 5 , 60 , "FEL"
Lcdat 5 , 110 , "MAX"
A = A - 10 '
Pwm1a = A
Portd.6 = A
End If
Call Menubolki
Loop
End Sub
'************************************************************
Van valakinek valami ötlete, hogy mért nem tudom a két lábat külön szabályozni??
külön-külön szabályoznám két lábon a feszültséget egy timeres pwm segítségével,de a Portd.5 reagál csak rá, a Portd.6 nem
pedig a programban helyesen vannak irva,minden a helyén van:
'******************************************************
Sub Pwmhatter
Cls
Vonal = 10
Do
Lcdat 2 , 30 , "HATTERVILAGITAS"
Lcdat 8 , 2 , "ENTER=OK BACKSPACE=VISSZA"
Call Billzetlekerdezes
If B = 56 Then
Vonal = Vonal + 4
Lcdat 4 , Vonal , "I"
If Vonal = 110 Then Vonal = 10
Lcdat 4 , Vonal , "I"
Lcdat 5 , 10 , "MIN"
Lcdat 5 , 60 , "FEL"
Lcdat 5 , 110 , "MAX"
A = A + 10 '
Pwm1a = A
Portd.5 = A
End If
If B = 50 Then
Vonal = Vonal - 4
If Vonal = 10 Then Vonal = 110
Cls
Lcdat 4 , Vonal , "I"
Lcdat 5 , 10 , "MIN"
Lcdat 5 , 60 , "FEL"
Lcdat 5 , 110 , "MAX"
A = A - 10 '
Pwm1a = A
Portd.5 = A
End If
Call Menubolki
Loop
End Sub
'*******************************************************************************
Sub Ledpwm
Cls
Vonal = 10
Do
Lcdat 2 , 30 , "LED-vilagitasok"
Lcdat 8 , 2 , "ENTER=OK BACKSPACE=VISSZA"
Call Billzetlekerdezes
If B = 56 Then
Vonal = Vonal + 4
Lcdat 4 , Vonal , "I"
If Vonal = 110 Then Vonal = 10
Lcdat 4 , Vonal , "I"
Lcdat 5 , 10 , "MIN"
Lcdat 5 , 60 , "FEL"
Lcdat 5 , 110 , "MAX"
A = A + 10 '
Pwm1a = A
Portd.6 = A
End If
If B = 50 Then
Vonal = Vonal - 4
If Vonal = 10 Then Vonal = 110
Cls
Lcdat 4 , Vonal , "I"
Lcdat 5 , 10 , "MIN"
Lcdat 5 , 60 , "FEL"
Lcdat 5 , 110 , "MAX"
A = A - 10 '
Pwm1a = A
Portd.6 = A
End If
Call Menubolki
Loop
End Sub
'************************************************************
Van valakinek valami ötlete, hogy mért nem tudom a két lábat külön szabályozni??
Nem.
Az AVR alapú PS2 kezelés esetén a bill _felé_ nem kommunikál. Azaz lem lehet a LEDeket ki/bekapcsolgatni rajta. Ezt most is a PC végzi, azaz amikor a billentyűzeten lenyomok egy CapsLock-ot, akkor ennek lenyomási és elengedési kódja megy kia PC felé, és lenyomáskor a PC visszaküld egy kódot a billentyűzetnek, hogy a LEDet gyújtsa ki v. kapcsolja le.
Próbáld ki, 2 bill kell hozzá: CL bekapcsol, bill lehúz, és msáikat raksz fel. Gépeléskor a nagybetűk jelennek meg a PC-n, holott a LED nem világít....
Itt csak a Bill ad ki leütési/felengedési kódot az AVR felé.
A GetATKbd parancssorokkal lehet betűt venni, ha van KeyData table (ld súgó). Illetve van a 8.3 verziótól a GetATkbdRAW, ahol az _ömleszettt_ parancskódok jönnek...
A legegyszerűbb:
Ez soros porton visszaküldi a lenyomott billenytűt...
Az AVR alapú PS2 kezelés esetén a bill _felé_ nem kommunikál. Azaz lem lehet a LEDeket ki/bekapcsolgatni rajta. Ezt most is a PC végzi, azaz amikor a billentyűzeten lenyomok egy CapsLock-ot, akkor ennek lenyomási és elengedési kódja megy kia PC felé, és lenyomáskor a PC visszaküld egy kódot a billentyűzetnek, hogy a LEDet gyújtsa ki v. kapcsolja le.
Próbáld ki, 2 bill kell hozzá: CL bekapcsol, bill lehúz, és msáikat raksz fel. Gépeléskor a nagybetűk jelennek meg a PC-n, holott a LED nem világít....
Itt csak a Bill ad ki leütési/felengedési kódot az AVR felé.
A GetATKbd parancssorokkal lehet betűt venni, ha van KeyData table (ld súgó). Illetve van a 8.3 verziótól a GetATkbdRAW, ahol az _ömleszettt_ parancskódok jönnek...
A legegyszerűbb:
Kód: Egész kijelölése
$crystal = 14745600 'Sebesseg
$regfile = "M48def.dat" 'Chip
$baud = 9600
'PS2Keyb
Config Keyboard = Pind.6 , Data = Pind.2 , Keydata = Keydata
Dim B As String * 1
Do
B = Getatkbd()
If B > 0 Then
Print "Code:" ; B ; " Character:" ; Chr(b)
End If
Loop
Keydata:
'normal keys lower case
'NO shifted keys UPPER case
Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
a mintapéldában biztos,hogy a B az string???
Véletlenül nem byte?
Amugy a billzetkezelés megy jól, csak ezzel a kis vacakkal szenvedek,folyamatosan küldi az AVR felé (csinaltam a grafikus LCD-re gyorsan tesztelö progit,hogy lássam,mit is ütök le) a 86H értéket....
pedig ugy voltam vele,hogy dizájnosabb ezzel a billzettel,mit 4x4billzet és házilag barkácsolt doboz,pedig igy nagyon nem fog menni
Véletlenül nem byte?
Amugy a billzetkezelés megy jól, csak ezzel a kis vacakkal szenvedek,folyamatosan küldi az AVR felé (csinaltam a grafikus LCD-re gyorsan tesztelö progit,hogy lássam,mit is ütök le) a 86H értéket....
pedig ugy voltam vele,hogy dizájnosabb ezzel a billzettel,mit 4x4billzet és házilag barkácsolt doboz,pedig igy nagyon nem fog menni
ujabb fejlemény az éjszakában:D
kiprobltam a vezerlest egy hagyomanyos usb/ps2 billzettel es azzal meg ment!!!! de ez nekem nem jo,tul nagy...a laptopos-csak numlock-billzettel kell megoldjam:(
most neztem meg,hogy a kis billzet 250mA-t igenyel!!! egy hagyomanyos max 50mA-t...lehet,hogy itt lesz a gond?
kiprobltam a vezerlest egy hagyomanyos usb/ps2 billzettel es azzal meg ment!!!! de ez nekem nem jo,tul nagy...a laptopos-csak numlock-billzettel kell megoldjam:(
most neztem meg,hogy a kis billzet 250mA-t igenyel!!! egy hagyomanyos max 50mA-t...lehet,hogy itt lesz a gond?