olá eu sou flávio e este é mais um vídeo da série explorando arduino hoje nós vamos falar sobre um recurso que tem aqui dentro nós do im o timer esse recurso permite que o arduíno quanto tempo com ele a gente consegue usar funções básicas que a gente já utiliza como de lei myles recursos como o controle de um cervo motor a função tony essas funções utilizam por trás delas o recurso do timer então você vai entender o como que o time funciona para você usar também no seu projeto para fazer vários controles que conte tempo
então vamos lá vem comigo pra gente começar vamos entender o cômico time funciona em primeiro lugar time é um recurso do microprocessador está aqui dentro do im é um recurso na dentro do microprocessador esse recurso funciona como se fosse um cronômetro então imagine que você pode colocar um programa no arduino e esse programa pode utilizar um time pra contar tempo vamos supor que eu quero fazer aqui um programa para contar um determinado tempo eu quero que ele conte cinco segundos após cinco segundos ele aciona algum dispositivo então o que eu vou fazer eu vou ligar
um time ou seja o programa ele tem lá como se fosse o cronômetro ele ligasse cronômetro e pele para o cronômetro contar cinco segundos quando o cronômetro atingir os 5 segundos ele vai automaticamente executar alguma tarefa do nosso programa não importa o que o nosso programa esteja fazendo ele pode estar ocupado com controles de motores ouvindo é os botões atualizando a tela ele pode estar fazendo uma cena em outras atividades mas a partir do momento que aquele cronograma lá o time atingiu aquele 5 segundos a gente vai o time vai executar o que nós queremos
automaticamente esse recurso que o time utiliza para executar a aaa o que nós queremos é um recurso chamado interrupção inclusive lá na aula anterior eu falei sobre interrupção no arduino como utilizar a interrupção para outros outras aplicações mas no caso do time ele utiliza também então opção a interrupção ela interrompe o programa do arduino está fazendo para executar o que nós queremos é por isso que o time ele funciona de uma forma precisa e com um timer a gente consegue contar não só segundos minutos horas mas a gente consegue uma precisão muito maior que isso
pra vocês terem idéia a gente consegue uma precisão de micro segundos 1 milhão de micro segundos equivale a um segundo então olha nível de precisão que a gente consegue ter com o time além de um cronômetro como como exemplo que eu dei com o time a gente consegue aplicações como por exemplo pwm após as portas pwm do arduino utilizam esse recurso de time porque porque o pwm nada mais é do que uma modulação entre a onda ou seja o ligue e desligue ou aquela porta numa velocidade que a gente não percebe e se ligar e
desligar e numa freqüência específica e essa modulação ao tamanho não seja o quanto deixou ligado enquanto deixa ele desligado é com isso que regula a atenção entre aspas daquela porta então imaginem que a porta é uma porta digital ela varia entre zero e 5 volts poxa mais 5 volts é meu land aceso e 0 é o nerd apagado como uma porta pwm então vamos supor que eu quero deixar o meu land como se fosse aqui com dois volantes e meio uma luminosidade média na verdade a gente não consegue ou a porta e 5 a porta
0 volts então modulando essa tensão entre 0 e 5 mas numa velocidade muito rápida a gente não percebe não vai perceber o médio piscando em pwm a gente vai modulando isso de uma forma muito rápida ea gente consegue obter o efeito de um com uma luminosidade que a gente quer entre zero e 5 volts então pwm é só um exemplo de uso do timer o time ele é utilizado para a função pwr outros exemplos um cervo motor o cervo motor vocês podem reparar que ele utiliza apenas um fio para que a gente informe qual é
a posição que ele tem que estar através de um único fio que também a gente pode só variar entre 0 e 5 volts o que a gente faz a gente manda uma onda quadrada ou seja fica ligando e desligando essa tensão numa velocidade específica para que o servo com esse ligar e desligar ele entenda qual é o ângulo que a gente quer que o céu esteja aquela biblioteca do sesi o motor que a gente costuma utilizar lá dentro ela faz uso do time um outro exemplo é a função myles a função de lei elas internamente
utilizam também o time se a gente colocar além do programa um delay de mil segundo ou seja de um segundo olha de lei para que um segundo para depois continuar o que essa função está fazendo ela está funcionando há um timer o timer conta um segundo e assim que um segundo foi atingido ela para para o delay continua funcionando então entenda que dentro do arduino nós temos alguns times não é só a gente tem vários times cada um pode ser utilizado com uma função diferente eu só dei alguns exemplos aqui pwm serva motor um outro
exemplo é a função tony ramos a gente tiver um banner o microfone zinho ligar na função tony a gente consegue reproduzir notas musicais diferentes essa nota musical é uma onda também numa determinada frequência cada um dom musical é uma freqüência diferente que a gente executa utilizando também a função timer então cada time tem uma função específica imaginem que dentro do arduino uno nós temos três times então qualquer outro arguido que utiliza o mesmo microprocessador como por exemplo nano é um orgulho no micro eles utilizam esse mesmo microprocessador então todos eles têm três times têm 10
o primeiro um timer 2 o time é zero é utilizado pelas funções de lei myles e micros o time era um é utilizado pela biblioteca que controla servo motores e o timer 2 é utilizado pela função tony então o timer 0 recomendo que você não utiliza para nada porque de lei milhões são funções que a gente utiliza praticamente em qualquer projeto o timer 1 se o seu projecto não utiliza servo motor você pode usar ele pra qualquer outra aplicação e mesma coisa o timer 2 você não utiliza função tony usa ele para qualquer outra coisa
o arduíno mega ele por os outros três times não possui também esses três com essas mesmas aplicações e possui outros três que normalmente são utilizados também para servo motores se você não utiliza servo-motores no mega você tem então mais times que você pode utilizar já com isso vejam que a gente consegue aplicar muito mais servo-motores no arduíno mega do que nós lhe do mundo só que a título de curiosidade cada time perca consegue controlar até 12 serva motor então no arduino uno gente consegue até 12 serve o motor vai funcionar tranquilamente preciso mais de 12
servo-motores no meu projeto eu utilizo o arduino médico mas voltando aqui para o time o que nós vamos fazer agora é eu vou mostrar pra vocês o como que a gente vai controlar o timer 11 nesse projeto nós não utilizamos erva motor então eu vou utilizar o timer 11 para fazer o controle aqui e cronômetro com esse projeto aqui é um cronômetro para a contagem de tempo regressivo deixou primeiro te mostrar aqui como ele funciona esse circuito aqui nada mais é do que um cronômetro um contador de tempo então enquanto o tempo que estiver rodando
ele vai acionar aqui um relé para que eu possa ligar qualquer coisa nesse relê ele quanto tempo e quando chegar aki no final do tempo ele desliga o relé e aqui um botão para acionar o a contagem do tempo possa funcionar posso parar ela no caso aqui de se decidisse play nós vamos mostrar é que a contagem do tempo esse aqui um display oled se você quiser mais detalhes sobre ele nós temos um vídeo ensinando a usar esse display tão em cima do vídeo tem um link com um acesso a esse vídeo explicando desse módulo
aqui e caso você queira entender sobre esse circuito aqui que eu montei para o controle do relé nós temos um urso que lá a gente ensina a fazer esse circuito então o curso é de como desenhar placas de circuito impresso utilizando fritzen e lá a gente está fazendo um projeto exatamente com relés você vai encontrar e se esse circuito detalhar dinho então aqui eu vou mostrar o funcionamento vamos clicar aqui veja que ele começa a fazer a contagem do tempo eu programei aqui no esquete para ele contar 30 segundos então você pode programar quanto tempo
você quer e ele vai contar esse tempo repare que ele acendeu aqui o led ou seja ele está com o relacionado se eu quiser posso fazer um pause veja ele parou ele desligou e lê se eu quiser continuar a contagem ele está contando então além dele controlar além do arduino controla tudo isso ele está utilizando o timer para fazer a contagem do tempo feijão chegou a 0 e ele desligou automaticamente então esse botão aqui ele tem também a função de reset não vejo que eu liguei e ele tem a função para ligar aí tem a
função de pause e se eu segurar ele é apertado por uns dois segundos ele faz um reset aqui e se esquece que você acabou de ver funcionando está disponível e na descrição do vídeo para você baixar e ele que eu vou explicar agora a parte do funcionamento do botão isso vai ficar para uma próxima aula onde eu vou ensinar nesse esquete exatamente mas eu vou explicar o como é o funcionamento do botão com mais de uma função mas vamos agora focar no funcionamento aqui do time então aqui em cima nós temos é os parâmetros do
projeto isso acho legal também de você organizar o seu esquete dessa forma ou seja deixar aqui em cima as definições que você pode modificar de acordo com o seu circuito então fica muito mais simples você só modifica que esses valores para que todo o projeto seja configurado por aqui não vejo por exemplo as configurações dos pinos é legal a gente deixar aqui uma definição como se fosse uma variável com o qual pneu que a gente está utilizando então aqui eu estou utilizando a porta 8 do arduino para controlar o relé e aí embaixo eu não
utilizo 8 fixo utilizo sempre esse nome pink relê para que o programa controla o relé então sim algum momento falou não agora eu quero correr e quero que conectar o releia aqui na porta 10 simplesmente eu venho aqui altero pradesh todo o programa vai funcionar fica muito mais fácil dar manutenção no programa dessa forma uma outra dica também quando a gente está trabalhando com relês é você ter uma definição do nível de acionamento do relé a normalmente os módulos eles possuem o nível de acionamento low sim ou seja ele fica em ray e o modo
o rei está desligado quando eu e levo a porta para o melhor como baixo a porta para low ele vai acionar o rei vai ligar aqui o circuito que o monterrey é inverso eu preciso ele fique em ou a porta fica em low o rei fica desligado quando eu jogo para raio ele liga então lá embaixo também utilizo essa definição porque aí é só eu mudar aqui se eu colocar agora por exemplo um módulo de relés eu mudo para louco e tudo vai funcionar lá embaixo aqui eu definir em que porta o botão está ligado
aqui o botão do acionamento qual é o tempo de reset ou seja quanto tempo deixa o botão acionado para que ele faça um reset aqui do tempo e qual é o tempo do computador aqui no caso tempo do contador em segundos viram que eu deixei lá ele contando 30 segundos ah eu quero que ele conte cinco minutos então eu pegaria 60 segundos vezes 5 300 coloco aqui 300 quem e aí eu tenho um funcionamento adequado bom aqui embaixo nós vamos colocar nas bibliotecas as definições de biblioteca algumas patrões como essa dúvida o ponto jogar essa
água é utilizada pelo display lá no vídeo que ensina a usar o display lá eu te explico melhor também é essa que micro lcd agora aqui nós vamos falar hoje essa aqui o time warner então ela também está aí na descrição do vídeo para você baixar e instalar assim que você instalar você pode usar aqui a time warner depois nós temos aqui a configuração do display oled mesma coisa está explicado lá no outro vídeo aqui também temos as imagens que aparecem aqui no display e algumas funções aqui que vão fazer o controle do computador já
então nós temos uma que vai controlar o botão que essa que nós vamos explicar numa próxima aula não vamos nos atentar agora nesse vídeo é show ponto essa controla se o ponto está piscando ou não contador é essa que vai atualizar no display o número do computador ou seja essas duas aqui é para atualizar o display mesma coisa não é o foco na aula de hoje já é essa aqui é a função conta tempo ela é que vamos usar para as acionar através do timer bom até agora quanto a timer vejam que a única coisa
que a gente fez foi utilizar lá a biblioteca time eu há aqui algumas variáveis que a gente vai utilizar durante o esquete aqui no setup é que a gente vai começar aqui ó o uso do time anteriormente aqui é só a definição dos pinos é o que embute o que é o tipo ç e o início da biblioteca que conta troca de explicar falando do time nós então temos aqui a biblioteca time peruano e vamos executar esse comando aqui e aí me chamais que vamos informar qual é o tempo em que o timer será executado
vejam que aqui nós vamos fazer com que o timer ele conte esse tempo e ele vai executar uma função a cada tempo executar então aqui nesse caso esse tempo ele é informado em microssegundos vejam que eu tenho aqui o valor de um milhão isso significa um segundo como o meu tempo mínimo aqui de contagem do nuno do cronômetro é de um segundo então eu quero executar esse time a cada segundo para subtrair um segundo na contagem e aí depois eu tenho essa função a tati interrompe a função à tarde enterro vai receber aqui qual é
a função que será executada pela interrupção do time então vejam que eu tenho time o primeiro digo quanto tempo ele irá executar ea cada execução do timer aqui eu digo qual é a função que será executada nesse tempo que seria função conta tempo então se a gente for lá pra baixo na função conta tempo então aqui eu tenho o controle do meu computador nós vamos ter a variável contador que ela é iniciada com o total de segundos que eu quero contar e aí a cada execução dessa função eu vou subtrair um esse - - é
a mesma coisa do que se eu colocasse contador é igual a ele mesmo - um então se eu tenho lá no início o define que são 300 segundos primeira vez que ele passa por aqui ou seja segundo de execução ele vai tirar um e vai pra 299 a cada segundo ele vai reduzindo até chegar em zero e aqui eu só controlo para que ele não fique em negativo ou seja depois que ele chegou a 0 para que ele pare então seria o que é se o computador estiver menor ou igual a zero ou seja se
ele já chegou no momento de parar então aqui eu digo que ele fique 0 por alguma eventual problema de loja que ele tenha ficado negativo em que ele volta a zero e aqui o contador status é igual a zero ou seja essa variável o contador status controla se ele está rodando tempos ele está parado depois aqui em cima depois que eu fiz todo o controle dos e tá aqui no loop eu tenho simplesmente esse controle aqui verificando o status do contador então se o computador for igual a 1 significa que ele está rodando então eu
ligo o relé se o contador não foi igual a um seja se eles tiverem zero significa que o cronômetro não está mudando então eu paro aqui eu desligo o relé depois aqui eu faço o controle do botão não é o foco do vídeo de hoje explicar sobre essa função aqui vamos sim explicar no próximo vídeo mas aqui eu tenho que verificar se o botão foi apertado aí sim então eu vejo ele foi apertado o tempo for maior quiser então que queria fazer ele vai mudar o status do computador então se ele for apertado e o
contador não estiver contando ele vai começar a contar ele vai pegar o que tem lá no tempo joga aqui no computador e aqui ele vai iniciar o timer aqui isso que esse é um detalhe importante porque é o seguinte lá no setup a gente iniciou o time ele começou com tá a cada um segundo ele vai executar aquela função vai lá e executa aquela função a cada segundo mas por que que acontece se lá no cronômetro ele já executou meio segundo e naquele momento ele ainda não completou um segundo ele executou meio segundo e naquele
momento a gente aperta o start o primeiro segundo contado seria só de meio segundo e não de um segundo completo porque porque ele iria terminar esse outro meio segundo para executar a função do computador então para evitar isso ou seja quando apertar o botão de start para que ele conte realmente um segundo completo então a gente vai fazer isso a gente vai colocar um novo start e de novo vamos dizer que ele vai ter aqui essa interrupção linkada essa função é é redundante aqui mas isso é necessário para que a partir dessa instrução dessas duas
linhas ele 0 em seu computador no cronômetro como ele será se o cronômetro e começasse a contar de novo então eu tenho esse primeiro segundo no computador controlado 7 aqui é variável contador status eu digo que é um porque eu apertei então quero que ele agora inicia a contagem se ele já estava contando eu apertei o botão o que vai acontecer então aqui a gente quer que ele para o computador então por isso eu vou usar aqui o trailer 1 e ponto stop ele para o computador e na função contador status eu digo que é
zero ou seja contador está parado então ele faz aquele pause lá e aqui no caso se eu segurei o botão apertado por mais de tantos segundos ele entende que é um reset cutou no caso do reset que a gente vai fazer aqui a gente vai é que se o tempo for marco zero e que ele faz ele para o computador só que ele vai jogar lá avaliar o contador uns 10 ou seja ele vai reiniciar contágio não é isso depois ele atualiza a o display através dessas duas funções show ponto show contador e simples assim
ele vai funcionar da forma que eu mostrei então se você quiser fazer esse projeto igual baixem na descrição do vídeo esse esquete e um único trecho que ainda não expliquei aqui é o trecho do botão que ficará para uma próxima can espero que você tenha gostado desse vídeo e por favor compartilhe esse vídeo com seus amigos de um like se você gostou deixa aqui em baixo do vídeo seus comentários é muito legal saber o que você está achando realmente muitos comentários pessoal vocês têm deixado tem nos ajudado muito a melhorar um canal a colocar assuntos
que são de interesses de você aliás esse canal aqui é feito pra você ok muito obrigado pela sua participação um grande abraço e até o próximo vídeo [Música] [Música] [Aplausos] [Música]