Sida 1 av 2
USB-tangentbord till matris ?
Postat: 5 februari 2016, 14:51:47
av Glenn
Är dte nån som känner till nåt öppet projekt där man kopplar in ett USB-tangentbord i ena ändan, och sen får ut en matris i andra ändan ? Jag menar altlså att man vill ha ett USB-tangentbord istället för ett gammalt tangentbord inkopplat med X/Y-matris.
Jag har googlat en hel del och motsatsen finns det gott om, men få som gör det åt detta hållet, det finns några komersiella (svindyra) alternativ, och jag har hittat ett projekt som gör det år rätt håll:
http://forum.arduino.cc/index.php?topic=323720.0
..Men det är väl inte riktigt 100 vad jag vill göra, och dessutom inte öppet dokumenterat.
Är det nån som känner till nåt annat projekt, eller måste jag börja från början ?
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 16:33:15
av Platis
Intressant, har själv funderat på detta ibland! Antar en CPLD eller FPGA vore en lösning, då kan man även programmera om för olika konfigurationer(olika datorer).
Ett teensy-board kanske skulle funka om det är tillräckligt med pinnar, där har du usb-interfacet färdigt och den kan agera host(tror jag)!?
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 16:59:58
av Glenn
Ja, Teensy vore nog lämpligt, iaf att labba med, även om dom är lite dyra (nåja).
Det bör ju inte vara så stor skillnad att göra detta till diverse gamla datorer egentligen, bara att mappa matrisen rätt.
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 17:03:47
av Platis
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 19:44:45
av Glenn
Det är ju dock betydligt dyrare än en lös PIC eller AVR eller nån motsvarande MCU som har kapaciteten.
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 20:12:24
av Platis
Joo sant, vad ska du ha tangentbordet till? Blir säkert billigare att implementera ett PS/2 än ett USB-tangentbord!
Hur många ledningar, rader/kolumner behövs?
Med tex 8-3 encoders/decoders skulle du kunna spara lite pinnar!
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 21:56:28
av Glenn
Jag vill kunna använda ett normalt tangentbord till en gammal 8bitsdator som har matristangentbord.
Jag vill åt två saker, först och främst är det ergonomin, jag vill ha ett lågt tangentbord med normal layout, sen är det befintliga tangentbordet lite dåligt och alla knapapr "tar" inte riktigt utan man får trycka en gång till ibland, typiskt jobbigt om man ska skriva längre grejer
PS/2 är väl okej, men det känsn lite dumt att bygga för en utdöende standard..
Ska väl först och främst bygga en till mej själv, men tanken är väl att kunna erbjuda till andra med om det funkar bra.
Det är 8 rader och 11 kollumner, så 19 iopinnar bara för det om man inte kör skiftregister eller liknande.
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 22:02:35
av Glenn
Hmm, vad nu då.. kollade schemat..
kollumnerna (som jag ser det) går direkt in till en 7445, alltså en "BCD to decimal decoder", men borde det inte vara tvärt om ? tänker jag fel ?
alla kollumner är ju kopplade till utgångarna på 7445, och det är ju ingen "decimal to BCD" heller för den delen..
alla rader är däremot kopplade direkt till en 8255 (PIA/PPI) med pulldown.
Nu känner jag mej förvirrad här..
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 22:08:55
av Platis
Den lägger ut signal över 7445:an en utgång i taget och 8255:an läser raderna relativt tidpunkten och kan på så vis avgöra vilken tangent som var nertryckt, tangentbordet skannas! Men var kopplas den elfte kolumen, det är väl bara 10 utgångar på 7445:an?
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 22:16:57
av Glenn
Hmm, varför gör man så tro ?
Kollade just angående kolumn 11:
Det sitter en AND-grind (74LS08) med ingångarna kopplade till B och D (pin 12 resp 14) på 7445, utgången på denna grind går sedan vidare till en inverterande buffer (7406) och den utgången går i sin tur vidare till kolumn 8(!), medans kolumn 1-7 och 9-11 går ut till decimalutgångarna på 7445.
Synd att jag inte har en fungerande scanner så jag kunde scanna schemat.. kanske skulle underlätta.
Skulle iofs kunna fota.
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 22:19:55
av Glenn
Skrev inte det, men det kanske var självklart, men ingångarna på 7445 går ju också till 8255 förstås.
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 22:31:35
av Platis
Glenn skrev:Hmm, varför gör man så tro ?
Kollade just angående kolumn 11:
Det sitter en AND-grind (74LS08) med ingångarna kopplade till B och D (pin 12 resp 14) på 7445, utgången på denna grind går sedan vidare till en inverterande buffer (7406) och den utgången går i sin tur vidare till kolumn 8(!), medans kolumn 1-7 och 9-11 går ut till decimalutgångarna på 7445.
Hur menar du, dom flesta gamla datorer/tangentbord funkar på detta sätt! Man lägger signal på en kolumn i taget samtidigt som raderna avläses och eftersom datorn vet exakt när en viss kolumns signal var hög så vet den vilken tangent som nedtrycktes!
På gamla miniräknare så var man ännu smartare och använde siffror/display-signalerna för att göra kolumnerna höga, detta för att spara ledningar/pinnar.
Signalerna kan givetvis vara aktivt låga också!
AND-grinden är säkert för shift-lock eller dyl!
Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 22:33:10
av Platis
Synd att jag inte har en fungerande scanner så jag kunde scanna schemat.. kanske skulle underlätta.
Ta ett foto!
Är det en spectravideo?

Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 22:47:36
av Glenn
Jag har aldrig satt mej in i hur det fungerar faktiskt, förräns nu
Försökte fixa bilder från schemat:
Här är själva tangentbordet:
kbmatris2.png
..Dock har ju jag svenskt tangentbord, detta rä US, men det spelar nog mindre roll.
Och här är kontrollerdelen det ansluts mot.
kbcont3.png
..Sött med handritade scheman i en officiell servicemanual för övrigt, men det var väl så på tidigt 80tal

Re: USB-tangentbord till matris ?
Postat: 5 februari 2016, 22:57:18
av Platis
Glenn skrev:Skrev inte det, men det kanske var självklart, men ingångarna på 7445 går ju också till 8255 förstås.
En 8255:a har tre 8-bitars portar, en halv port(4bitar)används nog för BCD-koden till 7445:an, avläsning av de 8st raderna sker av en annan port på 8255:an!
Edit: Nu när jag ser schemat så är det precis så det verkar funka! PC0-PC3 = BCD-koden till 7445:an, PB0-PB7 för
avläsning av raderna!
Genom att läsa BCD-koden direkt så skulle man kunna spara 6st pinnar och med en 3-8 dekoder(tex 74HC238) till radavläsningen kan du spara ytterligare pinnar!