Quando iniciamos na programação de microcontroladores, ou do Arduino, os primeiros projetos para praticar o famoso “Hello World” são projetos de leitura de teclas, e para ligar/desligar as saídas do microcontrolador. Neste post vamos explorar esses conhecimentos iniciais e montar um projeto de um Semáforo com ATTINY no Tinkercad.
O primeiro projeto que vamos fazer será bem simples, apenas acionando um LED com o microcontrolador, e depois vamos partir para o projeto do semáforo.
Hello World
A primeira parte do nosso post é entender como funciona a saída do microcontrolador, antes de programar um circuito mais complexo como um semáforo de trânsito. Para isso vamos utilizar o circuito abaixo, que consiste de uma fonte de alimentação, um resistor de 560Ω para limitar a correte que vai circular através do LED, e um LED verde.
Com circuito acima montado podemos começar a programar. O objetivo do nosso código é fazer o LED piscar em intervalos de tempo que seja perceptível para nossa visão. Vamos fazer com que LED pisque a cada 500 milissegundos, o que corresponde a uma frequência de 2 Hz.
Abaixo temos o código utilizado para gravar o ATTINY, utilizando a IDE do Arduino.
/***********************************************************
Hello World ATTINY
www.wantronics.com.br
***********************************************************/
void trafficLight(int traffic, int time);
void setup()
{
pinMode(0, OUTPUT);
}
void loop()
{
digitalWrite (0, HIGH);
delay (500);
digitalWrite (0, LOW);
delay (500);
}
na função delay(), o tempo é definido em milissegundos, então quando escrevemos delay(500) estamos gerando um atraso de 500 milissegundos, até que a outra instrução seja executada.
E abaixo é possível simular o circuito, e alterar o tempo que o LED permanece ligado ou desligado.
Semáforo com ATTINY
Com os conhecimentos básicos adquiridos no nosso “Hello World” podemos fazer um projeto um pouco mais complexo, como um semáforo com ATTINY.
O nosso semáforo vai possuir 6 LEDs, e 6 resistores, o microcontrolador ATTINY e a fonte de alimentação. O circuito é mostrado na figura abaixo:
Abaixo temos o diagrama esquemático do nosso semáforo com todas as ligações para quem desejar fazer a montagem em protoboard.
E abaixo temos o código para ser gravado no microcontrolador:
/***********************************************************
Traffic Light ATTINY
www.wantronics.com.br
***********************************************************/
void trafficLight(int traffic, int time);
void setup()
{
pinMode(0, OUTPUT); // LED green TL1
pinMode(1, OUTPUT); // LED yellow TL1
pinMode(2, OUTPUT); // LED red TL1
pinMode(3, OUTPUT); // LED yellow TL2
pinMode(4, OUTPUT); // LED green TL2
pinMode(5, OUTPUT); // LED red TL2
}
void loop()
{
trafficLight (0, 1000); // traffic light in the operation mode
//trafficLight (1, 1000); // traffic light with a problem
}
void trafficLight(int traffic, int time)
{
while (traffic == 0) // traffic light in the operation mode
{
digitalWrite (0, HIGH); // LED green TL1
digitalWrite (1, LOW); // LED yellow TL1
digitalWrite (2, LOW); // LED red TL1
digitalWrite (3, LOW); // LED yellow TL2
digitalWrite (4, LOW); // LED green TL2
digitalWrite (5, HIGH); // LED red TL2
delay (time);
digitalWrite (0, LOW); // LED green TL1
digitalWrite (1, HIGH); // LED yellow TL1
digitalWrite (2, LOW); // LED red TL1
digitalWrite (3, LOW); // LED yellow TL2
digitalWrite (4, LOW); // LED green TL2
digitalWrite (5, HIGH); // LED red TL2
delay (time);
digitalWrite (0, LOW); // LED green TL1
digitalWrite (1, LOW); // LED yellow TL1
digitalWrite (2, HIGH); // LED red TL1
digitalWrite (3, LOW); // LED yellow TL2
digitalWrite (4, HIGH); // LED green TL2
digitalWrite (5, LOW); // LED red TL2
delay (time);
digitalWrite (0, LOW); // LED green TL1
digitalWrite (1, LOW); // LED yellow TL1
digitalWrite (2, HIGH); // LED red TL1
digitalWrite (3, HIGH); // LED yellow TL2
digitalWrite (4, LOW); // LED green TL2
digitalWrite (5, LOW); // LED red TL2
delay (time);
}
while (traffic != 0) // traffic light with a problem
{
digitalWrite (1, HIGH); // LED yellow TL1
digitalWrite (3, HIGH); // LED yellow TL2
delay (500);
digitalWrite (1, LOW); // LED yellow TL1
digitalWrite (3, LOW); // LED yellow TL2
delay (500);
}
}
A função trafficLight() possui dois modos de operação, o modo de operação normal, e o modo de operação com defeito, ou após a meia noite, que podem ser testados removendo o comentário da linha 21 e adicionando o comentário na linha 20.
Abaixo é possível testar a simulação do circuito no Tinkercad.
Conclusão
Apesar de ser um projeto simples utilizando um microcontrolador, existem muitos detalhes que foram deixados de lados e que são muito importante na hora de fazer um projeto eletrônico, e que devem ser consultados e implementados. A ideia dos projetos apresentados é mostrar uma forma fácil e rápida para aprender a programar e a utilizar o Tinkecad como ferramenta de simulação.