Está en la página 1de 6

MICROCONTROLADORES

Clases 7. Comunicación Serial y uso de


sensores y componentes electrónicos
Verena Mercado Polo
Ing. Electricista, Especialista y Magister
int pulsador=2;
EJEMPLO 1 int EstadoActual=0;
int EstadoAnterior=0;
int Contador;
Contar pulsaciones y registrar el unsigned long Tiempo=0;
tiempo entre pulsaciones.
Eliminar efecto rebote void setup() {
Serial.begin(9600); // Configuración del puerto serial
pinMode(pulsador,INPUT);
}

void loop() {
EstadoActual=digitalRead(pulsador);
if(EstadoActual==HIGH&&EstadoAnterior==LOW){
delay(100);
Contador++;
Serial.print("Contador: ");
Serial.println(Contador);
Serial.print("Tiempo transcurrido: ");
Serial.println(millis());
Serial.print("Tiempo entre pulsos: ");
Serial.println(millis()-Tiempo);
Tiempo=millis();
}
EstadoAnterior=EstadoActual;
}
DATOS DE TIPO LARGO, CREACIÓN DE UN
TEMPORIZADOR
• Instrucción delay(), es útil pero limitada.
• Cuando se ejecuta delay() Arduino se paraliza hasta que se termine el tiempo
especificado dentro de esta instrucción. Esto significa que no es posible trabajar
con las señales de entrada y salida mientras está paralizado.
• Delay tampoco es muy útil para llevar un control del tiempo transcurrido.
• La función millis() ayuda a resolver estos problemas. Realiza un seguimiento del
tiempo que Arduino ha estado funcionando en mili segundos.
D ATOS D E T I P O L A R G O , C R E AC I Ó N D E U N
TEMPORIZADOR
• Una variable int (entero) es un número de 16 bit, esto significa que puede guardar
números decimales entre -32768 y 32767.
Si Arduino cuenta 1000 veces por segundo usando la función mills(), llegará a
superar el rango de valores entre -32768 y 32767 (65536 números) en 65,5
segundos.
• Los datos de tipo largo o long pueden guardar números de 32 bits (entre -
2147483648 y 2147483647). Ya que no es posible contar el tiempo hacia atrás
usando números negativos, la variable para guardar el tiempo que hay que usar en
la función mills() se llama unsigned long.
R E L OJ D E C O N T R O L D I G I TA L
• En este proyecto, se realiza un reloj de control digital que enciende un diodo led cada 10
s. De esta manera al usar un temporizador construido en arduino se podrá saber cuándo
tiempo se trabaja en un proyecto.
void loop() {
R E LOJ D E C O N T ROL D I GI TA L TiempoActual=millis();
if(TiempoActual-
TiempoPrevio>TiempoentrecadaLed){
const int SensorInc=2;
TiempoPrevio=TiempoActual;
unsigned long TiempoPrevio;
digitalWrite(Led,HIGH);
unsigned long TiempoActual;
Led++;
int EstadoSensor;
if(Led==8){
int EstadoPrevioSensor;
}
int Led=3;
}
long TiempoentrecadaLed=10000;
EstadoSensor=digitalRead(SensorInc);
if(EstadoSensor!=EstadoPrevioSensor){
void setup() {
for(int x=3;x<=8;x++){
for(int x=3;x<=8;x++){
digitalWrite(x,LOW);
pinMode(x,OUTPUT);
}
}
Led=3;
pinMode(SensorInc,INPUT);
TiempoPrevio=TiempoActual;
Serial.begin(9600);
}
}
EstadoPrevioSensor=EstadoSensor;
Serial.print("Time: ");
Serial.println(TiempoActual);
delay(1000);
}

También podría gustarte