Olá pessoal, aqui é o professor João Fabro da Universidade Tecnológica Federal do Paraná, com mais um vídeo complementar do nosso curso de Arduino Básico com Tinkercad Circuits. No nosso vídeo de hoje eu vou apresentar para vocês é uma pequena modificação naquele nosso semáforo inteligente, que é a inclusão de um semáforo de pedestres! Como é que isso funciona?
Imagine que tem uma rua, ou avenida principal, onde há um fluxo contínuo de veículos, e você quer fazer uma faixa ali, para que o pedestre possa passar, para atravessar para o outro lado. Então vamos colocar um semáforo de pedestre nessa rua, para que a pessoa possa apertar um botão, e mudar o "ciclo" dos carros, para que os pedestres possam ultrapassar, possam atravessar a rua. Então a situação é essa daqui, eu tenho aqui uma rua, em que os carros passam, não é o cruzamento.
é uma rua em que os carros passam, mas tem alguma "coisa" interesse lá do outro lado, uma loja, alguma coisa, e os pedestres gostariam de atravessar aqui, nessa faixa, nós então vamos fazer um ciclo em que o carro está passado, está passando, está sempre verde para os veículos, a não ser que chegue aqui um pedestre e aperte o botão. Daí você vai entrar num ciclo que vai permitir que o pedestre atravesse essa rua, vai fechar para os veículos, e abrir para o pedestre por um tempo. A ideia mais ou menos o seguinte eu vou mudar aqui o meu, a minha aula 4 né, que era de "Semáforo Inteligente" com o botão, e eu vou colocar aqui mais 2 LEDs para representar o semáforo de pedestres, está vendo aqui, ligados aqui nas portas 5 e 6 do Arduino.
Tem o Push Button, tem os meus LEDs aqui do ciclo dos veículos, eu vou colocar mais dois LEDs aqui, e fazer a sincronização de tudo isso! Então a ideia do meu semáforo de pedestres é que ele funcione assim: ele começa no estado Inicial, é verde para os carros e vermelho para o pedestre. Ele mantém esse estado até que eu um pedestre venha e aperte o Push Button, pedindo aí que se inicie o ciclo de passagem dos pedestres pela rua.
Então após 2 segundos do botão ter sido pressionado, muda para o amarelo para os carros e mantém o vermelho para o pedestre. Aí após mais 5 segundos, passa ao vermelho para os carros e passa ao Verde pro pedestre. Então o pedestre vai ter um tempo aí para ultrapassar, para atravessar a rua.
Mais 5 segundos né, e mantém o vermelho para os carros, mas passa ao "vermelho piscando" para o pedestre, ara informar que tá acabando o tempo de atravessar a rua, e daí retorna para o estado Inicial, que é o verde para os carros e vermelho para o pedestre. Daí eu vou colocar aqui mais uma "complicaçãozinha", mais uma característica, que é aguardar cinco segundos antes de aceitar outro pedestre, para evitar que uma pessoa fique apertando continuamente aí esse semáforo de pedestres, ou de um problema no botão, e os carros tem um pouca oportunidade de passar aí por essa rua. OK?
Então, para fazer isso daí vamos fazer um circuito no Tinkercad e fazer a programação juntos, ok? Então tá aqui o nosso circuito, já montei ele no Tinkercad, e agora vou mostrar para vocês como é que a gente faz a programação! Então deixa eu passar aqui para a tela do Tinkercad.
Então eu tenho aqui o circuito, que eu já expliquei para vocês, e eu tenho o código da nossa aula 4. Esse código aqui, ele é um código já conhecido, ele faz a . .
. a ideia do "Semáforo Inteligente", que ele aumenta o tempo do vermelho, para permitir aí que os nossos pedestres possam passar. Mas eu não tinha implementado essa parte do pedestre ainda, que é o Semáforo de Pedestre.
Então está aqui o "if" que aumenta o tempo se o botão ligado ao pino 7 for pressionado. Então no encontro de hoje eu quero mudar esse código aqui junto com vocês mostrando aí como é que a gente programa esse semáforo de Pedestre. Ok?
Vamos fazer juntos então? Então vou começar aqui colocando os "pinModes", eu vou copiar aqui, colar mais duas linhas aqui para o modo de saída do nosso pino verde e vermelho para o pedestre. Então o vermelho para o pedestre é o pino cinco, "vermelho pedestre", fechei, apaguei aqui, e aqui o verde pedestre vai estar ligado no pino 6.
Ok? Então agora vou entrar aqui o meu loop, e no meu loop então como é que eu começo esse meu semáforo? Eu começo com o verde dos meus veículos, verde de carros aceso, e eu vou na verdade acender o vermelho para os pedestres.
Então o vermelho para os pedestres é o pino 5. Se eu colocar o pino 5 em HIGH, e acender o vermelho para os pedestres e acender o verde para os carros. O que eu tenho que fazer, então eu tenho que testar então eu tenho aqui o teste do botão, então eu vou copiar ele para cá.
"Editar->Copiar", marquei ali, copiar, e eu venho aqui na linha do "Colar". Então você já foi pressionado o botão eu tenho começar agora um ciclo aqui então vou colocar um bloco né de início e fim o que que acontece quando o pressiona o botão que vai tá tudo meu código aqui! Vocês lembram lá, eu começo esperando dois segundos.
Então dou um delay de 2000 aqui. E aí em seguida, tá tudo bonitinho, espera dois segundos. Em seguida, eu tenho que começar o meu ciclo do meu semáforo dos veículos.
Então vou cortar aqui, e colar, essas duas linhas Opa, não deu certo, cortar aqui essas duas linhas, colar aqui. Dá para fazer pelo teclado também usando as teclas "Control + c" para copiar, e "Control + x" para cortar, e "Control +v" para colar. O quê que eu vou começar aqui, eu vou apagar o verde e acender o amarelo.
E daí agora eu vou esperar cinco segundos. Então vou copiar aqui meu delay de 5 segundos no amarelo, 5000. Qual que é o meu próximo passo: eu vou voltar lá pra gente relembrar: Então o nosso ciclo aqui é, depois que acionou o Push Button, espera dois segundos, liga o Amarelo para os carros, mantenha o vermelho dos pedestres, aí liga o vermelho para os carros, né, depois de 5 segundos, e verde para os pedestres.
Então vamos retornar lá no nosso Tinkercad e vamos fazer isso aqui. então agora, vou esperar cinco segundos, tá aqui né, e agora vou ligar o vermelho, vou mudar o código, eu vou apagar o amarelo vou ligar o vermelho para os carros, só que eu vou fazer mais uma coisa, eu vou ligar também o verde, que é o nosso pino 6. Mas antes de ligar o verde, eu preciso apagar o vermelho do pedestre, não é?
Pino cinco, LOW, então isso aqui é "apaga o vermelho do pedestre", e aqui é "acende verde pedestre". Estes comentários aqui, depois do "//"(barra+barra) é só para a gente saber o que tá acontecendo. Então agora eu vou esperar mais cinco segundos, e agora tem uma questão interessante aqui, depois de 5 segundos, tenho que fazer piscar o LED vermelho dos pedestres!
Como é que eu faço um "pisca pisca" por 5 segundos? Então, vou utilizar o comando "for (i = 0; i<5; i++)" e 10, e eu vou abrir aqu o outro bloco: eu vou abrir e fechar o bloco, e aqui dentro eu vou colocar o comando de piscar: como é que eu faço para piscar o LED vermelho? Deixa eu aproximar aqui o código, para piscar o LED vermelho então, o que eu tenho que fazer?
Eu tenho que acender e apagar ele continuamente. Então lembra que ele estava apagado, então eu tenho que trazer aqui essa linha, copiar essa linha, aí acender e apagar ele. Então vou colocar ele em HIGH.
Acende E aí tem que dar um "delay", para esperar um tempinho, então para ele piscar durante 5 segundos eu posso dar esse delay de 500 milissegundos, 500 milissegundos aceso, e daí 500 milissegundos apagado, aqui vou colocar o LOW, e apagar o Vermleho Pedestre. Como eu estou fazendo isso aqui 5 vezes, ele vai acender e apagar, acender e apagar! Então isso aqui vai fazer o "i" variar de 0 até 4, enquanto for menor que 5, ele vai piscar uma vez, demora um segundo, daí dois segundos, 3, 4 e 5.
Então agora, o que eu tenho que fazer, tenho que finalizar aqui o meu processo. Então eu tenho que voltar ao estado Inicial que estava lá em cima, que é o LED verde para os carros e o LED vermelho para os pedestres, ambos acesos sem piscar, coloquei aqui essas duas linhas, terminei o "for" aqui então, acendo o vermelho para os pedestres, deixo só aceso, e acendo o verde para os carros, acendo o vermelho para os pedestres, e acendo o verde para os carros. E daí eu tenho que fazer também, apagar o vermelho os carros, apago o vermelho dos carros, acendo o verde, deixa eu colocar na ordem certa que isso deve acontecer.
E aí eu acendo o vermelho do pedestre, aí apgo o vermelho dos carros, e acendo o verde dos carros. Ok pessoal, eu queria mostrar uma coisa, caso você digita alguma coisa errada, suponha que você pode digitar o write aqui . .
. . sem a maiúscula.
Então ao iniciar a simulação, se tem um código com erro, ele vai informar através de uma mensagem, a mensagem tá aqui em inglês, é "olha, parece que tem alguma coisa errada! ". Daí ele coloca aqui algumas informações né, "digitalread não foi declarado", está escrito em inglês ali, só que ele ele não acerta exatamente qual linha que está o erro.
Ele disse que nessa linha aqui não conseguiu continuar a execução, então na (linha) anterior, ou na anterior da anterior, pode ser que tenha algum um erro. Então é aqui, nessa linha aqui ó, arrumando aqui, ao iniciar simulação se tudo der certo, vai funcionar o nosso semáforo de pedestres. Então ele começa verde para os carros e vermelho para o pedestre, e a hora que o pedestre aperta o botão aqui, ele conta dois segundos, liga o Amarelo, e continua no vermelho.
Ele conta 5 segundos, vermelho e aqui verde. Agora ele vai contar cinco segundos e daí vai começar a piscar esse vermelho do pedestre, e se tudo der certo, ele deixa o vermelho aceso, e volta lá o verde e fica a 5 segundos aí sem poder que eu recomece o meu ciclo. E aí, passam 5 segundos, e eu posso apertar de novo, e daí começa tudo de novo.
Ok pessoal? Então esse daí foi o nosso semáforo de pedestres-parte 1, euum não mostrei pra vocês aí o código sendo construído a partir da especificação, que é o que se espera de quem entende de programação, é conseguir a partir de uma explicação do que que deve acontecer, você fazer um programa que transforme isso em realidade. Ok?
Então só voltando aqui na nossa apresentação, eu vou finalizar. Então o semáforo de pedestres está funcionando, aqui está o código, que eu já tinha feito anteriormente, e que deve estar exatamente igual aquele que eu mostrei pra vocês agora! E na próxima na vídeo aula eu vou mostrar como melhorar ainda esse código e como fazer alterações nele usando as ferramentas aí do Tinkercad Circuits, de "debug", e algumas dicas aí de utilização dessas ferramentas.
Ok pessoal? Então esse foi o nosso encontro de hoje, espero que tenha sido útil e interessante para vocês, e nos vemos no próximo!