ja genau das sollte funktionieren probieren geht über studieren
if (ad>255&&ad<256){
blaaaabla....
}
lg Martin
Und zwar
bekomme ich Werte, die um 1 bis 2 schwanken (also 256 und 255) an meinem M32 ADC-Kanal von meiner Tastaturmatrix und möchte diese Werte dann direkt angezeigt bekommen(welche Taste es nun ist)
Ist das so möglich oder muss ich immer über if, else if ... die Wertebereiche wie (264<adc2&&adc2<26abarbeiten?
ja genau das sollte funktionieren probieren geht über studieren
if (ad>255&&ad<256){
blaaaabla....
}
lg Martin
gibt es denn keine andere möglichkeit als das so abzuarbeiten?
Hallo
Vielleicht könnest du die niederwertigsten Bits einfach ignorieren: if((ad/2) == xxx) oder if((ad/4) == xxx)
(Dann könntest du allerdings auch gleich linksbündige 8-Bit-Werte einlesen)
Wieviele Tasten und welche Werte hast du denn?
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
ignorieren geht nicht da ich 180 ,200, 230, 280, 300,370, 440, ... 920 habe.
habe ne 3x4 matrix von 0-9,*,# also 12
So vielleicht:
Code:#define tastentoleranz 5 int adc2; // 180 ,200, 230, 280, 300,370, 440, ... 920 if(adc2 < (180-tastentoleranz)) { // Taste 1 } else if(adc2 < (200-tastentoleranz)) { // Taste 2 } else if(adc2 < (230-tastentoleranz)) { } else if(adc2 < (280-tastentoleranz)) { } else if(adc2 < (300-tastentoleranz)) { } // ... else if(adc2 < (920-tastentoleranz)) { // Taste x }
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
ja so in der art habe ich das ja auch schon gemacht also geht das wohl nur so.
habe es in eine funktion mit rückgabewert gemacht und kann somit programme auswählen oder zahlen eingeben.
nagut. trotzdem danke
Hmm, ich weiß jetzt nicht genau ob ich das Problem richtig
verstanden habe, aber zumindest das letzte Digit wird immer
"waggeln", das ist in der Digital Technik bekannt und kann
auch nicht verhindert werden. Man kann höchstens einen besseren
ADC mit z.B. 14 Bit Auflösung nehmen und überschüssige Bits
abschneiden /wegfallen lassen. Das LSB wird immer schwanken...
Das kommt daher das die digitale Darstellung Genau genommen
keine Nachkomma Stellen kennt , Darstellen kann. es gibt halt nur
1 oder 0, kein halb an/aus. Ab eines gewissen Analog Wert kann
der Wandler nicht mehr zwischen AN/AUS..H/L unterscheiden und
wechselt dann je nach einfallender "Störgröße" den Pegel.
Gruß Richard
ja das mit dem digit war mir klar.
hatte mich nur gefragt ob man direkt über "# define ..." einen bereich angeben kann. weil
"# define hallo 5" soetwas geht ja aber sowas wie
"# define hallo 3-6"? ist das möglich?
und noch was kleines am rande?
die adc kanäle kann man als I/O ports benutzen aber nicht anders rum oder?
Ein ((Hallo >=3) && (Hallo <=6)) sollte schon gehen. Da müssen beide Bedingungen Wahr sein.
Beim M32 geht nur der PortA als ADC aber auch als I/O.
Lesezeichen