Paso 3: código
Cuando se ve una señal de levantamiento, activa la función de encoderPos. Esta función lee el número y añade o resta un intervalo en la posición. Nota: Sólo agregando y utilizando mod, podemos mejor controlar la gama de la posición, así la limitación de 0 a 99. Y la variable global debe ser identificada como una variable volátil para trabajar con interrupciones.
El bucle principal entonces traduce el número de las instrucciones de registro de cambio.
Registros de desplazamiento #define pasador 5 Este es el valor hexadecimal de cada número almacenado en una matriz de índice numérico volátil unsigned int pos; void setup() {} void loop() {}
#define CLK 4
#define datos 6
#define ENCA 2
#define ENCB 7
digitOne Byte [10] = {0x6F, 0 x 09, 0x73, 0x3B, 0x1D, 0x3E, 0x7C, 0x0B, 0x7F, 0x1F};
digitTwo Byte [10] = {0x7B, 0x11, 0x67, 0x37, 0x1D, 0x3E, 0x7C, 0 x 13, 0x7F, 0x1F};
Cambiar la configuración de registro
pinMode (cierre, salida);
pinMode (CLK, salida);
pinMode (datos, salida);
Configuración del codificador
pinMode (ENCA, entrada);
pinMode (ENCB, entrada);
digitalWrite (ENCA, alto);
digitalWrite (ENCB, alto);
attachInterrupt (0, encoderPos, RISING);
}
obtener los dígitos individuales
bytes los = pos % 10;
byte decenas = pos/10;
salida a 7 seg
digitalWrite (pestillo, bajo);
shiftOut (DATA, CLK, MSBFIRST, ~ digitTwo[tens]); digitTwo
shiftOut (DATA, CLK, MSBFIRST, ~ digitOne[ones]); digitOne
digitalWrite (cierre, alta);
}
void encoderPos(void) {}
Verifique la salida del B para alta o baja
Medio alto hacia la derecha
BAJO medio hacia la izquierda
{if(digitalRead(ENCB))}
POS = (pos + 1) % 100;
}
Else {}
POS = (pos + 99) % 100;
}
}