반응형
아두이노 우노 R4로 키보드로 업무를 자동화 할 수 있도록 만들었습니다. 쉽게 말해서 하드웨어 매크로 기능입니다.
* 무료로 받아 사용해 보실 분 - 콘텐츠 수집, 문서 반복 작업, 편집 업무 - 답글 달아주세요.
응용 분야
- 장애인 컴터 업무 이용 지원
- 발이나 기타 도구를 사용해 버튼을 누르면 자동 실행 이용
- 소프트웨어 이용을 단계별로 나누어 처리하고 사용자가 간섭하는 부분을 최소화
- 소프트웨어로 구현하는 매크로 키보드는 감지가 가능한데 하드웨어 키보드는 감지가 불가능한 장점
키보드 입력 자동화 구현 버튼
버튼 1. 크롬에서 마우스 우클릭 다른 이름으로 이미지 저장 기능
버튼 2. 한글 드래그 한 것 지우고 ctrl-enter, delete 누르고, 그 줄을 개요 1적용, 엔터 2번
버튼 3. 백스페이스 지우기 세 번 - 2번에서 개요가 줄 넘을 경우 수정
버튼 4. 중간에 이상한 문자 있을 경우 백스페이스로 문자 하나를 지우고 클립보드 내용을 복사 - HTML 코드 수정에 이용
버튼 5. 한글에서 CTRL-F 찾기 누르고 ALT-F 다음 찾기 기능(찾는 단어를 한 번 입력하면 그대로 유지하고 있으니 가능)
아두이노 스케치 코드
#include "Keyboard.h"
#include "Mouse.h"
// set pin numbers for the five buttons:
// https://fishpoint.tistory.com/9357
// https://creatorjoseph.com/268
// https://docs.arduino.cc/language-reference/en/functions/usb/Keyboard/keyboardModifiers/
const int startlow = 12;
const int yellow = 3; //SW1
const int blue = 4; //SW2
const int green = 11; //SW3
const int red = A3; //SW1
const int black = A2; //SW1
const int white = A1; //SW1
void setup() { // initialize the buttons' inputs:
pinMode(startlow, INPUT); //when 12 num pin goes Low, Start!
pinMode(yellow, INPUT);
pinMode(blue, INPUT);
pinMode(green, INPUT);
pinMode(red, INPUT);
pinMode(black, INPUT);
pinMode(white, INPUT);
Serial.begin(9600);
// initialize mouse control:
Mouse.begin();
Keyboard.begin();
while (digitalRead(startlow) == HIGH) { // 12번 핀 LOW 입력받을때 시작 High면 정지상태 유지 - 꼭 필요함
delay(100);
}
Serial.println("Auto Keyboard Start");
}
void loop() {
while (digitalRead(startlow) == HIGH) { // 12번 핀 GND 아니면 동작 안하도록, 반드시 추가
delay(100);
}
//Serial.println("start low");
if (digitalRead(yellow) == LOW){ //마우스 우클릭 이미지 다른 이름으로 저장 끝
Serial.println("yellow Button");
Mouse.click(MOUSE_RIGHT);
delay(100);
Keyboard.write('v');
delay(600);
Keyboard.press(KEY_LEFT_ALT); // 오른쪽 ALT키를 길게 누릅니다.
delay(200);
Keyboard.press('s'); // s 누르기
//delay(200);
Keyboard.releaseAll(); // 둘 다 놓기
//delay(100);
//Keyboard.releaseAll();
Serial.println("operate yellow end");
}
if (digitalRead(blue) == LOW){ // 한글 드래그 한것 지우고 ctrl-enter, delete, 개요 1적용, 엔터 2번
Serial.println("blue Button");
Keyboard.press(KEY_LEFT_CTRL); //왼쪽 컨트롤 키
Keyboard.press(KEY_RETURN);
delay(100);
Keyboard.releaseAll();
Keyboard.write(KEY_DELETE);
//delay(500);
Keyboard.press(KEY_LEFT_CTRL); //
Keyboard.press(51);
Keyboard.releaseAll();
Keyboard.press(KEY_LEFT_CTRL); //
Keyboard.press(51);
Keyboard.releaseAll();
delay(100);
Keyboard.write(KEY_KP_1); //숫자 키패드 1 - END 줄 끝으로 간다
Keyboard.write(KEY_RETURN);
delay(200);
Keyboard.write(KEY_RETURN);
Keyboard.releaseAll();
Serial.println("operate blue end");
}
if (digitalRead(green) == LOW) // 백스페이스 지우기 세 번
{
Serial.println("green Button");
Keyboard.write(KEY_BACKSPACE);
delay(200);
Keyboard.write(KEY_BACKSPACE);
delay(200);
Keyboard.write(KEY_BACKSPACE);
//delay(500);
Serial.println("operate green end");
}
if (digitalRead(red) == LOW) // 백스페이스 문자 하나를 지우고 클립보드 내용을 복사 - HTML 코드 수정에 이용
{
Serial.println("red Button");
Keyboard.write(KEY_BACKSPACE);
delay(200);
Keyboard.press(KEY_LEFT_CTRL); // ctrl-v 붙여넣기 과정
Keyboard.write('v');
delay(200);
Keyboard.releaseAll();
Serial.println("operate red end");
}
if (digitalRead(black) == LOW) // 한글에서 CTRL-F 찾기, ALT-F 다음 찾기(찾는 단어 변하지 않으니까 가능)
{
Serial.println("black Button");
Keyboard.press(KEY_LEFT_CTRL); // ctrl-f 찾기
Keyboard.write('f');
delay(100);
Keyboard.releaseAll();
Keyboard.press(KEY_LEFT_ALT); // alt-f 다음 찾기
Keyboard.write('f');
delay(100);
Keyboard.releaseAll();
delay(500);
Serial.println("operate black end");
}
if (digitalRead(white) == LOW) // 구현 예정
{
Serial.println("white Button");
delay(500);
Serial.println("operate white end");
}
}
반응형
'아두이노우노 R4' 카테고리의 다른 글
아두이노를 이용한 원격 제어 조명 제어 Dimming Light (1) | 2024.12.17 |
---|---|
DS18B20 온도센서 식별 번호 관리 방법 (1) | 2024.12.14 |
Adafruit CH552 QT Py (2) | 2024.12.08 |
Adafruit CH552 QT Py 아두이노 환경 설정 (1) | 2024.12.08 |
키보드 자동화 샘플 코드 2 (2) | 2024.12.04 |
DF Player Mini를 사용한 Arduino와 함께 오디오 플레이어 프로젝트 (0) | 2024.11.20 |
Bluetooth HM-10 BLE module 서로 통신하는 방법 (0) | 2024.11.12 |
DIY 홈보안 시스템 Arduino Uno R4 Wi-Fi키패드 LCD 디스플레이 (2) | 2024.11.02 |
더욱 좋은 정보를 제공하겠습니다.~ ^^