3 Results for '취미의 세계/Arduino'

  1. 2010.10.21 Arduino+Ethernet = Physical computing with Silverlight! (7)
  2. 2010.10.19 3축 가속 센서... 계속 실패중... ㅠ.ㅜ (35)
  3. 2010.08.20 Opto-interrupter 회로 삽질기 (10)

음핫핫핫! 드디어 아두이노로 실버라이트와 연결 거기에 무려 3축 센서(!)까지 연결을 완료했습니다!
정말 오랫만에 느껴보는 새로운 영역을 개척했을 때의 기쁨이네요. 물론 언제나 그 시작은 심~~~히 하찮지만요.

어제 올렸던 징징글... 올리자마자 뭐가 문제였는지 깨달음을 얻었습니다.
역시 징징글은 올리고 봐야해.

문제는 바로...
'낫놓고 기역자도 모른다!'
네, 기껏 레퍼런스 데이터 시트 받아서 끙끙거리면서 봤지만 중요한 표기법을 놓쳤던거죠.
그것은...


두둥! 바로 네거티브 입력 표기를 간과했다는 거 -_-;
그러니까 칩셋 데이터 시트에 보면 핀 이름에 윗줄이 그어져 있는 경우가 있는데,
이건 그 이름을 동작시키기 위해 -입력(디지털 신호일 경우 보통은 Ground)을 필요로 하다는 거죠.

...아놔... 아무리 제대로 공부한건 아니라고 해도 이건 너무나도 기본적인거였는데 -_-;
암튼 데이터 시트 제대로 안보고 Sleep Mode니까 뭔가 신호를 줘야 재워줄 수 있을거라고 착각했는데요,
잘 생각해보니 Sleep일 때 전원을 인가하는건 엄청 비효율적인거잖아요. 이런 깊은 뜻이!

여튼 문제는 너무나도 간단하게도 Sleep Mode에 +전원을 연결했을 뿐이고,
이제 동작 잘 할 뿐이고!

사실 요즘 이걸로 만들고 싶은게 생겼는데 나름 데드 라인이 있는거라 시간관계상 자세한 포스팅은 어렵지만,
동작 구동 영상을 올립니다.
뿌듯한 점은, 바로 아두이노와 실버라이트를 TCP 소켓으로 연결할 수 있는 가능성을 증명한 것이지요.
네, 실버라이트에서 아두이노의 신호를 입력받아 오브젝트를 제어할 수 있고 반대로 실버라이트에서 아두이노로 신호를 보내 장치를 제어할 수도 있죠.

무지 간단한 데모지만 3축 센서 입력을 받아 실버라이트 오브젝트를 제어하는 영상이에요.
웹캠으로 찍어서 화질은 더럽습니다. ㅎㅎ


아자아자아자자자자!
P.S.
근데 이거 카테고리가 아두이노여 실버라이트여?
저작자 표시 동일 조건 변경 허락
신고
Posted by gongdo
음... 디바이스 마트에서 3축 가속 센서를 사다 아르두이노랑 연결해보고 있는데...
분명히 첫날 납땜도 안하고 대충 잡고 연결했을 때는 되길래 아무 걱정 없이 몇 일후에 납땜을 해봤더니 전혀 안되는군요. 아오.
http://www.devicemart.co.kr/mart7/mall.php?cat=049005000&query=view&no=21777
문제의 그 센서.

요놈 좋은게 필요한 주변 회로가 다 구성이 되어 있어서 VDD에 +3.3V 인가만 하면 되고 아두이노도 자체 3.3V 출력이 있어서 그냥 꽂기만 하면 될 줄 알았더니 쉽지는 않군요.
분명 전원은 들어오는데... X,Y,Z에서 > Analog 0,1,2로 연결한 곳으로 아무 신호도 안나오고. 음. 뭐가 문젤까.

음... 이제와서 다른 센서를 시도하기에도 좀 무리가 있고 해서.
남은 건 삽질뿐... ㅠ.ㅜ 
저작자 표시 동일 조건 변경 허락
신고
Posted by gongdo
요즘 아두이노 버닝 중이에요.
아두이노 관련 첫 글이라 약간의 잡설(=뻘소리)을 좀 해야겠어요. 방해 안되게 접어둘게요. :)

더보기


여튼, PlugHouse에서 Opto-sensor라는 물건을 팔더군요. 용도는 물체의 접근을 감지하는 것.
아두이노를 접하고 만들어 보고 싶은게 충돌 감지를 이용한 '무언가'인데다가 가격도 꽤 싼편이라 올타꾸나 하고 질렀는데...
받고 나니 좌절이더군요. 데이터시트가 있지만 이건 뭐 낫 놓고 기역자도 모른다는 딱 그 꼴.

그래도 수 차례 삽질을 한 끝에 (저는) 만족할만한 결과를 뽑아주는 회로와 스케치 코드를 만들었어요.
이 회로에서 저항들이 무엇을 의미하냐고요?

몰라요;

그냥 이 회로는 수십번에 걸친 와이어링 끝에 원하는 동작이 나왔을 뿐...
저항값 수식 계산 한 번 안했지요; 핫핫핫.
그래서 말인데 혹시 이거 제대로 볼 줄 아는, 댓글 남겨 주실 분... 안생기겠죠? 네 뭐.

여기서 주의해야 할 점은 OSG-105LF라는 부품의 위치인데요,
회로도에서는 1번 핀을 기준으로 2, 4, 3 순서이지만 실제 부품상의 배치는 1, 2, 3, 4 라는 점이에요.
무슨 얘기냐면 실제 부품은 아래와 같이 생겼다는 거죠.
부품을 자세히 보면 약간 둥그스러운 부분이 딱 한 귀퉁이가 있는데 거기가 1번이에요.

암튼 위의 회로도와 부품 핀 번호를 참고해서 브레드보드에 회로를 대충대충 구성하고,
- Vcc는 아두이노의 아날로그 5v 출력으로
- Ground는 아두이노의 아날로그 Gnd로
- Signal은 아두이노의 아날로그 0번 입력으로 연결하면 돼요.

여기에 출력 확인을 위해 LED를 9번 핀에 연결했어요. (요부분은 아두이노 책에 나온 PWM 기초 회로 5-4와 동일)

다음 스케치 코드는,

const int analogInPin = 0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

const int fromLow = 0;
const int fromHigh = 700;

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);           
  // map it to the range of the analog out:
  outputValue = constrain(map(sensorValue, fromLow, fromHigh, 0, 255), 0, 255); 
  // change the analog out value:
  analogWrite(analogOutPin, outputValue);          

  Serial.print("sensor value / output value: " );                      
  Serial.print(sensorValue);
  Serial.print(" / ");
  Serial.println(outputValue);

  // wait 10 milliseconds before the next loop
  // for the analog-to-digital converter to settle
  // after the last reading:
  delay(10);                     

}

이렇게 하면 9번 핀에 연결한 LED가 0번 핀에 입력으로 들어온 Opto-interrupter의 값에 따라 밝아졌다 어두워졌다 할거에요.
동시에 시리얼 포트로는 입력으로 들어온 값이 표시되겠죠?
센서에 따라 값이 조금 다르게 들어오겠지만 제 경우는 map()함수에서 사용할 fromHigh값을 700 정도로 잡았을 때 가장 적당한 범위로 사용이 가능했어요.

여기에 이르기까지 많은 실패와 시행착오가 있었으니...

수 많은 실패작들;;
잘 보면 아시겠지만 되도 않는 회로를 그냥 막 가져다 붙였을 뿐...;;;

최종적으로 제대로 동작하는 회로.
그러나 저 저항값들이 왜 그래야 하는지는 이유가 없으니... 갑자기 부품이 파손되어도 전혀 이상하지 않을 일!

겨우겨우이어 맞춘 회로. 끝내고 나니 별거 아니네요. -_-;

저작자 표시 동일 조건 변경 허락
신고
Posted by gongdo


티스토리 툴바