로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 공개소스
작성자 avrtools™        
작성일 2008/09/20
Link#1 61 (Down:242)
ㆍ추천: 0  ㆍ조회: 4142   
  아듀이노 Wii 프로세싱
참조 : http://play-collective.net/blog/archives/61
제목 :  Arduino to 3D Studio Max
 
로봇의 팔을 위한 서보제어로 WiiChuck을 어떻게 쓸 수 있는지 3D로 보여주는 예로,
내가 가장 잘 안다는 이유만으로, 3D Studio Max (3DS)로 정햇다.

 
 
아듀이노의 데이터를 어떻게 변환하는가?
3D Studio Max는 좋은 SDK와 많은 자료가 있다.
그러나 직렬포트의 플러그인 코드는 나에게 너무 어려웟다.
결국 프로세싱의 곤경에 빠졋다.
아마도, 나는 직렬포트로 통신할 수 있는 MaxScript에 넣는 것을 검토할 것이다.
 
다른 제어장치를 정의해서 보기 원하는 목표를, 여러가지 방법으로,
추종장치에서 사용하고 있는, 3DS는 목표를 제어하는 좋은 방법이다.
직접적으로, 새의 날개의 조각에서 작은 진동을 원한다면, 잡음제어기를 쓸 수 있다.

이 설정을 위해서, 나는 움직임포착(Motion Capture) 제어기를 사용햇다.
3DS는 움직임 포착에 Mouse, Keyboard, Joystick 혹은 MIDI등 다른 입력을 사용할 수 있다.
나는 프로세싱에서 HID 장치를 에뮬레이트하는 "translation" 방식으로 사용하기 원햇다.
그러나, 내가 MIDI를 사용하는 것은 불가능해 보엿다.
 
윈도우즈 설정
- 아듀이노는 todbot의 WiiChuck 어댑터를 사용한다. 그리고 WiiChuck library를 사용한다.
- 프로세싱의 데이터 송신은 직렬통신이며, proMIDI library를 사용하는 MIDI CC 메세징으로 전환햇다.
- 프로세싱의 MIDI 출력은 midiYoke로 송신된다.
- midiYoke는 이데이터를 Ableton Live로 송신한다.
- Ableton의 CC messages는 midiYoke로 재-송신한다.
- 3D Studio Max에서는 목표인 wiichuck의 pitch와 roll의 회전에 부동(Floating)- 움직임 포착기를 사용하고 있다.
 
나는 완전하지 않은 것을 알고 잇다. 그러나, 나는 아직 이유를 모른다.
3DS는 Ableton Live gate 없이, midiYoke에서 직접 읽는 것을 원하지 않는다.
CC messages는 8 비트 (128 값)로 불리하다.

그래서 나는 좋은 분해능과 -값도 처리하는, 어떤 방법을 아직도 찾고있다.
어쨋든, 나는 아듀이노에서 어떤 종류의 센서 출력이라도 움직임을 포착하는,
3D Studio Max로 직접 쓸수있는 재미있는 것이라 생각한다, 
예를 들면, 손안의 작은 가속도 센서 등등,
 
아듀이노 시험 소스
WiiChuck.h 라이브러리는 단추를 누르면, 계속 누르지 않아도 1을 발생하도록 조금 개조되엇다.
//-----------------------------------------------------------------------
// Arduino
//-----------------------------------------------------------------------
#include "Wire.h"
#include "WiiChuck.h"
WiiChuck chuck = WiiChuck();
int zPress = 0;
int aX, aY, aZ;
// Arrays to store the values and smooth out the output
int rollA[8],pitchA[8],xA[8],yA[8],zA[8];
int i=0;
void setup() {
  Serial.begin(115200);
  chuck.begin();
  chuck.update();
  chuck.calibrateJoy();
}
void loop() {
  chuck.update();
  int roll, pitch, x, y, z, bZ, bC, joyX, joyY;
  // Cycle through arrays and store values
  rollA[i] = (int)chuck.readRoll();
  pitchA[i] = (int)chuck.readPitch();
  xA[i] = (int)chuck.readAccelX();
  yA[i] = (int)chuck.readAccelY();
  zA[i] = (int)chuck.readAccelZ();
  // Smooth values
  for (int j=0;j<8;j++) {
    roll+=rollA[j];
    pitch+=pitchA[j];
    x+=xA[j];
    y+=yA[j];
    z+=zA[j];
  }
  roll=roll/8;
  pitch=pitch/8;
  x=x/8;
  y=y/8;
  z=z/8;
  // Send the values via serial only if Z button is pressed
  if (chuck.zPressed() == 1) {
    if (zPress == 0) {
      zPress = 1;
    }
    Serial.print(roll);
    Serial.print(”,”);
    Serial.print(pitch);
    Serial.print(”,”);
    Serial.print(x);
    Serial.print(”,”);
    Serial.print(y);
    Serial.print(”,”);
    Serial.print(z);
    Serial.println();
  } else {
    zPress = 0;
  }
  // Increment position in Arrays
  i++;
  if(i==8) {
    i=0;
  }
  delay(20);
}

프로세싱
//-------------------------------------------------------------------------
// Processing
//-------------------------------------------------------------------------
int sensorCount = 5;                        // number of values to expect
import processing.serial.*;
Serial myPort;                // The serial port
import promidi.*;
MidiIO midiIO;
MidiOut midiOut;
int BAUDRATE = 115200;
char DELIM = ','; // the delimeter for parsing incoming data
void setup()
{
  size(100,100);
  background(0);
  myPort = new Serial(this, Serial.list()[0], BAUDRATE);
  myPort.clear();
  //get an instance of MidiIO
  midiIO = MidiIO.getInstance(this);
  midiIO.printDevices();
  //open an midiout using the fourth device and the fifth channel
  midiOut = midiIO.getMidiOut(5,4);
}
void draw()
{
  // NOTHING
}
float[] sensorValues = new float[sensorCount];  // array to hold the incoming values
void serialEvent(Serial myPort) {
  // read incoming data until you get a newline:
  String serialString = myPort.readStringUntil(’ ’);
  // if the read data is a real string, parse it:
  if (serialString != null) {
    // split it into substrings on the DELIM character:
    String[] numbers = split(serialString, DELIM);
    // convert each subastring into an int
    if (numbers.length == sensorCount) {
      for (int i = 0; i < numbers.length; i++) {
        // make sure you’re only reading as many numbers as
        // you can fit in the array:
        if (i <= sensorCount) {
          // trim off any whitespace from the substring:
          numbers[i] = trim(numbers[i]);
          sensorValues[i] =  float(numbers[i]);
        }
        // Put the value between 0 & 127
        int val = Math.min(127,Math.abs((int)sensorValues[0]));
        // Sends the value as Controller 10 on the MIDI channel we opened
        midiOut.sendController(
          new Controller(10,val)
        );
        // Problem with the pitch, so -1700, really not accurate ^^
        int val2 = Math.min(127,Math.abs((int)sensorValues[1]-1700));
        midiOut.sendController(
          new Controller(11,val2)
        );
      }
    }
  }
}

이 자료는 MAC Book OSX에서 사용하는 3D Stuidio의 3D Script로 프로세싱을 처리한 예입니다.
PC의 윈도우즈 OS에서는 별도의 Processing 소프트웨어와 라이브러리를 설치해야 합니다.

참조 : http://play-collective.net/blog/archives/61

이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
AVRTOOLS™
   
윗글 아듀이노 초음파 모듈의 제작.
아래글 아듀이노 초음파 거리측정
    N         제목    글쓴이 작성일 조회 추천
61 비접점식 QTouch 방식 근접검출 스위치 leeky 2016/01/21 (목) 708 0
60 Arduino 고속 오실로스코프 #3 avrtools™ 2012/03/29 (목) 17786 0
59 아날로그 8ch 데이터 로거 avrtools™ 2012/03/29 (목) 2828 0
58 Arduino DMX512 송신기 제작 avrtools™ 2012/03/15 (목) 2952 0
57 nRF24L01 무선모듈의 사용방법 avrtools™ 2012/03/07 (수) 5939 0
56 초음파 거리 측정기의 제작 avrtools™ 2011/09/18 (일) 4873 0
55 3축 가속도 센서 ADXL335 avrtools™ 2011/09/09 (금) 3400 0
54 Arduino Uno USBserial 펌웨어의 변경 avrtools™ 2011/08/27 (토) 2996 0
53 Arduino MIDI의 소개 avrtools™ 2011/08/19 (금) 3400 0
52 Arduino 고속 Oscillo Scope #2 avrtools™ 2011/08/12 (금) 3019 0
51 Arduino Uno 및 USB2serial Uno의 소개 [2] avrtools™ 2011/07/30 (토) 3289 0
50 Arduino IDE에서 AVRISP-mkII 사용방법 avrtools™ 2010/10/22 (금) 7932 0
49 아듀이노 초음파 거리측정 및 응용 avrtools™ 2010/03/14 (일) 4142 0
48 M328-USB의 비밀 온도센서 avrtools™ 2010/01/02 (토) 3560 0
47 M168-mini로 만드는 USBasp avrtools™ 2009/10/10 (토) 5326 0
46 OBDuino ISO9141 소스의 설명 avrtools™ 2009/10/08 (목) 4165 0
45 아듀이노 0017 업그레이드 avrtools™ 2009/08/18 (화) 3687 0
44 Arduino 0015 업그레이드 avrtools™ 2009/06/01 (월) 3372 0
43 CC2500 Zigbee RF Modem #1 [4] avrtools™ 2008/11/20 (목) 6638 0
42 아듀이노 소프트웨어 Ver 0012 avrtools™ 2008/09/23 (화) 4006 0
41 Arduino 소프트웨어 설치방법 avrtools™ 2008/08/31 (일) 5579 0
40 아듀이노 PC 카메라 제작 avrtools™ 2008/10/28 (화) 7193 0
39 아듀이노 AVR-ISP V2의 제작 [6] avrtools™ 2008/10/22 (수) 8278 0
38 아듀이노 J1850-PWM 스캐너 avrtools™ 2008/10/15 (수) 4526 0
37 아듀이노 MPGduino의 제작 avrtools™ 2008/10/11 (토) 4893 0
36 아듀이노 OBD-II PID 처리함수 avrtools™ 2008/10/12 (일) 5479 0
35 아듀이노 OBD-II PID 송수신 함수 avrtools™ 2008/10/09 (목) 9646 0
34 아듀이노 ODB-II 스캐너 제작 [9] avrtools™ 2008/10/04 (토) 17241 0
33 아듀이노 AC전원 THD 측정 [2] avrtools™ 2008/09/30 (화) 6784 0
32 아듀이노 소프트방식 16Bit ADC avrtools™ 2008/09/23 (화) 5555 0
31 아듀이노 초음파 모듈의 제작. avrtools™ 2008/09/22 (월) 4834 0
30 아듀이노 Wii 프로세싱 avrtools™ 2008/09/20 (토) 4142 0
29 아듀이노 초음파 거리측정 avrtools™ 2008/09/20 (토) 6048 0
28 아듀이노 8x5 초소형 전광판 avrtools™ 2008/09/11 (목) 4660 0
27 아듀이노 4선식 터치패널 avrtools™ 2008/09/10 (수) 4656 0
26 아듀이노 2색 8x8 LED avrtools™ 2008/09/10 (수) 4893 0
25 아듀이노 24x6 LED 전광판 avrtools™ 2008/09/10 (수) 5435 0
24 아듀이노 8x8 LED 프로세싱 avrtools™ 2008/09/10 (수) 4105 0
23 아듀이노 32x16 RGB 전광판 avrtools™ 2008/09/06 (토) 13671 0
22 아듀이노 맥박검출기 avrtools™ 2008/09/03 (수) 9479 0
21 아듀이노 적외선 거리센서 avrtools™ 2008/09/01 (월) 5935 0
20 아듀이노 DMX 수신장치 [7] avrtools™ 2008/08/31 (일) 6773 0
19 아듀이노 AVR-ISP 만들기 avrtools™ 2008/08/30 (토) 4132 0
18 아듀이노 POV #3 avrtools™ 2008/08/30 (토) 3457 0
17 아듀이노 POV #2 avrtools™ 2008/08/30 (토) 3243 0
16 AVR 병렬포트 굽기장치 avrtools™ 2008/08/30 (토) 5204 0
15 아듀이노 DMX 송신기 avrtools™ 2008/08/28 (목) 5122 0
14 아듀이노 부트로더의 개조 [1] avrtools™ 2008/08/28 (목) 5768 0
13 아듀이노 병렬포트 굽기장치 avrtools™ 2008/08/26 (화) 4205 0
12 아듀이노 POV #1 avrtools™ 2008/08/26 (화) 3488 0
11 아듀이노 MIDI 드럼 leeky 2008/08/24 (일) 4766 0
10 아듀이노 SD/MMC 카드 avrtools™ 2008/08/24 (일) 9780 0
9 아듀이노 MIDI 플륫 avrtools™ 2008/08/24 (일) 3596 0
8 아듀이노 RGB LED avrtools™ 2008/08/23 (토) 5032 0
7 아듀이노 USB 오실로스코프 [2] leeky 2008/08/21 (목) 6427 0
6 가속도계 ADXL202 응용소스 avrtools™ 2008/08/20 (수) 4902 0
5 아듀이노 가속도센서 avrtools™ 2008/08/18 (월) 4888 0
4 아듀이노 RC서보 제어 avrtools™ 2008/08/17 (일) 5223 0
3 아듀이노 910-ISP 만들기 avrtools™ 2008/08/16 (토) 4713 0
2 아듀이노 온도센서, XBee 송수신 avrtools™ 2008/08/15 (금) 7522 0
1 아듀이노 기본명령 avrtools™ 2008/08/07 (목) 6616 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0