mClon

tecnoloxia.org | A Industriosa

Contador e cronómetro

Nesta sección imos programar un display 7 segmentos de 4 díxitos. Pódenos servir para visualizar o valor dunha variable, vontar obxectos detectados, cronometrar, … Na páxina “alerón cronómetro” podes ver como se conecta e monta nun alerón co display incorporado.

Para programalo con mBlock para mBot debes conectalo aos pins 11 e 12, pero co IDE de Arduino podes usar outros pins, por exemplo CLK no pin 2 e DIO no pin 3, como imos facer aquí.

Probando

Imos facer un programa sinxelo para ver que todo funciona correctamente.

O primeiro que debemos facer é incluír a librería Grove 4-Digit Display  (Vai a Sketch -> Incluír biblioteca -> Xestionar bibliotecas – > busca “Grove 4-Digit Display” -> Instalar). Despois engádea ao programa.

Ao premer no pulsador deberían aparecer os números 0, 1, 2 e 3 no display. Se é así todo está correcto. Se non revisa as conexións.

Contador

Agora imos visualizar no display o número de veces que prememos no pulsador. Comeza o programa do mesmo xeito que antes e no inicio do sketch creamos unha variable “conta” int conta = 0;  para almacenar o número de veces que prememos no pulsador.

Despois escribimos unha función capaz de separar un número nos seus catro díxitos usando os operadores % e /. O operador % devolve o resto da división e o operador / fai a división enteira.

Por exemplo, para o número 125:

  • 125%10=5
  • 125%100=25; 25/10=2
  • 125%1000=125; 125/100=1
  • 125/1000=0

Agora imos ir contando cada vez que prememos no pulsador e amosando os datos no display

Prácticas co contador:

  • Conta latas: No programa de ir por unha liña e ir rodeando ou apartando latas vai facendo a conta das que atopa.
  • Límite de latas: No programa anterior fai que cando atope 3 latas pare e emita unha melodía.

Cronometrar

Neste exemplo imos iniciar o cronómetro cando premamos o pulsador, e paralo cando volvamos pulsalo.

No inicio debemos crear unhas variables que nos permitan contar o tempo (tempoActual e tempoAnterior) e unha variable que nos indique se o cronómetro está activado ou o reiniciamos (estadoCrono)

Como imos contar o tempo, no setup imos activar os puntos que nos separen os minutos dos segundos (crono.point(POINT_ON); )

Despois da función de calculaDixitos engadimos unha nova función de pasar de número a tempo calculando minutos e segundos

E agora no loop cando prememos no pulsador, se o cronómetro está desactivado iniciámolo e amosamos o valor do tempo, e se o cronómetro está activado ao premer no pulsador parámolo.

Prácticas co cronómetro:

  • Décimas de segundo: No programa anterior estamos contando segundos, pero nunha carreira imos necesitar máis precisión. Modifícao para que amose décimas de segundo.
  • Ultrasón: Modifica o programa anterior para que o cronómetro arranque cando prememos no pulsador e pare cando o sensor ultrasónico atope un obxecto a menos de 10 cm.
  • Carreira de velocidade: No programa de ir por unha liña pon unha lata na meta para que o robot pare cando a atope. Nese momento o display debe amosar o tempo que tardou en chegar.

 

Neste vídeo podes ver o cronómetro funcionando. O sensor ultrasónico está situado nun lateral co soporte do resolve-labirintos.