Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Biblioteca Eficiente de Porta IO de 8 Bits para Arduino – Expanda o Controle Digital

Componentes e Materiais

Componente Quantidade
Arduino UNO 1
LED 5mm Vermelho 1
Potenciômetro Monovoltas 10k ohms 1

Aplicativos e Serviços Online

Sobre o Projeto

Biblioteca Arduino para porta IO de 8 bits

Sabemos que o Arduino fornece saída digital usando digitalWrite() e lê entrada digital com digitalRead(). Porém, essas funções operam em um único pino por vez. Se você quiser interligar dispositivos de 8 bits como display de 7 segmentos, chaves DIP ou DAC (Conversor Digital-Analógico), não pode enviar 8 bits diretamente; precisa manipular 8 pinos individuais.

Para resolver isso, apresento a biblioteca 8-bit IO Port. Com ela, você pode enviar dados de 8 bits diretamente para quaisquer pinos do Arduino configurados como uma porta combinada de 8 bits, ou ler 8 bits desses pinos. A biblioteca agrupa quaisquer 8 pinos do Arduino para funcionarem como uma porta de entrada/saída de 8 bits. Basta selecionar 8 pinos e configurar sua direção de dados como entrada ('I') ou saída ('O').

A biblioteca possui apenas 5 funções: dois construtores para criar objeto(s) de porta, uma função para enviar saída digital de 8 bits, uma para ler entrada digital de 8 bits e uma para alterar/definir a direção de IO da porta.

Funções da Biblioteca

  1. IO_Port_8bit(int pin1, pin2, pin3, pin4, pin5, pin6, pin7, pin8, char dir)
    Construtor. Cria objeto(s) da classe, combinando 8 pinos distintos do Arduino como uma porta. O último argumento dir define a direção: 'O' para saída, 'I' para entrada. A mesma porta não pode funcionar como entrada e saída simultaneamente. Indica erro se a direção não for selecionada.

  2. IO_Port_8bit(int pin1, pin2, pin3, pin4, pin5, pin6, pin7, pin8)
    Construtor alternativo. Cria a porta sem definir direção. Use a função set_IO_direction para definir direção em tempo de execução. Permite alternar a porta entre entrada e saída (não simultaneamente).

  3. set_IO_direction(char dir)
    Define direção de entrada/saída da porta. Argumento: 'I' para entrada, 'O' para saída. Exibe erro no monitor serial se direção não selecionada.

  4. send_8bit_data(int byt)
    Envia dado de 8 bits aos pinos especificados. Argumento: inteiro (< 255). Exibe erro se > 255.

  5. get_8bit_data(void)
    Lê dado de 8 bits dos pinos especificados. Retorna inteiro de 8 bits lendo o estado dos 8 pinos.

Exemplos

Exemplo 1: Piscar 8 LEDs alternadamente a 1 Hz

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2, 3, 4, 5, 6, 7, 8, 9, 'O'); // porta de saída

void setup() {}

void loop() {
  myport.send_8bit_data(85);  // pisca LEDs ímpares (01010101)
  delay(500);
  myport.send_8bit_data(170); // pisca LEDs pares (10101010)
  delay(500);
}

Exemplo 2: Exibir contagem binária nos LEDs de 0 a F

#include <IO_Port_8bit.h>
IO_Port_8bit my8bitport(2, 3, 4, 5, 6, 7, 8, 9); // cria objeto

void setup() {
  my8bitport.set_IO_direction('O'); // define direção
}

void loop() {
  for (int i = 0; i < 16; i++) {
    my8bitport.send_8bit_data(i);
    delay(200);
  }
}

Exemplo 3: Indicar nível de tensão analógica em display de barras de 8 LEDs

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2, 3, 4, 5, 6, 7, 8, 9, 'O');

void setup() {
  myport.send_8bit_data(255); // pisca todos
  delay(500);
  myport.send_8bit_data(0);
}

void loop() {
  int level = analogRead(A0);
  level = map(level, 0, 1023, 0, 80);
  if (level < 80 && level > 70) myport.send_8bit_data(255);
  else if (level <= 70 && level > 60) myport.send_8bit_data(127);
  else if (level <= 60 && level > 50) myport.send_8bit_data(63);
  else if (level <= 50 && level > 40) myport.send_8bit_data(31);
  else if (level <= 40 && level > 30) myport.send_8bit_data(15);
  else if (level <= 30 && level > 20) myport.send_8bit_data(7);
  else if (level <= 20 && level > 10) myport.send_8bit_data(3);
  else if (level <= 10 && level > 0) myport.send_8bit_data(1);
  else if (level == 0) myport.send_8bit_data(0);
}

Exemplo 4: Ler entrada digital de 8 bits de chaves DIP e exibir no monitor serial

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2, 3, 4, 5, 6, 7, 8, 9);

void setup() {
  Serial.begin(9600);
  myport.set_IO_direction('I');
  Serial.println("Teste porta de entrada 8-bit");
}

void loop() {
  int input_byt = myport.get_8bit_data();
  Serial.print("entrada recebida = ");
  Serial.println(input_byt);
  delay(1000);
}

Código da Biblioteca

A biblioteca cria porta IO de 8 bits a partir de pinos do Arduino e envia/recebe dados digitais de 8 bits. Disponível apenas para download.

Esquemático

Porta IO envia ou recebe dados de 8 bits diretamente de diferentes pinos.

Biblioteca Eficiente de Porta IO de 8 Bits para Arduino – Expanda o Controle Digital

Processo de manufatura

  1. Painel de Controle para Flight Simulator 2020 com Arduino Nano – Display LCD e CDI
  2. Painel de Chaves e LEDs para Microsoft Flight Simulator 2020 com Arduino
  3. Sistema Inteligente de Monitoramento de Temperatura para Escolas: Preciso, Tempo Real e Seguro
  4. Teclado Prototípico de 64 Teclas com Arduino: Matriz com Registradores de Deslocamento
  5. Crie uma Zona Segura com Arduino para Desbloquear Dispositivos Android, iOS e Windows 10
  6. Shield TFT 2,8" para Arduino Nano – Display SPI 320×240 de Alto Desempenho
  7. Sistema DIY de Controle de Baratas com Arduino – Construa por Menos de $30
  8. Circuito de Entrada Analógica Isolada para Arduino
  9. Controlador de Respiração Arduino Acessível com Integração USB-MIDI
  10. Kit de Robô de Navegação Interna Inteligente para Projetos Arduino