Paso 6: Ajuste de la hora con potenciómetros
Si eres curioso, un potientiometer funciona como un divisor de tensión. La razón por la resistencia del potenciómetro no es necesaria es porque es la única carga entre 5V y masa. Así, en un extremo de la perilla que está conectado directamente a tierra (0V), en el otro extremo que está conectado directamente a 5V y en el medio obtendrá una suave transición de 0 a 5V. Si ha agregado alguna otra carga en serie a uno de los pasadores exteriores, entonces tendría que considerar cuidadosamente qué resistencia debe ser el potenciómetro.
Valores de la lectura de los potenciómetros
Para configurar tiempo usando potenciómetros, a conectar un exterior a tierra y el otro exterior a 5V y medimos el voltaje de la delantera medio uso analogRead(). Esto devolverá un valor entre 0 (0V) y 1023 (5V). Después de eso, es sólo una cuestión de escala el valor para el número de horas (24) y minutos (60). Leeremos las horas del pin A0 y el de pin A1.
Comportamiento de potenciómetros (es decir, de la forma cónica)
La relación entre el ángulo de la perilla y la cantidad de resistencia se conoce como el cono. Perillas de volumen a menudo tienen una conicidad no lineal, donde requiere más de una vuelta cerca del final para marcar una diferencia. Puesto que todos los valores de horas y minutos son iguales, parece lógico que una cónica lineal.
El código de
Todo lo que necesita es establecer m_inTimeSetMode en true para este paso y añadir la aplicación del método de getTimeFromPots() probar el ajuste del tiempo:
Boolean m_inTimeSetMode = true;
int HOUR_INPUT_PIN = A0;
int MIN_INPUT_PIN = A1;
/**
* Este método lee los valores de los 2 potenciómetros, convierte a
* minutos y horas y conjuntos de m_minute y m_hour a los valores asociados.
*/
void getTimeFromPots()
{
leer los potenciómetros
int hourSensor = analogRead(HOUR_INPUT_PIN);
int minuteSensor = analogRead(MIN_INPUT_PIN);
escala de las lecturas (de 0 a 1023) a la escala adecuada (0 a 23 horas, de 0 a 59 minutos)
setTime (mapa (hourSensor, 0, 1023, 0, 23), mapa (minuteSensor, 0, 1023, 0, 59), 0);
ajustamos el último tick ahora, porque cuando establece m_inTimeSetMode en false,
cuántos segundos podrían han pasado desde la última de ellas, y el tiempo saltaría adelante
m_lastTick = millis();
}