Nesse artigo será falado sobre a placa Digispark ATtiny85 que possui o microcontrolador de 8 bits da Atmel. Na minha opinião, recomendo a utilização em projetos com as seguintes características:
- Programa pequeno, no máximo 8K. Somente após a compilação será possível estimar o tamanho.
- Que não necessite mais que 512 bytes de RAM. Instanciar um array com 513 bytes já ultrapassaria a capacidade. Atenção: O ambiente Arduino IDE não avisa que ultrapassou o limite, então fica por conta do desenvolvedor ter cuidado.
- Que utilize bateria, porque trabalhando na frequência de 1 MHz e alimentado com 1.8 V, consome apenas 300 uA. Exemplo: Uma pilha AAA, alcalina possui em média 860 mAh, duraria cerca de 2866 horas, ou 119 dias, ou quase 4 meses.
- Até 6 GPIO, nos quais é possível encontrar: AD, PWM, GPIO e SPI.
- Não necessita dispositivo separado para gravação. A gravação é realizada via USB.
- Detalhe: a tensão mínima no VIN é entre 7 e 16 V. O valor 5V representa uma saída de alimentação regulada.
- Arduino IDE (https://www.arduino.cc/en/software).
Há diversos modelos de placa, mas a placa que foi testada é conforme a imagem abaixo:
Configuração do ambiente Arduino IDE
Baixe o driver e instale: https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip
No Arduino IDE, clique no menu Arquivo->Preferências. No campo URLs Adicionais de Gerenciadores de Placas insira o endereço:
http://digistump.com/package_digistump_index.json
No Arduino IDE, clique no menu Ferramentas->Placa->Gerenciador de Placas.
Procure Digistump AVR Boards e clique no botão Instalar. Aguarde a instalação finalizar.
Abra novamente Ferramentas->Placa->Gerenciador de Placas e selecione Digispark (Default – 16.5 mhz).
Código de exemplo: Pisca pisca
Esse projeto fará o LED da placa piscar a cada 1 segundo. O LED está no pino 1, sendo assim, para o código ficar mais limpo será utilizado um DEFINE.
#define LED 1
Configure o pino como saída. Insira o código no método de setup:
pinMode(LED, OUTPUT);
Insira o código abaixo no loop.
digitalWrite(LED, !digitalRead(LED));
delay(1000);
A função digitalRead lê o estado do pino e o sinal ! inverte o valor, ou seja, caso seja falso, muda para verdadeiro e vice versa. A função digitalWrite escreve um valor na saída.
A função delay possui o parâmetro em milisegundos, sendo assim, 1000 milisegundos é igual a 1 segundo, fazendo o led piscar a cada 1 segundo.
Segue abaixo o código completo.
#define LED 1
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, !digitalRead(LED));
delay(1000);
}