Ir para o conteúdo principal

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

atenção

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