-         

Ergebnis 1 bis 2 von 2

Thema: Funktion zum auslesen eines optischen Drehencoders

  1. #1
    Benutzer Stammmitglied Avatar von Janiiix3
    Registriert seit
    29.11.2010
    Ort
    Hannover
    Alter
    26
    Beiträge
    48

    Idee Funktion zum auslesen eines optischen Drehencoders

    Anzeige

    Hallo Freunde,

    ich habe mir eine kleine Funktion geschrieben, die mir meinen Drehencoder auswertet.
    Klappt bis hier her auch super. Leider habe ich direkt den Wert "1" aus dem LCD Display stehen.
    Ich hätte aber gerne als Startwert die "0"... Habe ich was falsch gemacht ?

    Code:
    uint8_t read_Encoder(uint8_t PinPORT, uint8_t BinaryNumber)
    {
        
        static uint8_t Enc_State_new = 0, Enc_State_old = 0, Enc_Counter = 0;
    
        Enc_State_new = (PinPORT & BinaryNumber);
    
        if ((Enc_State_new != Enc_State_old))
    
        {
    
            if (Enc_State_new == 0x01)
            {
    
                if (Enc_State_old == 0x00)
                {
                    Enc_Counter++;
                }
                else
                {
                    
                    if ((Enc_Counter & 0xFE))
                    {            
                        Enc_Counter--;
                    }
                    
    
                }
            }
    
            if (Enc_State_new == 0x03)
            {
    
                if (Enc_State_old == 0x01)
                {
                    Enc_Counter++;
                }
                else
                {
                    
                    if ((Enc_Counter & 0xFE))
                    {
                        Enc_Counter--;
                    }
                }
    
            }
    
            if (Enc_State_new == 0x02)
            {
                if (Enc_State_old == 0x03)
                {
                    Enc_Counter++;
                }
                else
                {
                    
                    if ((Enc_Counter & 0xFE))
                    {
                        Enc_Counter--;
                    }
                }
    
            }
    
            if (Enc_State_new == 0x00)
            {
                if (Enc_State_old == 0x02)
                {
                    Enc_Counter++;
                }
                else
                {
                    
                    if ((Enc_Counter & 0xFE))
                    {
                        Enc_Counter--;
                    }
                }
    
            }
    
        }
    
        Enc_State_old = Enc_State_new;
        
        
        return(Enc_Counter);
        
    
    }
    __________________________________________________ _________________
    /*Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.*/
    ( <-- Das ist Glubschie, er ist nett )

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    Ich haette jetzt gesagt wenn dein Programm startet direkt erst einmal Enc_State_old mit dem aktuellem Wert fuettern..
    Dann sollte deine Encoder Position auch erst mal 0 bleiben bis er wirklich bewegt wird.

    Gruss, Andreas
    Nam et ipsa scientia potestas est..

Ähnliche Themen

  1. Benötige Programmierhilfe zum Auslesen eines Maussensors
    Von Bamboocha im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 30.06.2010, 09:52
  2. Optischen Maus Sensor auslesen
    Von pasha_bln im Forum Sensoren / Sensorik
    Antworten: 9
    Letzter Beitrag: 06.10.2008, 11:02
  3. Befehl zum Auslesen eines Registers
    Von Tenorm im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 14.02.2008, 17:41
  4. Fragen zum optischen Maussensor von Agilent
    Von robotxy im Forum Sensoren / Sensorik
    Antworten: 35
    Letzter Beitrag: 29.11.2007, 17:59
  5. String auslesen - ähnlich mid Funktion
    Von Arne im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 06.07.2005, 00:09

Berechtigungen

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