일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 군산 구경
- 아두이노
- 완도 명소
- 너무작잖아...
- 128x64
- 비트맵 띄우기
- oled
- 목포 박물관
- 눈에보양
- 해양문화재연구소
- 시퀀스 프로그램
- u8glib
- 이럴때아니면언제이런거보겠어
- 군산명소
- 완도 구경
- 익산 보석 박물관
- HC-06
- 신안선
- 해양 전시회
- 당일치기여행
- 익산 명소
- HC-06 사용법
- 보석 관람
- 목포명소
- 군산
- 좀더큰규모일줄알았다규..
- 시퀀스 그리는 프로그램
- 대중음악박물관
- 아두이노 블루투스
- 목포
- Today
- Total
목록시퀀스와 아두이노 (14)
RS's Travel & Electronic
유튜브에서 서동남 님 채널의 방송을 보고 따라서 만들어 봤습니다. https://www.youtube.com/watch?v=dk8t2OwgdQY 기본적인건 똑같이, 대신 컨트롤박스는 비싸니까 그냥 버튼을 나사못과 케이블 타이로 고정시켜놨습니다. 회로도입니다. PLC는 LS산전의 XBC-DR20SU 입니다. 제어판용 합판은 처음은 450x500짜리 사다가 썼는데 공간이 좀 남길래 살짝 잘라서 썼습니다. 가시 찔릴까 봐 모퉁이는 종이테이프로 마무리했습니다. 단자대를 14p로 해야 됐었는데.. 제가 이걸 만들려고 부품 알아볼 때 가장 싸게 파는 곳에서 14p만 품절 상태여서 원래 가지고 있던 4p단자대를 붙여서 14p로 사용했습니다. 부품명 단가 개수 가격 PLC XGB XBC-DR20SU 215000 1 2..
블루투스 페어링이 불시에 끊어지는 이유는 크게 세 가지를 들어볼 수 있습니다. 1. 상대편의 전원이 OFF된다. 2. 내쪽이 OFF 된다. 3. 두 장치의 간격이 통신 유지 거리보다 더 멀어진다. 어느 쪽도 아두이노 입장에서는 블루투스가 끊어졌는지 유지되고 있는지 알 수가 없어요. 그래서 페어링이 유지되고 있을 경우의 코드를 계속 실행하고 있을 겁니다. 허공에 삽질하는 거죠. 페어링이 끊어졌다면 끊어졌다고 사용자한테 알려주고 유지되고 있을 경우에만 실행하는 코드는 실행하지 않도록 해줄 필요가 있습니다. 방식을 대충 설명하자면, 페어링이 유지되고 있는 한, 어떠한 정해진 신호를 계속해서 서로 주고받게 합니다. 그 '신호'는 단순하고 짧으면서 다른 이유로 사용하지 않아야 하죠. 그리고 어떠한 이유로 페어링이..
HC-06을 slave모드로 바꿔놓고 스마트폰 앱과 연결해서 사용하면 송신과 수신이 다 가능합니다. 보통은 공장 출고 당시에 slave가 기본 모드니까 손 안 댔다면 바꿀 필요가 없지만요. 송수 신중에 송신의 경우는 어떠한 트리거.. 가령 사용자에 의해 버튼이 눌렸다든지, 센서의 값이 일정량을 넘었다던지 할 때 보내게 되므로, 따로 예시를 들지 않을 겁니다. 그때그때 다르거든요. 수신은 송신과 다릅니다. 수신을 담당하는 함수는 들어올 수 있는 모든 경우의 신호들에 대해서 준비가 되어 있어야 하죠. 그래서 송신과 달리 수신의 경우는 기본형이라고 할 것이 있습니다. 코드에서 설명하죠. #include #define BLUE_TX 2 #define BLUE_RX 3 SoftwareSerial hc06 (BLU..
시제품 제작일을 하면서 가장 많이 사용한 모듈이 블루투스 모듈 HC-06입니다. 이번 포스팅부터 HC-06을 제가 사용하면서 알게 된 몇몇 노하우들을 게시하고자 합니다. 제원이나 연결법등의 이야기는 생략하겠습니다. 그런 내용은 다른 분들 블로그에 많이 있거든요. 생략한다고는 했지만 그래도 일단 짚어야 될게 두 가지 있는데, 이번 포스팅에서 이야기하고자 합니다. 먼저 아두이노에 연결해서 AT 테스트를 해도 반응이 없을 때입니다. 보통 이걸 사용할 때 SoftwareSerial 객체를 만들어서 사용하실 텐데, 객체 생성자 SoftwareSerial (TX , RX) 인자를 전달할 때 첫 번째 인자 TX는 HC-06의 TX핀과 연결된 아두이노의 핀 번호입니다. 두 번째 인자 RX는 HC-06의 RX핀과 연결된..
비트맵 이미지 출력하기의 요령으로 출력하는 방법입니다. 우노급 아두이노에서 한글 폰트를 구현하는 것은 용량 부담이 큽니다. 구조도 복잡하고요. 시제품을 제작하려는데 화면출력코드 만으로 용량을 다 잡아먹어버리면 곤란합니다. OLED에 한글 인터페이스를 구현하려고 할 때 의외로 많은 글자가 필요하지 않기도 합니다. 제가 소형 가전 시제품의 사용자 인터페이스를 OLED로 만드는데 한글표시를 해야 될 경우 사용한 방법을 제가 예전에 의뢰받아서 제작했던 물건의 예를 들어 설명하고자 합니다. 의뢰 내역은, 약품을 분사하는 장치입니다. 최대 10번의 분사 횟수가 주어집니다. 분사할 때마다 리미트 스위치가 한번 눌리게 되고, 눌리면 횟수에서 1이 감소합니다. 화면에는 분사 횟수의 잔여량이 표시되어야 합니다. 단, 영문..
비트맵 이미지 출력하는 것이 이번 포스팅의 내용이지만, 사실 이 테크닉으로 나중에 한글 출력을 해보는 것이 본 목적입니다. 이 포스팅에서는 이런 방법이구나 라는것만 보시면 될 거 같네요. OLED와 아두이노 선 연결은 일단 여기 참고하시고, 버튼은 연결 안하셔도 됩니다. 먼저 출력해야 할 이미지를 구해야겠죠. 자, 우리는 이 이미지를 출력하려고 합니다. 감명 깊은 포스터입니다. 꼭 출력해야겠다는 사명감마저 느껴지네요. 그런데 이번에 사용할 OLED 디스플레이는 고작 128x64의 해상도를 가지고 있을 뿐입니다. 자체적 이미지 스트레칭 기능 따위 없죠. 따라서 이쪽에서 직접 이미지를 축소시켜줄 필요가 있네요. 가로변이 긴 장치니까 이미지를 왼쪽으로 돌려주고, 크기 조정을 눌러서 픽셀 단위로 조정해줍니다. ..
센서 두세 개에 팬 서너 개 정도 달고 LED좀 꼽아주면 제품이 가지게 되는 상태 스탯은 여러 가지가 생깁니다. 센서에 전원을 투입할지 안할지, 센서 값에 보정을 할지 안 할지, 센서의 값에 의해서 팬이 돌지 아니면 사용자가 매뉴얼로 팬을 켜고 끌지, LED를 켤지 안 켤지.... 등등등 이런 정보들이 생기면 당연히 그것을 제품 사용자가 관찰하고 경우에 따라 조작할 수 있게 해 줘야 되죠. LED와 버튼으로는 한계가 있어요. LED가 소모시키는 아두이노 핀 여유도 문제고요. 이럴 때 디스플레이 장치에 메뉴를 구성하고 메뉴에 따라 아두이노 내부의 값을 조작할 수 있게 해 주면 좋습니다. 이번엔 U8 GLIB 라이브러리로 128x64 OLED 디스플레이에 이런 사용자 메뉴의 원형이라 할만한 샘플을 구성해보겠..
지난번 버튼 함수 포스팅의 다섯 번째 함수와 U8 GLIB라는 라이브러리를 사용해서 128x64 OLED디스플레이에 띄운 문자를 마치 로그라이크 게임 플레이하듯이 움직여봅니다. 아래는 준비물입니다. 128x64 OLED I2C 디스플레이 https://mechasolution.com/shop/goods/goods_search.php?searched=Y&log=1&skey=all&hid_pr_text=&hid_link_url=&edit=&sword=OLED&x=0&y=0&_idn= 한국에서 바로 살 수 있는곳 중에서는 메카 설루션이 좀 싼 거 같습니다. 개중에는 디스플레이 윗줄은 노란색, 아랫줄은 흰색 등 투칼라로 만들어진 디스플레이가 있습니다. 색 변경은 불가능한 모델이니까 미리 확인하고 사세요. 저는 ..
저는 SPI 통신보다 I2C방식을 더 선호합니다. 자주 사용하는 아두이노 모듈이 프로 미니라서 선 두 개(SDA, SCL)로 통신이 가능한 I2C가 좀 더 사용하기 부담이 덜하거든요. 속도가 좀 딸리기는 하지만 그렇게 신경 쓰일 정도도 아니고요. I2C 통신 방식을 지원하는 장치는 반드시 주소를 가지고 있습니다. 장치의 메이커에서 공개를 하는 게 당연하지만, 메이커 파악 불가능한 중국제 짭퉁은 어디서 확인하는지도 모르는 경우가 태반이라서, 이 코드로 돌려본 뒤에서야 장치의 I2C주소를 알 수 있습니다. #include void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Se..
아두이노에서 흔히 쓰이는 택트 버튼. 푸시버튼의 일종입니다. 위의 기판은 푸시버튼을 이용한 테스트를 해야 될 때를 위해서 미리 만들어놓은 보드입니다. 아두이노로 시제품을 만드는 일을 하다 보면, 여러 가지 이유로 제품에 버튼을 한 개밖에 달 수 없는 경우가 있습니다. 그럴 땐 한 개의 버튼으로 여러 동작을 할 수 있게 해 줘야 됩니다. 예를 들어 한번 짧게 누르면 A동작을, 1초 이상 누르고 있으면 B 동작을, 2초 이상 누르고 있으면 C동작을, 더블클릭(빠르게 두 번 누르기)을 했을 경우 D동작을. 또 버튼을 누르는 순간 동작하기를 원할 때도 있고, 버튼을 누르고 떼는 순간 동작하기를 원하는 경우도 있겠죠. 아니면 버튼을 여러 개 달긴 했지만 각 버튼마다 동작 트리거가 각각 다르게 발생하기를 원하는 경..