Fråga:
Kan jag skapa ett komplett USB-tangentbord med Makey Makey + Raspberry Pi
sventechie
2012-09-25 23:01:38 UTC
view on stackexchange narkive permalink

Jag köpte nyligen Makey Makey (baserat på Arduino Leonardo / ATMega32u4), i hopp om att bygga ett komplett USB-tangentbord i steampunk-stil från vissa metalldelar. Innan den anlände läste jag igen detaljerna och insåg att den bara har 18 möjliga ingångar, så 85+ tangenter fungerar inte. Har någon idéer om hur jag skulle kunna skapa ett sådant odjur, eventuellt med en Raspberry Pi? (som ansluter ganska enkelt, från tidigare inlägg)

Det är fantastiskt.
Istället för en ingång för varje tangent kan du använda en matris och använda de 18 ingångarna för att hantera 81 tangenter (en 9x9 matris) så vitt jag vet har RPi färre ingångar än arduino så jag tror inte att det kommer att hjälpa.
@Craig så du menar att kombinera ingångar så här: http://www.arduino.cc/playground/Main/KeypadTutorial
@sventech ja. Jag är inte bekant med makey makey så jag vet inte hur dess höga motståndsväxling kommer att interagera med matrisen.
Två svar:
ikku
2012-09-29 21:14:30 UTC
view on stackexchange narkive permalink

Om du bara vill skapa ett tangentbord utan att använda din Makey Makey kan du göra det med GPIO-funktionaliteten i Raspberry Pi. Men som kommenterat tidigare har Raspberry Pi inte tillräckligt med stift för att göra ett tangentbord som faktiskt är användbart.

Men om du är villig att lägga till 2 IC kan du skapa ett tangentbord med så många tangenter. att du kommer att ha problem med att komma med en funktion för varje tangent!

Mitt förslag är att ansluta 2 I2C IC: er till I2C-bussen på Raspberry Pi, och använda dem för att skapa din egen skanningsmatris.

Om du använder en PCF8574 har du 8 I / O-stift tillgängliga, om du får en PCF8575 har du till och med 16 I / O-stift tillgängliga. Genom att kombinera kan du få en skannmatris med:

  • 64 tangenter: (2x PCF8574)
  • 128 tangenter: (1x PCF8574 & 1x PCF8575)
  • 256 tangenter: (2x PCF8575)

Du måste alltid använda en av dem som utgång och en som ingång. På utgången låter du lite "gå" från bit 0 till bit n (7 eller 15), det här är matrisens kolumner. På den andra läser du ständigt värdet på ingången och det här är matrisens rader. Kombinationen av vilken utgångsbit som är aktiv och vilken inmatningsbit som är '1' är den tangent som trycks in.

principle of scan matrix

Att skapa matrisen är faktiskt mest arbete, och medan du håller på med det, glöm inte att lägga till en diod efter varje omkopplare du matar in i matrisen, den här dioden (en normal 1N4148 klarar sig bra) måste placeras med anoden till omkopplaren och katoden till radlinjen . Spänningsfallet på 0,6V över denna diod borde inte vara ett problem, den återstående (3,3V-0,6V) 2,7V bör fortfarande vara en logisk '1'.

practical scan matrix

Anledningen till denna lastbil med dioder är att den kommer att förhindra saker som spöken och maskering av nycklar. Ghosting är effekten att om du trycker på mer än tre tangenter samtidigt, är det möjligt att det tolkas som en helt annan tangent eftersom fler rader har en logisk '1'. Maskering är effekten att om du trycker på flera tangenter och släpper en tangent kommer detta (i vissa situationer) inte att upptäckas eftersom raden för den tangenten fortfarande är en logisk "1".

ghosting example

Bilden visar ett exempel på ghosting, knapparna A, B, D trycks in och förutom rad 1 (för knapp A) är även rad 2 (för knapp C) hög, just nu är kolumn 1 aktiv , vilket inte är korrekt.

Efter hela hårdvaruäventyret måste du skriva eller anpassa en kärndrivrutin för att faktiskt använda tangentbordet under Linux. En trevlig utgångspunkt kan vara den här länken: Drivrutin för nycklar på TCA6416 I2C IO-expander, det här är en liknande idé, men använder bara ett tangentbord på 16 tangenter.

Hoppas det hjälper dig lite.

Chris Stratton
2012-10-08 05:23:16 UTC
view on stackexchange narkive permalink

Om du vill skapa ett komplett tangentbord för att faktiskt skriva på skulle du förmodligen vara bäst med IC: n från ett USB-tangentbord. Antingen behåll själva kretskortet begravt djupt i ditt system där det inte kan ses och köra ledningar upp till dina omkopplare, eller tillverka något anpassat med samma matris.

Om du verkligen behöver ändra den elektriska matrisen då kan du behöva skapa din egen design från grunden, men annars är det inte riktigt nödvändigt.

Även med ett anpassat kort kan du ändå sluta med något som räknar upp och fungerar som ett USB-tangentbord, vilket tar bort behovet av anpassade drivrutiner.



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...