아두이노우노 R4

우노 R4 WiFi 자동 완성 키보드로 사용하기

지구빵집 2024. 3. 20. 07:32
반응형

 

하나를 만들면 100만 개 만들기는 쉽다. 단지 하나를 잘하지 못해서 우리 인생이 그냥 흘러간다. 생각만 해도 아찔하다. 그러니 하나만 해라. 두 개도 필요 없다.

 

아래 아두이노 R4를 키보드로 사용하기 위한 첫 단계는 버튼 하나를 동작시키는 일이다. 하나가 잘 동작되면 키보드 100개를 잘 동작시킬 수 있으니까 말이다. 우선 푸시버튼 한 개를 아래와 같이 연결해 동작하는 코드를 연습한다. 아래 회로도에서 붉은색 LED와 버튼에 연결한 저항은 LED카 켜지는 상태와 버튼이 연결된 상태에서 과도한 전류가 아두이노 GND로 흐르는 것을 방지하는 역할을 한다. 잠깐이라면 상관은 없지만 혹시 모를 위험을 방지하기 위해 연결한다.  

 

 

 

 

위 회로도의 버튼을 누르는 동작에 따른 LED ON, OFF를 테스트하는 코드가 아래에 있다. 이미지라서 미안하지만 몇 줄 안 되니 직접 타이핑하길 바란다. 프로그램 동작은 버튼을 누르면 LED가 켜지는 동작이다.

 

 

 

 

이렇게 하나를 하면 아래 5개도 문제없이 만들 수 있다. 이게 교육이다. 

 

 

바운스나 채터링을 고려하지 않은 회로

 

 

바운스나 채터링을 고려한 회로

 

아래는 버튼 5개를 아두이노 Uno R4 보드에 연결하여 각 버튼이 눌렸을 때 키보드 입력키를 컴퓨터에서 실행하는 프로그램에 보내는 기능을 하는 코드다. 예를 들면 어떤 키를 누르면 실행 중인 윈도 프로그램에 Ctrl-C, Ctrl-V, Ctrl-3 같은 키보드 누른 상태를 전송한다. 순서대로 모든 프로그램에서 복사하기, 붙여넣기, 한글과 컴퓨터에서 개요 1 변환 단축키가 된다.

 

이런 식으로 구현하면 몇 단계로 구현을 하든 모든 키보드 명령과 아무스 명령을 입력할 수 있다. 간단한 명령이라도 자동화를 위한 시작을 만들 수 있다. 윈도우 크롬 브라우저에서 사용하는 단축키를 참고하여 버튼에 부여하면 "그림 선택 - 마우스 오른쪽 키 - 다른 이름으로 그림 저장 - 폴더 선택 - 엔터키(확인) 입력"까지 5번에 일어나는 과정을 버튼 하나로 간단하게 실행할 수 있다. 아래 코드를 참고하기 바란다.

 

 

구현한 코드

 

#include "Keyboard.h"
#include "Mouse.h"

// set pin numbers for the five buttons:

const int startlow = 8;

const int blue = 6;
const int black = 5;
const int yellow = 4;
const int white = 3;
const int red = 2;

void setup() {  // initialize the buttons' inputs:

  pinMode(startlow, INPUT_PULLUP); //when num 8pin goes Low, Start!

  pinMode(blue, INPUT);
  pinMode(black, INPUT);
  pinMode(yellow, INPUT);
  pinMode(white, INPUT);
  pinMode(red, INPUT); // mouse drag

  Serial.begin(9600);
  
  // initialize mouse control:
  Mouse.begin();
  Keyboard.begin();

  while (digitalRead(startlow) == HIGH) {  // 2번 핀 LOW 입력받을때 시작 High 면 정지상태 유지
    delay(100);
  }
}

void loop() {
  
  while (digitalRead(startlow) == HIGH) {  // 2번 핀 점퍼 제거 시 중단 기능, 반드시 추가
    delay(100);
  }

  // use the pushbuttons to control the keyboard:
  
  if (digitalRead(blue) == HIGH) {
    Keyboard.press(KEY_LEFT_CTRL);  //ctrl
    Keyboard.press('3');            //한글과 컴퓨터 개요1 입력
    delay(300);
    Keyboard.releaseAll();
    delay(200);
    
  }
  if (digitalRead(black) == HIGH) {
    Keyboard.press(KEY_LEFT_CTRL);  //ctrl
    Keyboard.press('v');            //c
    delay(100);
    Keyboard.releaseAll();
    delay(500);
  }
  if (digitalRead(yellow) == HIGH) {
    Mouse.press(MOUSE_RIGHT);
    delay(200);
    Mouse.release(MOUSE_RIGHT);
    delay(200);
    Keyboard.press('v');
    delay(200);
    Keyboard.releaseAll();          //c
    delay(500);
    Keyboard.press(KEY_RETURN);
    delay(100);
    Keyboard.releaseAll();
  }
  
  if (digitalRead(white) == HIGH) {
    Keyboard.press(KEY_LEFT_CTRL);  //ctrl
    Keyboard.press('x');            //x
    delay(100);
    Keyboard.releaseAll();
    delay(500);
  }
  if (digitalRead(red) == HIGH) {
    Keyboard.press(KEY_LEFT_CTRL);  //모두선택
    Keyboard.press('a');            //
    delay(100);
    Keyboard.releaseAll();
    delay(500);

    Keyboard.press(KEY_LEFT_CTRL);  //복사
    Keyboard.press('c');            //
    delay(100);
    Keyboard.releaseAll();
    delay(100);
  }
}

 

 

 

참고 자료

엘레파츠 유튜브 영상

아두이노 우노로 키보드 구현하기

푸시버튼을 이용해 LED 제어하기 

 

 

 

 

반응형