산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노용 효율적인 8비트 IO 포트 라이브러리 – 디지털 제어 확장

부품 및 소모품

아두이노 우노 (Arduino UNO) × 1
5mm 적색 LED × 1
10kΩ 단회전 포텐셔미터 × 1

앱 및 온라인 서비스

프로젝트 소개

아두이노는 digitalWrite()로 디지털 출력을, digitalRead()로 디지털 입력을 처리합니다. 하지만 이 함수들은 한 번에 한 핀만 제어할 수 있습니다. 7세그먼트 디스플레이, DIP 스위치, DAC 같은 8비트 장치를 연결하려면 8개 핀에 각각 0/1 패턴을 보내야 합니다. 예: 데이터 0x37(0011 0111)이면 8개 핀에 비트별로 써야 합니다.

이 문제를 해결하고자 8비트 IO 포트 라이브러리를 만들었습니다. 아두이노의 임의 8개 핀을 묶어 하나의 8비트 입출력 포트처럼 사용할 수 있습니다. 데이터 방향은 'O'(출력) 또는 'I'(입력) 문자로 설정합니다.

라이브러리는 단 5개 함수로 구성됩니다:

  1. IO_Port_8bit(pin1..pin8, dir) – 포트 객체 생성, 방향 고정
  2. IO_Port_8bit(pin1..pin8) – 방향 미지정, 런타임에 변경 가능
  3. set_IO_direction(dir) – 방향 설정 ('I' 또는 'O')
  4. send_8bit_data(byte) – 8비트 데이터 출력 (0~255)
  5. get_8bit_data() – 8비트 데이터 입력 읽기

예제 1: 8개 LED를 1Hz로 번갈아 점멸

#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);  // 홀수 LED 켜기 (01010101)
  delay(500);
  myport.send_8bit_data(170); // 짝수 LED 켜기 (10101010)
  delay(500);
}

예제 2: LED에 0~F 이진 카운트 표시

#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비트 LED 바그래프로 표시

#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 < 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);
}

예제 4: DIP 스위치 8비트 입력 읽어 시리얼 모니터에 표시

#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);
}

코드

라이브러리 파일은 다운로드만 가능합니다. (미리보기 없음)

회로도

IO 포트가 서로 다른 핀들로부터 직접 8비트 데이터를 입출력하는 구조입니다.

아두이노용 효율적인 8비트 IO 포트 라이브러리 – 디지털 제어 확장

제조공정

  1. 아두이노 나노 비행 시뮬레이터 2020 컨트롤 패널 – LCD & CDI 디스플레이
  2. 마이크로소프트 플라이트 시뮬레이터 2020용 아두이노 스위치 & LED 패널
  3. 학교용 스마트 체온 모니터링 시스템: 정확하고 실시간이며 안전한
  4. 아두이노 64키 프로토타이핑 키보드 매트릭스 - 시프트 레지스터로 핀 절약하기
  5. 아두이노 지문인식 안전구역: 안드로이드/iOS/윈도우10 기기 자동 잠금해제
  6. 아두이노 나노용 고성능 2.8" TFT 실드 – 320×240 SPI 디스플레이
  7. DIY 아두이노 바퀴벌레 제어 시스템 – 3만 원 미만으로 제작하기
  8. 아두이노용 절연 아날로그 입력 회로 만들기
  9. 저렴한 아두이노 호흡 컨트롤러 - USB-MIDI 연동
  10. 아두이노 프로젝트를 위한 스마트 실내 내비게이션 로봇 키트