Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Библиотека 8-битного порта ввода-вывода для Arduino — расширение цифрового управления

Компоненты и материалы

Компонент Количество
Arduino UNO 1
Светодиод 5 мм (красный) 1
Потенциометр 10 кОм (однооборотный) 1

Программное обеспечение

О проекте

Стандартные функции digitalWrite() и digitalRead() работают только с одним выводом за раз. Если нужно подключить 8-битное устройство (7-сегментный индикатор, DIP-переключатели, ЦАП), приходится управлять 8 выводами по отдельности, отправляя биты по одному.

Эта библиотека объединяет любые 8 выводов Arduino в один 8-битный порт ввода-вывода. Можно отправлять или считывать целый байт за одну операцию.

Функции библиотеки

  1. IO_Port_8bit(pin1...pin8, dir) — конструктор. Создает порт из 8 указанных выводов. Параметр dir: 'O' — выход, 'I' — вход. Порт не может работать и на входе, и на выходе одновременно.
  2. IO_Port_8bit(pin1...pin8) — конструктор без направления. Направление задается позже функцией set_IO_direction(). Позволяет менять направление в runtime.
  3. set_IO_direction(dir) — устанавливает направление: 'I' или 'O'. При ошибке выводит сообщение в Serial Monitor.
  4. send_8bit_data(byte) — отправляет 8-битное значение (0–255) на настроенные выводы. При значении >255 — ошибка в Serial.
  5. get_8bit_data() — считывает 8 бит с настроенных входов и возвращает целое число (0–255).

Примеры использования

Пример 1: Мигание 8 светодиодов по очереди (1 Гц)

#include <IO_Port_8bit.h>

IO_Port_8bit myport(2, 3, 4, 5, 6, 7, 8, 9, 'O'); // выходной порт

void setup() {}

void loop() {
  myport.send_8bit_data(85);   // 0b01010101 — нечетные LED
  delay(500);
  myport.send_8bit_data(170);  // 0b10101010 — четные LED
  delay(500);
}

Пример 2: Бинарный счетчик на 8 светодиодах (0–15)

#include <IO_Port_8bit.h>

IO_Port_8bit my8bitport(2, 3, 4, 5, 6, 7, 8, 9);

void setup() {
  my8bitport.set_IO_direction('O');
}

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

Пример 3: Индикация уровня аналогового сигнала на 8-сегментной шкале

#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); delay(500);
  myport.send_8bit_data(0);
}

void loop() {
  int level = analogRead(A0);
  level = map(level, 0, 1023, 0, 80);

  if (level > 70) myport.send_8bit_data(255);
  else if (level > 60) myport.send_8bit_data(127);
  else if (level > 50) myport.send_8bit_data(63);
  else if (level > 40) myport.send_8bit_data(31);
  else if (level > 30) myport.send_8bit_data(15);
  else if (level > 20) myport.send_8bit_data(7);
  else if (level > 10) myport.send_8bit_data(3);
  else if (level > 0) myport.send_8bit_data(1);
  else myport.send_8bit_data(0);
}

Пример 4: Чтение 8-битного ввода от DIP-переключателей

#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("8-bit input port test");
}

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

Схема подключения

Библиотека 8-битного порта ввода-вывода для Arduino — расширение цифрового управления

Библиотека доступна для скачивания в разделе Code оригинальной статьи.

Производственный процесс

  1. Панель управления полётным симулятором 2020 на Arduino Nano: LCD и CDI-дисплеи
  2. Панель переключателей и LED для Microsoft Flight Simulator 2020 на Arduino
  3. Умная система мониторинга температуры для школ: точно, в реальном времени, безопасно
  4. Arduino 64-клавишная прототипная клавиатура: матрица на сдвиговых регистрах
  5. Умная зона безопасности на Arduino: разблокировка Android, iOS и Windows 10 по отпечатку пальца
  6. TFT Shield 2.8" 320×240 SPI для Arduino Nano — высокопроизводительный дисплей
  7. DIY-система управления тараканом на Arduino — сборка за $30
  8. Гальванически разделённый аналоговый вход для Arduino на LM331 и оптопаре 4N25
  9. Доступный дыхание-контроллер (Breath Controller) на Arduino с USB-MIDI
  10. Набор для создания робота с умной внутренней навигацией на базе Arduino