BASIC4MCU | 질문게시판 | 답변 : qr코드 스캐너에서 출력된 값을 서보모터에 활용
페이지 정보
작성자 안두이노 작성일2019-11-22 17:20 조회6,608회 댓글2건본문
#include <usbhid.h>
#include <usbhub.h>
#include <hiduniversal.h>
#include <hidboot.h>
#include <SPI.h>class MyParser : public HIDReportParser {
public:
MyParser();
void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
protected:
uint8_t KeyToAscii(bool upper, uint8_t mod, uint8_t key);
virtual void OnKeyScanned(bool upper, uint8_t mod, uint8_t key);
virtual void OnScanFinished();
};MyParser::MyParser() {}
void MyParser::Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf) {
// If error or empty, return
if (buf[2] == 1 || buf[2] == 0) return;for (uint8_t i = 7; i >= 2; i--) {
// If empty, skip
if (buf[i] == 0) continue;// If enter signal emitted, scan finished
if (buf[i] == UHS_HID_BOOT_KEY_ENTER) {
OnScanFinished();
}// If not, continue normally
else {
// If bit position not in 2, it's uppercase words
OnKeyScanned(i > 2, buf, buf[i]);
}return;
}
}uint8_t MyParser::KeyToAscii(bool upper, uint8_t mod, uint8_t key) {
// Letters
if (VALUE_WITHIN(key, 0x04, 0x1d)) {
if (upper) return (key - 4 + 'A');
else return (key - 4 + 'a');
}// Numbers
else if (VALUE_WITHIN(key, 0x1e, 0x27)) {
return ((key == UHS_HID_BOOT_KEY_ZERO) ? '0' : key - 0x1e + '1');
}return 0;
}void MyParser::OnKeyScanned(bool upper, uint8_t mod, uint8_t key) {
uint8_t ascii = KeyToAscii(upper, mod, key);
Serial.print((char)ascii);
}void MyParser::OnScanFinished() {
Serial.println(" - Finished");
}USB Usb;
USBHub Hub(&Usb);
HIDUniversal Hid(&Usb);
MyParser Parser;void setup() {
Serial.begin( 115200 );
Serial.println("Start");if (Usb.Init() == -1) {
Serial.println("OSC did not start.");
}delay( 200 );
Hid.SetReportParser(0, &Parser);
}void loop() {
Usb.Task();
}
서보모터 구동
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
}void loop()
{
for (int i = 0; i < 120; ++i)
{
myservo.write(i);
delay(15);
}
myservo.write(0);
delay(1000);
}
시리얼모니터에 표시되는 값에 따라, 숫자로 예를 들면 모니터에 출력된 데이터가 3이면 3으로 지정한 서보모터가 동작하도록 하고자 합니다.
댓글 2
조회수 6,608master님의 댓글
master 작성일qr코드 스캐너 예제소스가 있는 사이트 링크를 적어보세요
안두이노님의 댓글
안두이노
https://www.mcuboard.com:14063/shop/board/view.php?id=WIKI&no=14
예제는 없구 모듈 구매한 사이트에서 barcode_test파일 이용하였습니다.