pt gl es ca gl gl gl gl es gl en gl es en pt ceb gl en gl gl gl gl fr gl gl gl gl es gl gl gl es ms gl pt gl gl gl gl en gl gl gl gl en gl es es gl gl gl pt es gl gl gl pt pt en gl ar es gl en en en gl gl gl ca gl ca gl gl gl gl gl gl gl gl it gl gl gl gl gl gl gl gl gl gl en it es es gl es gl es es gl pt en gl gl ca fr fr gl gl gl pt es sv es gl sv pt en gl hu en gl gl en gl it it es uk pt gl gl gl gl gl en gl gl es gl gl vi gl gl gl gl es es gl gl gl gl gl it gl es en en en gl en en en en gl en en en en gl
Medindo o tempo 1 – Arduino
[By oomlout CC By-SA from wikimedia]
Agora non imos falar dun reloxo deses que conectamos externamente, senón que se trata de utilizar o reloxo interno do Arduíno para poder medir o tempo e realizar algunha acción en función desa medida. Arduíno leva un cristal que oscila a 16 MHz ou 16.000.000 veces por segundo e a través da función milis() (referencia) podemos medir o tempo transcorrido desde que se acendeu a placa.
Se utilizamos un delay(tempo); para realizar esperas, o Arduíno non poderá facer nada durante ese intervalo de tempo, nin medir un sensor, nin mover un servo, … nada! estará esperando, e iso pode que non nos interese en determinados programas.
Imaxina o caso do proxecto da porta de garaxe. Queremos que, despois de aberta, a porta se peche automaticamente cando transcorreu un determinado tempo ou cando lle damos ao pulsador de pechar. Se programamos un delay(tempo); xa podemos pulsar no mando o que queiramos que a porta non se vai pechar, pois o Arduíno estará agardando e non executará nese tempo ningunha outra acción. Unha solución sería iniciar a medida do tempo cando a porta estea aberta e detectar o tempo transcorrido desde entón para proceder ao peche.
Imos programar os exemplos cun LED e un pulsador. Logo deberás adaptar ti os programas en función do que necesites facer.
1. Medir o tempo: Nesta práctica imos ver como medir o tempo desde que a placa está acesa e mostralo na consola serie.
2. Despois dun tempo: Mediante un pulsador imos acender un LED. Despois dun intervalo de tempo (5 segundos) vaise apagar. Creamos unha variable para visualizar o cronómetro na consola cando se activa.
Utilizamos “int” e non “unsigned long” porque imos pasar o tempo a segundos.
// Declaración de variables: int led=13; int pulsador=2; int estado; // Variable que garda o estado do pulsador int tempoActual; // A medida do tempo cando a miramos int tempoAnterior; // A última vez que se acendeu o LED int intervalo = 5; // intervalo en segundos int crono=0; // Variable para a visualización do cronómetro // Configuración: void setup() { Serial.begin(9600); //Inicia comunicación serial pinMode (led, OUTPUT); } // Programa: void loop() { tempoActual= millis()/1000; // É o tempo actual en s transcorrido desde o inicio. estado = digitalRead(pulsador); if ( estado == 1 ) { digitalWrite(led, HIGH); // Acende o LED tempoAnterior= tempoActual; // Iniciamos o cronómetro crono=1; } if(tempoActual- tempoAnterior > intervalo){ // Se pasou o intervalo de tempo apaga o LED digitalWrite(led, LOW); tempoAnterior=tempoActual; crono=0; // desactivamos o cronómetro } if (crono == 1){ // Mostra o cronómetro na consola cando está activado int datoCrono = intervalo -(tempoActual-tempoAnterior); Serial.println(datoCrono); } }
3. Escintileo sen delay
3. Escintileo sen delay: Nesta práctica imos programar o escintileo dun led sen utilizar a función delay(tempo);. Pode ser útil no caso de necesitar que non se deteña a execución doutros programas debido á presencia do delay.
const int led = 13; int estadoLED = LOW; // Estado do led long tempoAnterior = 0; // A última vez que se acendeu o LED long intervalo = 1000; // intervalo en milisegundos void setup() { pinMode(led, OUTPUT); } void loop() { unsigned long tempoActual = millis(); // É o tempo actual transcorrido desde o inicio. if(tempoActual - tempoAnterior > intervalo) { // se xa pasou o intervalo... tempoAnterior = tempoActual; // asignamos a tempoAnterior o tempo actual if (estadoLED == LOW){ estadoLED = HIGH; } else{ estadoLED = LOW; } } digitalWrite(ledPin, estadoLED); // cambiamos o estado do LED }
Segundo pulsador: No programa “Despois dun tempo” engade un segundo pulsador de xeito que o LED se apague cando transcorra o intervalo de tempo establecido ou premamos no segundo pulsador, independentemente do tempo.
Cronómetro: Fai un cronómetro cun pulsador de marcha e outro de parada. Empezará en 0 e mostrará o tempo ata a parada. Os datos deben mostrarse na consola no formato minutos:segundos (mm:ss). Cando funcione móstrao nunha pantalla LCD.
Conta atrás: Podes facer unha versión do cronómetro conta atrás. Incorpora un pulsador de axuste de xeito que cada vez que prememos aumenta o intervalo 10 segundos. Unha vez seleccionado o tempo a descontar, prememos no pulsador de marcha e vai descontando segundos ata chegar a cero. Nese intre soa unha alarma. Faino tamén para unha pantalla LCD.
Deixa un comentario Cancelar a resposta
Nome Correo electrónico Sitio web
Gardar o meu nome, correo electrónico e web neste navegador para a próxima vez que faga un comentario.
Descrición de Arduíno UNO
O IDE de Arduíno
Entradas e saídas dixitais
Condicional if … else
Sinais PWM e lectura serial
Array de LEDs e funcións
A posición dun servo
Servos de xiro continuo
Motor de corrente continua
Motores paso a paso
Sensor de Luz LDR
Sensor de temperatura LM35 e TMP36
Sensor de temperatura e humidade DHT11
Sensor de temperatura DS18B20
Sensor de movemento PIR
Sensor de cor TCS3200
Sensor de cor TCS34725 RGB
Sensor de auga no solo
Medindo o tempo 1
Medindo o tempo 2: RTC
Bluetooth mestre + escravo
O tanque de auga
Reloxo de area dixital
A máquina máis inútil
Clasificador M&M’s por cor
Alarma para a cortadora láser
© 2022 Arduino • Creado con GeneratePress
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.