Testa A/D-värden från en trimpot på ett smart sätt?
Postat: 4 oktober 2007, 22:37:03
Hej!
Jag håller på med ett litet meny-projekt med en PIC och en 16x2 alfanumerisk display. Det jag har gjort är att m.h.a en potentiometer så kan man välja olika alternativ i menyn, 1-15.
Nackdelen för mig nu är att koden blir så onödigt stor! För att testa värdena har jag gjort på följande sätt:
Som ni ser så blir det väldigt mycket kod av detta, och HEX-filen blir oacceptabelt stor.
Finns det något smidigare matematiskt sätt att lösa detta på? Det behöver inte vara mikroPascal-anpassat, går lika bra med C eller andra språk som går att förstå för en sån som jag (asm-dyslektiker).
Tack för mig!
Jag håller på med ett litet meny-projekt med en PIC och en 16x2 alfanumerisk display. Det jag har gjort är att m.h.a en potentiometer så kan man välja olika alternativ i menyn, 1-15.
Nackdelen för mig nu är att koden blir så onödigt stor! För att testa värdena har jag gjort på följande sätt:
Kod: Markera allt
val := ADC_Read(2) shr 2; // Läs värdet från trimpoten
if val <> lastval then // Är värdet samma som det senaste lästa? Skippa kommande 'begin' isåfall.
begin
if val <= 17 then valc := 15
else
if (val <= 34) and (val > 17) then valc := 14
else
if (val <= 51) and (val > 34) then valc := 13;
else
OSV ända ner till 1...
end;
[Fortsättning med annan kod]
Finns det något smidigare matematiskt sätt att lösa detta på? Det behöver inte vara mikroPascal-anpassat, går lika bra med C eller andra språk som går att förstå för en sån som jag (asm-dyslektiker).
Tack för mig!