Flera knappar till samma port? (snilleblixt?)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

Flera knappar till samma port? (snilleblixt?)

Inlägg av Rollo »

Kom på en liten sak idag...
Håller på med ett litet projekt och har något snålt med portar kvar på min 16f628, men det känns onödigt att använda ännu en.

Därför kom jag på att man borde kunna använda sig av kommandot POT i PicBasic. Man kopplar 3-4 brytare med olika motstånd in på samma port(verkar som att man ska ha kondingar också).

Sen kör man bara POT och då vet den vilken knapp som är nedtryckt, beroende på värdet den får!

Obs!Har inte testat än.. Ska ge mig på det nu ikväll eller imorgon..

Nån som har några invändingar eller kommentarer?
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Inga andra kommentarer än att det fungerar utmärkt att göra så :).
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

det kan ta flera millisekunder att exekvera kommandot "POT" :roll:
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Använder man en vanlig A/D-omvandlare går det ju snabbare.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Klart, en ADC hade ju varit det bästa. Men tyvärr har vår kära PIC16F628 inte sådana. Däremot har den två komparatorer och en 4-bits variabel intern spänningsreferens, så man skulle ju kunna skanna en analog ingång på den vägen 8)
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

Inlägg av Rollo »

Har pillat med det ett tag nu men jag får det inte att fungera överhuvudtaget..

Har 3 knappar, 7 Ohm , 20 Ohm och 40 Ohm.
Och en konding på 0,1 µF.

Någon som har använt sig av POT som vet några klurigheter?

PicBasic:

Kod: Markera allt

Buttons:
var1 = pot porta.3 , 255

if var1 = 20 <> 90 then low porta.0
if var1 = 90 <> 160 then low porta.1
if var1 = 160 <> 250 then low porta.2

goto buttons
*edit*

Såg på en sida att dom använde en elektrolyt, ska man det? har inte sett det på något annat ställe. :?:
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

motsånden har på tok för låg resistans! De bör ligga på några kOhm för att det ska fungera bra! Prova med det istället.

Kondingen kvittar så länge den ligge på sisådär 0,1µF.

Har du satt scale till rätt värde? (Tveksamt eftersom det inte fungerade för dig)
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

Inlägg av Rollo »

Oops!
Skyller på att det är dagen före måndag men mina motsånd är ju av samma värden men i Kohm...

Har sett lite kodexempel med POT men där får de ut Scale värdet på en display, hur gör man om man inte har en sådan?

Jag vill ju inte behöva kalibrera SCALE varje gång jag startar.
Användarvisningsbild
Tony
Inlägg: 1038
Blev medlem: 9 november 2003, 16:08:47

Inlägg av Tony »

En 8-line to 3-line priority encoder omvandlar från Dec till Bin, om flera ingångar aktiveras samtidigt så är det högsta värdet som gäller.

Mao 4 knappar på 2 bitar.

Har du många knappar (telefontangentbord e.dyl.) är det matriskoppling som gäller.

Sen kan man ju vända på steken, expandera antalet utgångar mha. shiftregister så får man fler portar att ha som ingångar.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Du behöver bara hitta scale en gång för din specifika hårdvara. Den motsvarar tidskonstanten för din RC-krets. Var noga med att du har din högsta resistans kopplad i serie med kondensatorn när du letar fram scale. När det väl är gjort så är det bara att lägga den som en konstant i ditt program ju!
Skriv svar