-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: M32 ADC Werte bereich definieren

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.01.2010
    Ort
    Bielefeld
    Beiträge
    101

    M32 ADC Werte bereich definieren

    Anzeige

    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<26 abarbeiten?

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von RobbyMartin
    Registriert seit
    31.12.2009
    Ort
    Leverkusen
    Alter
    24
    Beiträge
    206
    ja genau das sollte funktionieren probieren geht über studieren

    if (ad>255&&ad<256){

    blaaaabla....

    }

    lg Martin

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.01.2010
    Ort
    Bielefeld
    Beiträge
    101
    gibt es denn keine andere möglichkeit als das so abzuarbeiten?

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    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

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.01.2010
    Ort
    Bielefeld
    Beiträge
    101
    ignorieren geht nicht da ich 180 ,200, 230, 280, 300,370, 440, ... 920 habe.

    habe ne 3x4 matrix von 0-9,*,# also 12

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    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
    }

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.01.2010
    Ort
    Bielefeld
    Beiträge
    101
    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

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    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

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.01.2010
    Ort
    Bielefeld
    Beiträge
    101
    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?

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    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.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •