본문 바로가기

코딩124

아두이노 타이머 카운터 인터럽트 사용하는 방법 CTC모드 이번 포스팅에서는 아두이노 타이머 인터럽트 사용방법을 다뤄보도록 하겠다. 이전 포스팅에서는 아두이노 입출력 인터럽트 사용방법을 다뤘으니, 참고하실 분들은 참고하시기 바란다. diyver.tistory.com/137 아두이노 입출력 인터럽트에 대해서 알아보자 attachInterrupt() 이번 포스트에서는 임베디드 시스템에서 제일 중요한 부분 중 하나인 인터럽트에 대해서 알아보도록 한다. 인터럽트란 마이크로컨트롤러프로세서(MCU) 에서 프로그램이 실행 중에 있을때, 예외 diyver.tistory.com 인터럽트는 타이머/카운터 인터럽트와 입출력 인터럽트로 2개가 있다. 입출력 인터럽트는 센서 등의 신호 변화를 감지하여 발생하는 인터럽트라면, 타이머/카운터 인터럽트는 일정 시간마다 발생하는 인터럽트이다... 2021. 2. 23.
[c++ opencv] Labeling(라벨링, 레이블링)으로 객체 카운팅하는 방법 본문 목표 영상처리를 하다보면 연속된 픽셀들이 이루는 그룹을 판단해야 할 상황이 있다. 이런 경우 대상에 이름을 붙여주는 작업이 라벨링 또는 레이블링이라 한다. (라벨링은 한국식 콩글리쉬인듯, 영문권에서는 레이블링 이라고 한다.) Opnecv를 사용하지 않고도 레이블링을 할 수 있지만, 원리를 알아보고 그 사용법을 알아보도록 한다. 키워드 : 라벨링, 레이블링, labeling, connectedComponents(), connectedComponentsWithStats() 레이블링( labeling ) 이란? 인접한 같은 값을 갖는 픽셀끼리 하나의 그룹으로 묶어주는 작업이다. 쉽게 말해서 이진화 이미지에서 경계를 이룬 영역에 이름(숫자)을 부여하는 작업이다. 왜 레이블링이 필요한가? 영상인식 과 영상처.. 2020. 12. 25.
아두이노 버튼 노이즈를 제거해보자, Debounce 이해하기 아두이노를 사용할 때, 버튼입력의 신호가 이상하게 입력될 때가 종종 있다. 버튼이 오동작 하기 쉬운 이유는 접점 불량으로 발생하기 쉽기 때문이다. 이 오류를 해결하는 방법이 Debounce 알고리즘을 사용하는 것이다. 이번 포스팅에서는 이 Debounce 알고리즘을 살펴보고, 어떻게 쓰는 것인지 알아보도록 한다. Debounce 는 쉽게 말해 특정시간이 지난 후 하나의 이벤트만 발생하도록 하는 기술이다. 버튼이 오동작 할 때를 보면 상황이 아래와 같을 때이다. 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 신호를 엄청 빠르게 읽어오는데 0에서 1로, 1에서 0으로 바뀌는 구간이 바로 이상함이 감지되는 구간이다. 도저히 사람 손으로.. 2020. 12. 23.
아두이노 입출력 인터럽트에 대해서 알아보자 attachInterrupt() 이번 포스트에서는 임베디드 시스템에서 제일 중요한 부분 중 하나인 인터럽트에 대해서 알아보도록 한다. 인터럽트란 마이크로컨트롤러프로세서(MCU) 에서 프로그램이 실행 중에 있을때, 예외상황이 발생하면 우선적으로 처리하는 것을 말한다. 아두이노를 가지고 설명하자면, 아두이노는 흔히 LOOP() 함수에서 코드가 반복해서 돌아가게 된다. 그런데 이상하게 구동이 되는 경우 도중에 코드를 멈춰야 한다. 이걸 LOOP() 함수 안에서 구현하려면 코드가 매우 난잡해지고, 즉시 멈추는게 불가능 하다. 멈추더라도 이전 작업이 다 끝나야 멈출 수 있다는 것이다. 코드가 난잡해지면 실수가 발생할 수 있고, 오류가 생길 가능성이 커진다. 그리고 즉시 멈출 수 없어서 그 짧은 시간동안 다른 문제를 야기할 수 있다. 따라서 이런.. 2020. 12. 23.
[c++ opencv] 이미지서치 연산속도 향상, Template Matching 사용하기 #2 연산속도 빠르게 본문 목표 이전 포스트에서 이미지서치 Template Matching을 배웠었다. 이번에는 코딩에서 제일 중요한 연산속도 향상에 대해서 다뤄보도록 하겠다. 어떻게 하면 동일한 결과를 얻으면서도 연산속도를 빠르게 할 수 있는지 알아보자. 키워드 : 이미지서치, Template Matching, 템플릿매칭 알아볼 함수 원형 - 테플릿 매칭 ( matchTemplate ) matchTemplate(src, templ, result, 1); normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat() ); minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() ); matchTemplate( img, templ, resul.. 2020. 10. 25.
[c++ opencv] 이미지서치 기본사용법, Template Matching 사용하기 #1 기본사용 본문 목표 OpenCV를 다루다보면 이미지서치를 사용할 때가 온다. 자율주행 시스템에서도 표지판인식, 번호판 인식에 사용하기도 하고, 컴퓨터 화면에서도 이용하기도 한다. 또한 생산 공장등에서도 사용하기도 한다. 그만큼 중요한 내용인 만큼 어떻게 사용하는지도 알아보도록 하자. 키워드 : 이미지서치, Template Matching, 템플릿매칭 알아볼 함수 원형 - 테플릿 매칭 ( matchTemplate ) matchTemplate(src, templ, result, 1); normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat() ); minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() ); matchTempl.. 2020. 10. 25.
아두이노와 ESP8266으로 wifi에 연결해서 웹서버 만드고, 센서값 출력하기 - 몇년 전부터 아두이노를 통한 IoT 개발이 정말 많이 이루어지고 있다. 자료가 많이 없어서 이렇게 글을 써보려 한다. 아두이노에 ESP8266 모듈을 장착하면 아두이노로 wifi연결을 통해 인터넷에 접속할 수 있다. 그리고 웹 서버도 만들 수 있는데, 이 웹서버를 통해서 센서값 등을 표현시킬 수도 있다. 그 방법을 한번 알아보자. 아두이노, ESP8266 모듈, 또는 아두이노 NodeMCU 같은 ESP8266이 포함된 개발보드, CDS센서 LED 아날로그 0번에서 CDS 센서값을 읽어오고, 주변이 밝으면 LED를 끄고, 어두우면 LED를 키는 회로를 구성하였다. 필자는 NODE MCU를 이용해서 회로를 구성하였다. 아두이노에 ESP8266 wifi 모듈을 연결하면 똑같이 사용 가능하다. 코드 작성에 .. 2020. 10. 23.
오토핫키만의 변수와 연산자 이해하기 이번에는 오토핫키만의 변수체계와 연산자를 알아보도록 한다. 오토핫키는 다른 프로그래밍 언어와 다르게 변수 선언도 없고, 연산자 사용도 좀 다르다. 이 부분은 따로 기억해두어야 코딩하는데 있어서 문제가 생기지 않을 것이다. 그냥 C언어 코딩하듯이 했다가 왜 제대로 작동 안하지? 라는 생각이 들더라도 어디가 문제인지 찾기 힘들테니깐 말이다. 일단 오토핫키 에서도 변수는 다른 프로그래밍 언어와 마찬가지로 값을 저장하는 역할을 한다. 그 값이 숫자일 수도 있고, 문자일 수도 있고, 문자열일 수도 있다. 다만 앞에 자료형을 붙여주지 않는다. 그러면 그 변수가 숫자 정보를 담고있는지, 문자정보를 담고 있는지는 어떻게 알 수 있냐가 궁금해져야 한다. 바로 연산자를 통해서 숫자형태로 저장하거나, 문자형태로 저장한다. .. 2020. 10. 20.
오토핫키로 화면내 이미지를 찾는 방법 이번 포스트에서는 어떻게 보면 오토핫키의 가장 핵심인 화면내 이미지를 검색한는 방법을 다뤄보도록 한다. 매크로를 부정적으로 바라보는 시선은 많다. 하지만 매크로는 단순히 자동 업무 처리 프로그램이라는 관점에서 보면 매우 중요한 녀석이다. 매크로 프로그램이 마우스를 클릭해야하는데, 어디를 클릭해야 할지 모른다면 의미가 없다. 만약 좌표만을 이용해서 마우스 클릭을 했었다면 그 위치가 살짝이라도 바뀔경우 무쓸모가 되어버린다. 따라서 멍청하게 좌표만 이용하기보다는 마치 사람처럼 화면을 인식하고 클릭하는 것이 중요하다고 할 수 있겠다. 사람처럼 화면을 인식하게 하는 명령어를 오토핫키에서 지원해주는데, 그게 바로 ImageSearch 라는 명령어이다. ImageSearch, OutputVarX, OutputVarY.. 2020. 10. 20.
오토핫키로 카카오톡 실행해서 비밀번호 자동으로 입력하기 이번 포스팅에서는 오토핫키를 통해서 특정 프로그램을 실행시키고, 원하는 매크로 작업을 하는 것을 다뤄보도록 한다. PC는 원래 personal computer 로 개인이 사용하라고 만들어진 것이지만, 가족이든 회사사람이든 공유해서 사용하는 경우가 종종 있다. 이런 경우들 때문에 자동로그인이 자동으로 해지되거나 자동로그인이 아예 안 되는 경우도 있다. 예를 들면 네이버는 자동로그인과 매크로를 통해 로그인 하는것이 원천 차단되어 있다. 컴퓨터를 혼자만 쓰는 경우에는 보안에 굳이 신경쓸 필요도 없고, 굳이 자동로그인 되어도 상관 없는 경우가 많다. 그래서 오늘은 오토핫키를 이용해서 특정 키를 누르면 카카오톡이 실행되고, 비밀번호가 자동으로 입력되어 로그인 하는 매크로를 제작해보려고 한다. 일단 제일 먼저 알아.. 2020. 10. 19.
오토핫키로 키보드 입력 매크로 만들기 이번 글에서는 오토핫키를 통해서 자동으로 입력하고자 하는 내용을 입력하는 방법을 다뤄보도록 한다. 매크로라는게 사실 크게 별거 없다. 매크로는 인공지능 이런게 아니라, 이미 정해져 있는 행동을 반복하는 것이기 때문이다. 사람이 하는 반복적인 행동을 줄여주는 것이 목적이므로, 사람이 주로 하는 작업들을 우선적으로 다루고 있다. 좌표계와 마우스 입력까지 다루었으므로, 이번에는 키보드 입력을 다룰 차례다. 키보드 입력은 제일 쉽다. 키보드 입력 명령어는 Send 이다. 사용 방법도 너무 간단하다. 그냥 Send, keys - keys 에 누르고 싶은 키보드를 써 넣으면 된다. 예제 코드 아래를 참고하자. F9:: Send, Hello world return 오토핫키 편집 프로그램인 SciTE4AutoHotke.. 2020. 10. 18.
오토핫키로 메세지창, 알림창 띄우기 이번 포스팅은 오토핫키로 쉽게 메세지창 또는 알림창을 쉽게 띄워보는 방법을 알아보도록 한다. 일단 메세지창 또는 알림창이 왜 필요한지 이유를 알아야한다. 알림이 필요할 때에는 크게 1. 작업이 끝났을 때 2. 도중에 오류 또는 원활한 작동이 안 되었을 때 문제를 확인하기 위해서 3. 현재 작업 상황을 알고 싶을 때 이렇게 세가지 경우라고 볼 수 있겠다. 그렇다면 오토핫키에서는 어떻게 메세지창을 띄울 수 있을까? 알림창을 띄우는 명령어는 MsgBox 이다. 사용방법은 두가지가 있는데, 좀 자세하게 알아보자. MsgBox, Text - Text 입력한 것을 그대로 알림을 띄워준다. MsgBox , Options, Title, Text, Timeout - 옵션을 부여하여 사용자의 버튼 입력을 감지할 수 있다... 2020. 10. 18.
오토핫키로 원하는 좌표 클릭하기 이번 포스트에서는 오토핫키에서 제일 많이 사용할 기능인 원하는 좌표에 마우스 클릭하기 기능을 알아보도록 한다. 제일 기초적인 내용을 담고 있지만, 제일 중요한 내용이므로 잘 이해하고 넘어가야 한다. 일단 알고리즘을 하나 생각해보자. 마우스 좌클릭을 하려면 일단 좌표를 알아야한다. 그런데 좌표는 기준에 따라서 달라지게 된다. 좌표의 기준이 될 수 있는 것은 크게 3가지가 되는데, 1. 스크린 좌표계 2. 창 좌표계 3. 클라이언트 좌표계 좀 자세하게 설명하자면 1. 스크린 좌표계 - 절대 좌표계로 우리의 해상도에 따른 좌표계이다. 2. 창 좌표계 - 창(윈도우)의 좌상단 끝을 원점으로 한 좌표계이다. 3. 클라이언트 좌표계 - 창 좌표계와 비슷한데, 창 틀 영역을 제외한 좌상단 끝이 원점이 된다. 여기서 .. 2020. 10. 18.
[C++ opencv] 웹캠으로 실시간 HSV 값 추출하기 본문 목표 OpenCV를 다루다 보면 색상 인식을 많이 하게 된다. 색상 인식을 하는데 있어서 RGB를 사용해야 할 때가 있고, HSV 색채널을 이용해야 할 때가 있다. RGB는 흰색과 검은색 또는 컴퓨터상의 색을 인식할 때 좋고, HSV 색채널은 실제 일상에서의 색을 인식할 때 좋다. 오늘의 목표는 내가 특정한 색을 인식하고 싶을때, 해당 색의 정보가 어떻게 되는지 OpenCV를 통해서 알아내보는 것이다. 키워드 : cvtColor, HSV 코드 테스트 결과 - CODE #include #include #include //#include #include #include #include using namespace std; using namespace cv; int main(int, char**) { /.. 2020. 10. 18.
오토핫키 최신버전과 전용 편집기(SciTE4AutoHotkey) 설치하기 컴퓨터를 다룰 줄 아는 사람들은 익히 들어봤을 매크로 프로그램인 오토핫키! 오늘은 오토핫키 설치하는 법을 알아보도록 한다. 오토핫키는 오토핫키 명령어를 통해서 각종 매크로 작업을 할 수 있게 해주는 프로그램이다. 프로그래밍 언어를 조금이라도 사용해봤으면 쉽게 사용할 수 있다. 프로그래밍 언어를 한번도 접해보지 않았다고 하더라도, 사용법이 워낙 간단해서 며칠 공부하면 매크로 프로그램을 충분히 만들어 낼 수 있다. 문서작업, 게임 자동사냥 등에 매크로가 많이 쓰이고 있다. 메이저 게임에서는 보통 이런 매크로 프로그램들은 걸러지게 되어있으므로, 좀 더 전문적인 매크로 개발을 공부해야 한다. 문서작업의 경우에는 쉽게 개발할 수 있고, 사용하는데 제약이 거의 없다. 네이버의 경우에는 한동안 매크로 댓글, 댓글 조.. 2020. 10. 18.