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);
}
Lesezeichen