목록아두이노 (8)
마음 속 하늘은 항상 맑음~!
아두이노 프로 마이크로가 USB장치 만느는데 아주 좋다는 이야길 듣고, 아주 예전에 있었던 아날로그 조이패드를 개조했다. 그냥 연결하는데는 방향 컨트롤이 문제가 있어서 방향키 부분을 잘라내고, 그곳에 KY-023 2축 조이스틱 모듈을 붙이고 스위치 1개를 더 얻었다. 사실 다른 옵션이 없어서 그냥 선택한 부품. 아두이노의 조이스틱 라이브러리를 사용해서 코드를 구성했다. 노이즈 같은 중간값에 흔들림이 조금 있어서 흔들림을 무시하도록 조정하기도 했다(NOISE_X, NOISE_Y). XCV와 YCV는 중심값으로 127근처로 나온다. USB포트의 약간의 전압드랍으로 125가 나온 듯. 3.3V로 나중엔 변경해야겠다. A0와 A1이 각각 X,Y축이고 버튼들은 0V에 눌러진 상태가 된다. 버튼에 대한 핀번호를 따..
앞부분은 간단한 전원부인데 2.5V 레퍼런스 전압을 얻을 수 있는 TL431를 응용하여 5V전압을 만들어낸다. 소전력 회로라서 추천은 하지 않는 방식. TTP223 모듈을 외부에서 연결하는데 이 모듈은 터치에 대한 값을 IO핀을 통해서 내보낸다. ATTiny85는 3번에서 신호를 받는데, 외부 인터럽트 핸들링을 이용한다. 왜냐면 단지 논리값으로 유지되는 시간이 몇초 안되고 TTP223모듈의 B점퍼를 연결해도 딱히 좋은 효과가 나지 않기 때문. 외부 인터럽트 핸들링이 가능한 다른 마이크로 컨트롤러를 사용해도 된다. (편집) Hi Z 풀다운 저항 R6추가로 FET Gate가 Hi Z 상태일 경우에 On이 되고 적은 전류에도 발열이 나는 경우를 방지한다. 아두이노로 작업한 간단한 코드는 다음과 같다. #inc..
아두이노 UNO와 LCD1602A로 만든 간단한 ADC값 측정기. A5~A2까지의 값을 읽어서 보여준다. 눈으로 읽을 수 있으려면 초당 10회 정도로 측정을 제한해야 했다. LCD 1602A의 라이브러리는 LiquidCrystal을 사용했다. LCD1602A의 V0 연결이 중요한데 그냥 1k저항만을 연결해줘도 상당한 밝기의 글자가 보인다. Vdd-V0 값으로 글자 밝기가 정해지는데, GND에 V0를 연결하면 최대 글자 밝기가 된다. LCD1602A는 네이버에서 협신전자(ic114.com)를 검색하면 저렴하게 구입할 수 있다. 공간제약으로 4개의 ADC값만 표시할 수 있었다. 각각의 16x2의 각각의 글자칸에는 메모리 내용이 남아 있어서 공백으로 지워줘야 깨끗하게 숫자가 나타난다. #include /* *..
아두이노가 세상에 나온건 참 고마운 일이다. AVR 칩들의 프로그래밍을 더 쉽게 만들었다. 돌아다니던 중에 8핀의 ATTiny85가 PWM 기능을 가진 것을 확인하고 그 기능이 정말 궁금했다. 많은 인터넷 문서들을 읽은 후에야 그 기능을 제대로 사용할 수 있었다. 일단 아두이노에서 ATTiny85를 사용하기 위해서는 ATTinycore라는 애드온을 넣어야 한다. 그리고 소스 파일에 헤더를 넣고 평상시의 프로그래밍 그대로 코딩을 하면 된다. 주의할 점은 핀 번호가 기존의 아두이노의 정의를 사용할 수 없다. 그리고 ADC 같은 경우에는 특별한 명칭의 A로 시작하는 번호를 analogRead에 사용해야 정상적으로 읽어올 수 있다. 그리고 내부 헤더 소스파일의 정의를 보면 ATTiny85가 millis()나 d..
아두이노로 원격리모트 컨트롤을 만들려니 몇가지 문제에 봉착. >> 과연 꺼진 것은 어떻게 확인할 것인가? 이는 단순하게 전원을 제어할 수 있는 릴레이를 추가. 전원 컨트롤 기능도 넣었다. 하지만 또다른 문제가 생겨났으니. >> 220VAC 5A의 12V구동 텍셀 릴레이의 전원부를 구성과 외부구성 사용으로 인한 아두이노 전원부의 큰 발열. 그냥 연결만 해도 열이 폴폴. 12릴레이는 Vin을 사용하기에 문제가 없지만, 아두이노 자체의 5V와 3.3V의 전원은 문제가 심각했다. 이는 어쩔 수 없이 2개의 전압을 출력하는 새로운 전원 공급기를 제작했다. 그렇게 문제는 해결되는 듯 싶었으나, 말도 못하게 심한 발열이 나는 전원 공급기. 달랑 7805와 3055트랜지스터를 붙였는데, 7805는 열도 안나는데 305..
갑작스레 원격 컨트롤 이야기가 나와서 만들게 된 원격 리모트컨트롤 모듈. 이더넷 보드인 enc28j60을 결합하고 적외선 LED를 3번에 연결하면 끝난다. 이더넷 모듈은 13번부터 8번까지를 사용하는데, 9번과 10번은 연결하지 않는다. 하드웨어는 비교적 간단하고 중요한 부분은 프로그래밍 부분이었다. 일단 라이브러리를 구해야 하는데, https://github.com/shirriff/Arduino-IRremotehttps://github.com/jcw/ethercard에서 받을 수 있다. 주의할 점은 enc28j60은 전원이 3.3v라서 5v를 연결하면 큰일난다. 신호입력은 큰 문제가 없는 것 같고, 칩이 구동시에 약간 따끈한 정도로 아마 발열이 조금 있는 듯 싶다. IR Remote모듈의 수신은 이더넷..
아두이노의 기본툴은 자바 기반이라 답답하고 또 답답한 경우가 많은데, code block for arduino는 이런 문제를 해결해준다. 새로운 프로젝트를 열면 다음과 같은 화면에서 아두이노 프로젝트를 만들 수 있다. 작업을 위한 COM포트를 설정할 수도 있고 등등의 작업이 가능하고 가장 중요한 것은 자동완성이 지원된다는 것. 3글자 정도를 입력하면 자동완성이 뜨고 길게 입력하지 않고 입력이 가능하다. 소스는 기본 아두이노툴과 완전히 같은데 다른 점 하나는 헤더가 윗줄에 표시된다. 이 헤더를 제거하면 아두이노의 정식툴과 같은 소스가 된다. 플래시 업로더가 약간 다른 것 같은데 약간의 차이가 있는 것 같은데 확실히는 모르겠다. 아쉬운 점은 이 툴은 윈도우즈 전용이고 메뉴들이 한글이 아닌 영문으로 몽땅 표시..
간단하게 아두이노를 이용한 쿨링팬 컨트롤. 센서로는 NTC-502F397을 사용한다고 가정하고, 써미스터는 접지쪽에 연결하고 저항 2.2k를 VCC쪽에 연결하는 방식을 택했다. 저항을 계산해내는 방식에 전압에 의지하는 공식은 오차를 동반하는 것 같아 저항을 기준으로 하는 공식으로 변경했다. 이 공식을 사용하면 전압의 변화와 상관없이 저항을 제대로 산출할 수 있다. 저항은 1%오차의 푸르딩딩한 저항을 사용하면 좋다. /* Fan PWM Control by Temperature for arduino uno. */ int PinFanPWM=9; int Pinanalog=0; int Temp_low=20,Temp_high=30; // min, max long x=0, Resister_temp=2200; // 2..