Entradas e Saídas Digitais

Na Franzininho DIY temos 6 pinos que podem ser usados como entradas ou saídas digitais( P0 a P5), conforme pinout:

Pinagem Franzininho DIY

warning

Verificar limitações de uso dos pinos

Configuração do modo de funcionamento do pino#

Os pinos do ATtiny85 podem ser configurados como entradas ou saídas, além de outras funções. Para configuração como entrada ou saída digital vamos usar a seguinte função:

pinMode()

Configura um pino específico para ser entrada ou saída digital.

Sintaxe:#

pinMode(pino, modo);

Parâmetros:#

  • pino: corresponde ao pino que você irá usar, no caso da Franzininho podemos usar pinos de 0 a 5.
  • modo: deve-se colocar o modo no qual se deseja configurar o pino:
    • INPUT = Entrada: Esse pino receberá sinais vindos de um circuito externo
    • OUTPUT = Saída: Esse pino enviará sinais para ativar um circuito externo
    • INPUT_PULLUP = Entrada digital com resistor de pull-up (ligado ao VCC) interno habilitado

Exemplo de uso#

Vamos configurar o pino P0 para leitura de uma tecla, portanto será uma entrada digital. Também vamos configurar o pino P1 para acionamento do LED, ou seja, uma saída digital:

int tecla = 0; //pino da tecla
int LED = 1; //pino do LED
void setup() {
pinMode(tecla, INPUT); //configura pino da tecla como entrada
pinMode(LED, OUTPUT); //configura pino do LED como saída
}
void loop() {
}

Geralmente as configurações são realizadas dentro da função setup(). Na função loop() são realizadas as tarefas durante o funcionamento da placa, como veremos mais à frente.

Escrita em um pino digital#

Os pinos digitais configurados como saídas digitais podem assumir dois valores, conforme a escrita no código. Os valores podem ser HIGH ou LOW, que se traduzem em 5V ou 0V no pino da Franzininho. Para escrita digital vamos usar a seguinte função:

digitalWrite()

Coloca um nível lógico alto (HIGH, 5V) ou baixo (LOW, 0V) em um pino configurado como saída digital.

Sintaxe#

digitalWrite(pino, valor)

Parâmetros#

pino: Número correspondente ao pino.

valor: HIGH ou LOW.

Exemplo de uso#

Inverte o estado do LED (P1) em intervalos de 1 segundo:

const int LED = 1; //pino digital conectado ao LED
void setup(){
pinMode(LED,OUTPUT); //pino digital de saída
}
void loop(){
digitalWrite(LED,HIGH); //acende o led da placa
delay(1000); //aguarda um segundo
digitalWrite(LED,LOW); //apaga o led da placa
delay(1000); //aguarda um segundo
}

Simulação#

A função delay(ms) espera um tempo em milissegundos. No caso do exemplo acima, 1000 ms = 1 segundo;

Leitura de um pino digital#

Um pino digital pode assumir dois valores, HIGH e LOW, conforme o nível de tensão presente no mesmo: 5V ou 0V. Podemos usar o pino configurado como entrada digital para ler estados de sensores, que por sua vez representam estados de situações, por exemplo:

  • botão solto ou pressionado;
  • porta aberta ou fechada
  • presença de objeto ou não presença de objeto

Para leitura de uma entrada digital usamos a seguinte função:

digitalRead()

Lê o valor presente em um pino digital. Este valor pode ser HIGH ou LOW.

Sintaxe#

digitalRead(pino);

Parâmetros:#

pino: número do pino que se deseja ler.

Retorno#

HIGH ou LOW.

Exemplo de uso#

Vamos ler o estado da tecla ligada ao pino P2 e acionar o LED ligado a pino P1 conforme o seu estado:

Circuito

Código#

const int LED = 1; //pino para o LED
const int BOTAO = 2; //pino para o botão
int val = 0; // val será utilizado para armazenar o estado do pino
void setup(){
pinMode(LED,OUTPUT); //o LED é uma saída
pinMode(BOTAO,INPUT); //o BOTAO é uma entrada
}
void loop (){
val = digitalRead(BOTAO); // lê e armazena o valor de entrada
digitalWrite(LED, val); //aciona LED conforme valor lido do botão
}

Simulação#