Manual
do
Maker
.
com
O Digispark é bastante diferente de um Arduino. O Atinny85 é uma MCU Atmel também, mas com muita limitação em relação a um Arduino. Mas existem muitas vantagens em utilizá-lo e você sempre deve lembrar-se de que cada coisa tem um propósito específico. Existem muitas vantagens nesse hardware minimalístico, mas é necessário entender as diferenças entre ele e o Arduino para facilitar as coisas quando for manipulá-lo.
O Attiny85 é uma MCU Atmel, mas não é um Arduino, mesmo que em uma board como a Digispark.
O Digispark contém apenas 6KB de memória flash para armazenamento de código; não dá pra fazer um servidor web nele, ok?
Os pinos 3 r 4 (P3 e P4 respectivamente) são usados para a comunicação e programação USB. É permissivo para uso quando não estiver servindo a nenhum destes outros 2 propósitos.
O pino P3 tem um resistor pull-up de 1.5kOhms conectado a ele, devido ao seu propósito de utilização na USB e isso deve ser considerado ao utilizar esse pino.
O Digispark não tem hardserial e nem conversor serial-usb.
Diversas bibliotecas feitas para Arduino não funcionarão nele por razões óbvias.
Assim que disponível no nosso parceiro, coloco o link aqui, mas não anteceda a compra, aguarde pelo preço especial oferecido pela Autocore Robótica.
Nesse outro tutorial mostrei como manipular o LED da board, e esse LED será utilizado para o sensor de nível d'água, de forma que poderei ater-me apenas aos 2 fios do sensor (delícia de liberdade - acompanhe o site).
Todos os pinos estão aptos a escrita digital de saída (digitalWrite e OUTPUT), mas o pino P5 tem 3V quando seu estado for HIGH. Pode ser até que bastante bom esse recurso, veremos em outro artigo.
A ordem dos pinos digitais são bastante simples, sendo 0 para P0, 1 para P1 e assim port diante.
Então, um exemplo básico de uso do digitalWrite configurando o pino 0 para OUTPUT seria:
int INVERTER = 0;
void setup(){
pinMode(0,OUTPUT);
}
void loop(){
digitalWrite(0,INVERTER);
delay(800);
INVERTER = !INVERTER;
}
Esse código muda o estado do pino P0 a cada 800ms.
Aqui temos uma situação interessante. O resistor de pull-up interno (ligado quando chamando digitalWrite(0) após configurar o pino como OUTPUT) são muito mais fracos em um Attiny do que em um Arduino, de modo que o LED onboard interfere neles. Se precisar realmente dos pull-up, não utilize o P0 ou então interrompa a trilha do LED. Para o modelo A isso se aplica ao pino P1, enquanto no modelo B se aplica ao P0.
Um exemplo de leitura sem muito mistério:
int val = 0;
void setup(){
pinMode(2,INPUT);
}
void loop(){
val = digitalRead(2);
...
}
A leitura analógica também é possível e assim como no Arduino, não é necessário configurar o pino para a leitura analógica. Caso o pino tenha sido previamente configurado como OUTPUT, retroceda o processo configurando-o para INPUT e pronto.
int val = 0;
void setup(){
}
void loop(){
/*
P2 = 1 analogico
P4 = 2 analogico
P3 = 3 analogico
P5 = 0 analogico
*/
val = analogRead(1);
...
}
Pensou que o Attiny não tinha, né? Bem, eu pensei. Mas tem, então vejamos como é simples uma escrita, considerando que a resolução é de 8 bits:
void setup(){
pinMode(2,OUTPUT); // para PWM os pinos casam com a ordem (P2)
}
void loop(){
analogWrite(2,128); //50% do duty cycle
}
Agora uma coisa legal; a leitura analógica! Mais simples que a leitura digital, simplesmente leia o pino sem configurá-lo:
valor = analogRead(1); //le P2
Mas suponhamos que previamente você houvesse colocado em alguma parte do código um "pinMode(2,OUTPUT)", bastaria que previamente você configurasse o pino como INPUT:
//configura o pino
pinMode(2, INPUT);
//le do pino 2
value = analogRead(1);
Como você pode ter reparado, os pinos mudam a sequência. A relação entre os pinos é:
Já é o suficiente para você se sentir confiante e tocar seu primeiro projeto com um Digispark, hum?
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.