이전 글에서 'Stepper.h'는 '.step()'이 동작하는 동안 다른 동작을 할 수 없다는 것을 이야기하였습니다. (참고 : [Arduino] 'Stepper.h'는 두개의 모터를 제어할 수 없다.) 그래서 'Stepper.h'를 약간 개조하여 한번에 여러 개의 동작(스탭모터라던가 led같은 것들)을 할 수 있도록 수정하겠습니다. 연관글 영역 * Stepper library for Wiring/Arduino - Version 0.4 기준 입니다. * * 2023-06-06 기준 최신버전은 5버전입니다 -> Stepper Async 5 * 참고 : [Arduino] Stepper Async 5 - 비동기 스탭 모터 라이브러리 1. 기존 라이브러리 분석하기 저번 글에서도 잠깐 이야기했습니다만 기존 라이..
'Stepper.h'는 아두이노에서 스태핑모터를 다룰 때 기본적으로 사용하는 라이브러리입니다. 예전부터 뭔가 이상하다고 했는데..... 'Stepper.h'의 '.step()'를 호출하면 모터의 동작이 끝나기 전에 다음 코드가 동작하지 않는다는 것을 느꼈습니다. 연관글 영역 1. 테스트해 보기 테스트는 간단합니다. '.step()'의 앞뒤로 LED를 끄고 켜 봅시다. 결선은 이전에 썼던 'ULN2004'을 이용한 스텝 모터 구성에 led만 추가합니다. (참고 : [Arduino] ULN2004(ULN2003)칩을 이용한 스테핑 모터(stepping motor) 제어) 코드는 다음과 같이 심플하게 만듭니다. #include #define LED 13 Stepper stepper(200, 8, 9, 10, ..
아두이노에 직접만든 라이브러리는 추가하는 것은 별거 없습니다. c++스타일로 클래스를 만들고 아두이노 프로그램에서 불러오면 되죠. 이 포스팅에서는 라이브러리를 직접 만들고 내 아두이노 프로젝트에 추가하는 방법을 다룹니다. 1. 테스트용 라이브러리 만들기 헤더에 코드를 몰아넣어도 상관없고 '.h'와 '.cpp'로 나누어 만들어도 상관없습니다. 이번 예제에서는 둘 다 할 수 있도록 코드를 만들었습니다. 1-1. 헤더 만들기 헤더는 다음과 같이 만듭니다. 를 인크루드 하는이유는 아두이노 셈플에 있어서 인데.... 아두이노의 어떤기능을 사용하느냐에 따라 없어도 에러가 나지 않습니다. "arduino.h"도 마찬가지 입니다. 이 예제에서는 "String"를 사용하기 때문에 "arduino.h"가 꼭 있어야 합니다..
오늘 소개할 'SN754410NE'칩은 바이폴라용 칩입니다.이제까지 소개한 칩들은 유니폴라용 칩이였죠.(참고 : 디바이스 마트 - SN754410NE) 요번에 산 모터가 바이폴라인줄 알았는데 막상 받아보니 하이브리드내요 ㅡ.-;;;그래도 바이폴라용 칩을 받은김에 바이폴라 구성을 해봤습니다. 테스트에 사용한 모터는 'FL42STH33-0956A'입니다.하이브리드 모터 입니다.(참고 : 디바이스마트 - FL42STH33-0956A) 1. 보드 구성원래 바이폴라 결선이 유니폴라보다 어렵다고 합니다.어려운건 둘째치고 16개를 다꼽아야 한다는게 문제내요-_-;결선 자체는 고만고만한데....완성된걸 보면 눈으로 선따라가는게 일입니다 ㅋㅋㅋ참고로 유니폴라칩에 바이폴라로 결선하면 아두이노가 죽습니다 ㅎㅎㅎ 보드구성은 ..
특정 구분자를 이용하여 문자열을 자르는 기능을 'Split'라고 합니다. C++용 'Split'를 구현하는 내용은 많은데 아두이노에 바로 적용할 수 없어서 아두이노용으로 다시 만들었습니다. 1. 구현 방법 스플릿을 구현하는 방법은 간단합니다. 1) 한 문자씩 검사를 한 다음 2) 구분용 문자가 나오면 잘라내고 3) 그 이후부터 다시 검사합니다. 이 과정을 반복하여 구분자를 잘라 냅니다. 문제는 언어마다 이 과정이 약간씩 다를 수 있다는 점입니다. 아두이노에서는 'indexOf'로 구분자의 위치를 찾은 다음 'substring'으로 문자열을 잘라내고 그 과정을 반복합니다. 2. 구현 이제 스플릿을 구현해 봅시다. void Split(String sData, char cSeparator) { int nCou..
이전 글에서 다른 칩을 이용하여 스테핑 모터를 제어 했습니다. (참고 : [Arduino] L293D칩을 이용한 스테핑 모터(stepping motor) 제어) 오늘은 아두이노사이트에서도 샘플로 제공하고 있는 'ULN2003'칩을 이용해 보겠습니다. 저 같은 경우 그냥 'ULN2003'대신 'ULN2004'를 사용 하였습니다. 이 칩은 유니폴라 방식의 모터를 구동할 수 있습니다. (무슨 차이가 있는지 모르겠네요 ㅡ,.ㅡ;) 가격은 400원 정도 합니다. (참고 : 동신전자 - ULN2004A ) 사용한 모터는 SE-SM243, FL42STH33-0956A 입니다. 1. 보드 구성 배선은'L293D'칩보다 쉽습니다. 보드구성은 아두이노 샘플과 똑같이 하겠습니다. (참고 : Arduino Web - Step..
아두이노로 데이터를 보내면 'Serial.read()'로 데이터를 읽습니다. 그런데 문자열을 'Serial.read()'로 읽으면 한번에 한글자만 읽어집니다. 1. 문자열 보내기 테스트용 일단 LED 3개를 달아봅시다, 아웃풋 핀은 3,5,6를 사용합니다. (이왕이면 빨간색, 녹색, 파란색으로 세팅합시다.) 1-1. 보드 구성 그냥 LED 3개가 달려있습니다. 1-2. 펌웨어 작성 LED를 데이터를 통해 끄고 켜고를 할것이기 때문에 'switch'문을 사용해야 합니다. #define LED_R 6 #define LED_G 5 #define LED_B 3 String sCommand = ""; void setup() { Serial.begin(9600); pinMode(LED_R, OUTPUT); pinM..
아두이노는 형 변환이 좀 까다로운 것 같습니다 ㅡ,.ㅡ;; 보통 문자열을 정수로 변환하는 메소드나 클래스를 제공하기 마련인데 그런 거 없음;;; 형 변환 관련된 레퍼런스를 다 확인한 건 아니지만 변수 간 형 변환을 바로 할 수 있는 라이브러리는 몇 개 없는 것 같습니다. 1. 아두이노에서 String의 특징 어느 언어든 String은 'char[]'로 구현된다는 점입니다. 'char[]'를 직접 다루는것이 불편하니 'String'클래스를 만들어서 제공해주는 것이죠. 아두이노도 마찬가지 입니다. (참고 : Arduino Reference - StringObject ) 아두이노에서 char는 아스키코드가 들어 있어서 '+'연산을 하면 char이 합쳐지지 않고 덧샘이 됩니다 ㅎㅎㅎ 2. String to ch..
보통 스테핑모터를 제어할때는 모터 드라이버라는 것을 사용 합니다. 모터드라이버의 역활이 몇가지 있긴하지만 모터를 구동하려면 콘트롤러만 있으면 됩니다 ㅡ.-; (그리고 전기 ㅎ) 제가 찾은 자료에는 'L293D'칩을 이용하고 있어서 'L293D'칩을 구했습니다. 이 칩은 유니폴라 방식의 모터를 구동할 수 있습니다. (참고 : adafruit learning system - Arduino Lesson 16. Stepper Motors) 모터는 'FL42STH33-0956A'를 사용 했습니다. (참고 : 디바이스마트 - FL42STH33-0956A) 가격은 7000원 정도 합니다. (참고 : 디바이스 마트 - L293D ) 당연이 다른 칩들도 있는데.... 그건 다음 시간에 알아보도록 하죠 ㅎㅎㅎ 사용한 모터..
'근접센서'라 고도하고 '거리 측정 센서'라고도 하는 센서입니다. 종류에 따라서 측정할 수 있는 거리의 범위가 다릅니다. 필요한 거리범위를 생각해서 구입하셔야 합니다. 저는 10cm~80cm 범위를 측정할 수 있는 거리 측정 센서를 구입했습니다. (참고 : 디바이스 마트 - GP2Y0A21YK[케이블포함]) 1. 보드 구성 선은 아래와 같이 연결합니다. 테스트용 LED를 꼽아도 되는데..... 가변저항보다 값이 불안정해서 그런지 LED가 너무 깜박거려서 밝기를 알 수 가 없습니다;; 2. 펌웨어 작성하기 코드는 '가변저항'과 똑같습니다. (참고 : [Arduino] 가변저항(potentiometer) 이용하여 LED 밝기 조정) #define LED 13 #define ANALOG A0 //가변저항값 i..