'Serial.read()'로 읽어서 쓸 때는 이런 현상이 없습니다. 그런데 'Serial.readBytesUntil()'를 사용하여 데이터를 읽었더니 1초 정도 반응이 느린 듯한 느낌을 받았습니다. 아래 스크린샷을 보면 연속으로 명령을 보냈는데 묘하게 다음 요청의 응답이 오는데 1초가량의 텀이 있는 것 처럼 보입니다. 문제없는 스크린샷을 보면 좀 더 명확해집니다. 이건 각 명령어의 텀이 없습니다. 1. 원인 문서를 확인해 보았습니다. arduino reference - Serial.readBytesUntil() 문서에 보니 1) 결정된 길이를 읽거나(지정된 버퍼를 채울 때까지) 2) 지정된 시간이 초과하거거나( Serial.setTimeout() ) 3) 지정된 종결 문자가 올 때(함수별로 차이 있음)..
Stepper Async 5 (Library for Arduino) 아두이노 'Stepper' 라이브러리를 수정하여 스텝 모터를 비동기식으로 구동할 수 있게 해주는 라이브러입니다. 소스 코드 : github - dang-gun/Arduino_StepperAsync5 기존의 'Stepper' 라이브러리는 동기식으로 동작하기 때문에 스테퍼 모터가 동작하는 동안에는 다른 동작을 할 수 없습니다. 이 라이브러리는 이러한 단점을 수정하고 스텝 모터가 실행되는 동안 다른 작업을 할 수 있게 해줍니다. 연관글 영역 Index 주요 기능 시작 하기 테스트 해보기 문서 수정 이력 기여 방법 저자 및 기여자 라이선스 주요 기능 'Stepper' 라이브러리와 동일한 선언 구조 'Stepper' 라이브러리와 동일한 사용 방법..
Button Click Check 아두이노에 연결된 버튼의 상태를 확인하기 위한 라이브러리입니다. 소스 코드 : dang-gun/Arduino_ButtonClickCheck 상태가 변하지 않았을 때, 상태가 변했을 때의 출력을 다르게 해줍니다. 이 상태를 이용하여 버튼의 상태가 변했을 때 한 번만 동작하도록 쉽게 프로그래밍이 가능합니다. 연관글 영역 목차 주요 기능 시작 하기 테스트 해보기 문서 수정 이력 기여 방법 저자 및 기여자 라이선스 주요 기능 버튼의 마지막 상태 저장 버튼의 상태 변화 감지 시작 하기 깃허브의 'Releases'에서 파일을 다운로드하거나 'ButtonClickCheck.h', 'ButtonClickCheck.cpp'를 생성하고 소스를 복사하여 넣어주세요. 이후 아래 설명에 따라 ..
저가 아두이노 호환 보드인 "Elegoo Nano"를 샀습니다. 스케치를 업로드했더니..... avrdude: stk500_recv(): programmer is not respondingavrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x30avrdude: stk500_recv(): programmer is not respondingavrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x30 1. 오류의 원인'Elegoo Nano V3.0'의 부트로더(Bootloader)가 예전 버전이라 기본 프로세서의 보드레이트(Baudrate)와 다르다고 합니다.그래서 프로세서를 예전 버전으로 설정..
직접 라이브러리를 만들어서 수동으로 넣었는데..... "[라이브러리].h"를 위한 복수개의 라이브러리가 발견되었습니다. 1. 생성자가 잘못된 경우직접 만든 라이브러리에서 문제가 생겼다면 거의 이 문제입니다. 생성자는 클래스 이름과 같아야 하는데 실수로 잘못 넣은 경우죠. 예를 들면 이런 경우입니다. 클래스 이름은 'StepperMulti5'인데 생성자 이름이 'Stepper'로 잘못 들어가 있습니다.이 오류는 수정해주시면 됩니다. 2. 실제로 중복된 경우실제로 라이브러리가 여러 군데 있는 경우가 있습니다. 확인해봐야 할 경로는 1) 아두이노가 설치된 폴더의 'libraries'폴더2) 'C:\Users\[사용자 계정]\AppData\Roaming\Arduino\libraries' 폴더3) 내 문서에 'A..
* 공개프로젝트로 전환된 포스팅입니다. * 참고 : [Arduino] StepperAsync5 - 비동기 스탭 모터 라이브러리 저번에 "한 번에 2개 이상의 스테핑 모터를 제어하기"를 했었는데....... 'Stepper'라이브러리가 업데이트 많이 됐군요. ㅎㅎㅎ 버전에 맞춰 업데이트해보았습니다. 연관글 영역 이전 글에서 'Stepper.h'는 '.step()'이 동작하는 동안 다른 동작을 할 수 없다고 이야기했습니다. (참고 : [Arduino] 'Stepper.h'는 두개의 모터를 제어할 수 없다. ) 그래서 'Stepper.h'를 수정한 라이브러를 작성하고 사용하는 방법에 대한 포스팅입니다. 기존 'Stepper'를 수정하는 방법은 이전 글에서 다뤘으므로 이 포스팅은 수정된 코드만 나열합니다. 1...
* 공개프로젝트로 전환된 포스팅입니다. * 참고 : [Arduino] ButtonClickCheck - 버튼 상태 저장 및 확인 라이브러리 버튼 처리가 귀찮아서 라이브러리를 만들었습니다. 버튼을 누르고 있을 때, 누르지 않을 때, 눌리고 첫 이벤트를 구분하여 리턴해주는 라이브러리입니다. 버튼이 플로팅(floating)상태라면 당연하게도 제대로 동작하지 않습니다. (참고 : [Arduino] 버튼(Button)의 값이 정확하지 않을때 - 풀 업(Pull Up), 풀 다운(Pull Down) 사용 방법 ) 연관글 영역 1. 버튼 구현하기 아두이노는 게임 루프처럼 무한루프가 돌면서 여러 가지 상태를 판단하여 동작하게 됩니다. 이 상태에서 그냥 버튼을 눌렸다고 동작을 시키면 버튼이 몇 번 눌렸는지, 언제 눌렸는..
간만에 만들 게 있어서 아두이노를 연결하고 버튼을 연결했는데..... 간단하게 코드를 만들어서 올리고.... #define Button01 2 void setup() { Serial.begin(9600); pinMode(Button01, INPUT); } void loop() { Serial.println(digitalRead(Button01)); delay(10); } 버튼을 누르지 않았을 때 입력값이 이상합니다??? 연관글 영역 1. 플로팅(floating) 버튼을 누르지 않고 있을 때 값이 랜덤하게 나오는 것을 플로팅(floating)상태라고 합니다. 이 상태에서는 버튼값이 0이나 1이 아닙니다. ( 참고 : stackExchange - Button state changing randomly, Ar..
아두이노 보드를 우분투에 연결했는데......이놈 포트 이름이 뭐로 잡힌 거지 ㅡ,.ㅡ;;; 포트이름이 어디있나? 윈도우에서야 장치관리자를 통해서 보면 되는데 우분투에서 장치관리자 대용으로 제가 쓰는 프로그램에는 그런 정보가 전혀 나오질 않습니다;;; (참고 : [Ubuntu 12.xx] 장치관리는 어떻게 하지?) 아두이노를 설치하여 확인하기 그냥 우분투에 아두이노를 연결하고 아두이노 프로그램을 설치해서 확인했습니다. ㅜㅜ 'dmesg'명령어 사용 구글링을 해보니 시리얼 포트정보는 'dmesg'를 해보면 안다고.... 그래서 해보니 리스트가 눈 돌아가게 나오내요 ㅎㅎㅎㅎ 시리얼 포트가 잡히면 tty라는 이름이 붙어서 동작하게 됩니다. 그러니 'tty'가 포함된 포트를 검색하기위해 아래와 같이 명령어를 입..
서보모터는 별도의 드라이버 없이 아두이노의 라이브러리만 이용하여 동작시킬 수 있습니다. (엄밀히 말해서 서보모터 안에 컨트롤러가 들어있습니다.) 테스트에 사용한 서보모터는 'DGS-288'입니다. (참고 : 스카이홀릭 - DGS-288 - Digital Servo) 1. 서보 모터 동작시키기 일단 서보모터를 연결해 봅시다. 1-1. 보드 구성 그냥 아두이노에 연결해도 됩니다. 전 포스팅을 하는 입장이라 다른 글과 비슷한 화면을 보여주기 위해 브레드보드를 사용한 것입니다. 1-2. 펌웨어 작성 서보모터는 라이브러리를 이용하면 간단하게 제어할 수 있습니다. #include int potPin = 0; int servoPin = 9; Servo servo; int nSwitch = 0; int nAngle =..