-
[비공개] [아두이노] 마법의 주문 if와 else if
일단 스테핑 모터를 돌리는데는 성공 했지만, 그걸 어떻게 센서와 연동시킬 것이냐? 이게 문제였습니다. 기존의 테스트용 소스코드를 가지고 뭔가를 하면 될 거 같은데..... 구체적으로 .... 대체 뭘 어떻게 해야되는 거죠? 그래서 저는 어제 하루종일 관련 지식을 찾으려 인터넷을 뒤졌습니다. 그러다가거의 포기 직전에찾아낸 것이 바로 이 소스였습니다. #include const int stepsPerRevolution = 200; Stepper myStepper(stepsPerRevolution, 6,5); const int DirPIN = 12; const int ClkPIN = 11; const int Sm1PIN = 10; const int Sm2PIN = 9; const int EnvPIN = 8; const int switch1Pin = 7; // switch input 1 const int switch2Pin = 6; // switch input 2 void setup() { // set the switch as an input: pinMode(switch1Pin, INPUT); pinMode(switch2Pin, INPUT); // set all the other pins you're using as outputs: pinMode(DirPIN, OUTPUT); pinMode(ClkPIN, OUTPUT); pinMode(Sm..추천 -
[비공개] [아두이노] 죽은 줄 알았던 모터쉴드가 살아있었다.
미안하다. 여기서 부터는 외계인의 도움을 받을 수 밖에 없었다.ㅠㅠ(더 쉬운 방법을 찾지 못해서 미안.)외계인이 선물한 특수장비로 가공했다. 저는 고장난 아두이노와 모터쉴드를 가지고 서울엘 갔습니다. 판매처 사장님께 보여드렸더니 이리저리 실험을 한 뒤에 아두이노 본체는 못 쓰게 되었고, 모터쉴드는 안 죽었다는 것입니다. 그래서 저는 물었죠. 김진팔: 여기 이 칩이 이렇게 녹았는데도요? 연기도 났다고요. ㅇ.ㅇ; 사장님: 그건 필요 없는 칩이에요. 김진팔: 필요가 없다고요? 사장님: 모터가 전기를 얼마나 소모하는지 측정하는데 쓰는 칩인데 그 기능을 누가 써요? 김진팔: 아! 그렇군요. 그럼 그냥 돌리면 되나요? 사장님: (모터를 달아서 돌려보이며) 살아있잖아요.... 김진팔: 헉! 감사합니다. 그래서 모터쉴드(44,500원짜리)는 살았..추천 -
[비공개] [아두이노]제 아두이노가 맛탱이가 갔어요 ㅠㅠ
하도 쪼꼬매서 찾는데 한참 걸림.녹아서 뭐라고 썼는지 알 수 도 없네 ㅠㅠ인터넷에서 찾은 이 부품의 이름. 저는 프로그램적으로 이 문제를 해결하는데 한계를 느끼고 스텝핑 모터를 쓰기로 했습니다. 그런데 문제는 전원을 얼마나 가해주면 좋은가? 하는 것이었습니다. 모터설명서에는 분명히 3.84V 1.2A 라고 나와있었지만, 실제로 돌려보니 9V에 2A 짜리 전원으로도 택도 없었습니다. 그래서 저는 큰 맘먹고 직류전원 공급장치라는 것을 마련했습니다. (중고 5만원) 30V 까지 전압과 전류를 바꿔가며쏴 줄 수 있는 물건인데 상당히 좋습니다. 드디어 저는 알게되었죠. 12V 정도는 쏴 줘야 최고속도로 무리없이 돌릴 수 있다는 것을요. 성공의 기쁨에 취해서 한번 더 실험을 하려고 전원을 연결했는데 작동이 안되어서 전원공급 장치의 다이얼을 이리저리 ..추천 -
[비공개] [프로그램 공부]천하무적 딜레이 명령어.
그동안 하드웨어에 대해서 많이 이야기 했으니까 소프트웨어 이야기도 좀 할까 합니다. 원래는 소프트웨어를 배우려고 시작한 일인데 아두이노를 하다 보니 어쩔 수 없이 잠깐 배가 산으로 갔었죠. 하드웨어를 같이 다루니까 좋은 점은 제가 코딩한 결과를 직접 볼 수 있어서 학습 효과가 아주 좋다는 점입니다.(게다가 대학에 가서 등록금을 내거나 몇 백만원 짜리 게임엔진을 사는 것 보다 싸고요.) 어쨌든 저는 PIR 센서 입력으로 모터를 돌리고 LED를 켜야만 했습니다. 그런데 문제는 센서의 신호의 길이가 0.05초에 불과하다는 겁니다. 그럼 모터도 0.05초 LED도 0.05초만 켜질 수 밖에 없습니다. 그래서 모터와 LED의 작동 시간을 늘이기 위해 예제프로그램에 나오는데로 delay( 밀리초); 라는 명령어를 썼습니다. 일단 원하는 만큼 모터의 동작 시간을 늘리..추천 -
[비공개] [자작-아답터를 고치다.]퓨즈 교체.
시간은 남아돌고, 할 일은 없고...... 그래서 고장난 아답터를 뜯었습니다. 보통은 그냥 버리고 새로 사겠지만, 저는 놀면 한푼 돈 안들어오는 백수이고, 블로그에 올릴 꺼리도 필요하고 해서 겸사겸사 뜯었습니다. 저는 과열되어서 끊어져버린 코일을 상상하고 뜯었는데 의외의 물건이 나왔습니다. 저 까만 트렌지스터같이 생긴 물건은 1. 과전압 차단.(250 V 이하) 2. 과전류 차단.(2A 이하) 3. 과열 차단. (130 ℃ 이하) 기능을 갖춘 물건이라고 합니다.(우리동네 고수님이.) 저걸 제일 깊숙히 철심 가까이에 넣은 이유는 바로 철심의 온도를 측정해서 그 온도가 130℃가 넘으면 차단 했다가 온도가 떨어지면 다시 복귀시키는 기능이 있기 때문이라고 합니다.(그것도 모르고 저는 고치기 힘들게 만들어서 새로 사게하려고 그랬을 거라고오해를 했습니다.^^) 하지..추천 -
[비공개] [아두이노]또 하나의 실패작.
지난 번에 PIR센서는 움직이는 물체에 달 수 없다는 것을 알게 되었고, 그래서 다른 방법을 생각 해 냈습니다. 1. 센서를 고정시키고 2. 센서를 각기 다른 방향으로 향하게 한 다음 3. 센서가 켜질 때 마다 LED가 켜지고, 동시에 모터도 돌게 하는 것입니다. 4. 그러면 회전하던 카메라 본체에 장착된,CDR(빛을 받으면 전기가 잘 통하는 저항)이 그 빛을 감지하고, 5. 그 순간 모터를 멈추게 하는 거죠. 이 프로젝트 역시 실패. 실패 이유 1. CDR이 옆에 있는 LED의 빛을 받아서 꺼진다. 2. LED말고 다른 조명이 강해도 꺼진다. 3. 그 모든 다른 빛을 차단하고 원하는 LED만 감지하게 하려면, 아주 정교한 가공기술이 필요하다. (또는 레이져.... 아! 그래... 레이져가 있었지... 맞다! 레이져다.) 초보자는 하기 힘들다. 그래서 이 프로젝트는 포기..... 그래도 저는 머릿속으..추천 -
[비공개] [빗물]장마야 빨리 와라.
양파자루가 더 컸으면 냄비 전체를 다 감싸려고 했는대....이걸로 구멍을 뚫었다. 본격적인 장마를 앞두고 최종적으로 마무리를 했습니다. 여태 귀찮아서 미뤄두고 있던 일들입니다. 이제 장마가 기다려집니다. 어떤 사람들은 장마철에 우울증에 걸린다고 하지만, 저는 절대 그럴 일 없을 것 같습니다. 비가 오면 쓸 물이 생기는데 기뻐서 춤을 추면 췄지 우울증이라뇨? ^^ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 그런대 올해는 장마가 늦어서 유감이네요.추천 -
[비공개] [아두이노 - 모터 연결] 납땜을 해야한다.
가짜 카메라를 뜯어서 모터 양쪽의 단자에 전선을 연결합니다. 그걸 쭈욱 끌어서 아두이노에 있는 모터 연결 단자에 연결합니다. 이렇게 해 준 뒤에 센서에 호스를 끼워서 감지 범위를 좁히려고 했습니다.(성공 했는지는 모르겠지만.) 1. 고정된 센서 1이 넓은 범위를 감지하고 있다가. 2. 사람이 감지범위로 들어오면 좁은 범위를 감지하는 센서 2번이 회전하다가 3. 사람에게 걸리면 그 자리에서 모터가 멈추는 것입니다. 이런 것을 피드백 (feedback)시스템이라고 합니다. 참고 링크: http://ko.wikipedia.org/wiki/%ED%94%BC%EB%93%9C%EB%B0%B1 자연계의 생물들은 거의 이 피드백 시스템을 쓰고 있습니다. 이걸 제가 시도한 이유는 1. 일단 이미 달려있는 값 싸고 단순한 모터로 뭔가를 하고 싶었고, 2. 비싼 모터를 써도 정확하게 제어가 안 된다는 말을 들었기 때문입..추천 -
[비공개] [자작]아두이노로 소리를 내 보자.
지난 번에 선물 받은 1만원짜리 중국제 라디오+ 전선 2가닥+ 코드 몇줄 추가로 띠리리리리리(대머리깎아라~♬)를 나오게 했습니다. 물론 센서가 움직임을 감지하면 led가 켜짐과 동시에 소리도 나는 기능입니다. 이렇게 하드웨어를 연결 한 다음에 다음과 같은 코드를 이전 코드에 추가합니다. 이걸 추가한 전체 프로그램 코드는 다음과 같이 됩니다.(굵은 글씨는 추가된 코드) 물론 첨부파일 올립니다. sketch_jun26a.ino int speakerPin = 12; int numTones = 7; int tones[] = { 349, 392, 349,294,294,261,230,}; void setup(){ pinMode(13, OUTPUT); pinMode(2, INPUT); } void loop (){ int val = digitalRead(2); if(val == HIGH){ digitalWrite(13,HIGH); delay(500); digitalWrite(13,LOW) ; } delay(200); if(val == HIGH){ for (int i = 0; i < numTones; i++) { tone(speakerPin, tones[i]); delay(150); } }else if(val == LOW){ noTone(speak..추천 -
[비공개] [아두이노-자작]프로그램을 다운 받자.
http://arduino.cc/en/main/software 일단 위 사이트에 가서 저 빨간 줄 쳐진 부분을 클릭하면 프로그램을 다운 받을 수 있습니다. 그걸 다운받아서 설치하면, 바탕화면에 다음과 같은 아이콘이 생깁니다. 이 아이콘을 클릭하면, 이런 화면이 나옵니다. 여기에 다음과 같이 타자를 칩니다.(타자치기 싫으면 첨부파일 다운) sketch_jun26a.ino 그런 다음 위의 화살표를 누릅니다. 이렇게 하면 잠시 시간이 흐른 뒤에 화면 아랫부분에 프로그램 업로드가 끝났다고 메세지가 뜹니다. 그러면 지난 번 동영상에서 보았던 동작이 되는 것입니다. (프로그램 문구내용 설명) 이제 저 프로그램의 내용이 무슨 뜻인지 말씀 드리겠습니다. 최대한 단순화하면 (실제로는 복잡하지만) 아두이노는 이런 일을 하는 겁니다. 아두이노 안에는 아주 작은 사람들이 들어있습니다.(아두..추천