로그인 | 회원가입 | 주문 조회
총 10,743개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
8808 답변완료3축 가속도 센서(AM-3AXIS) 를 이용해서 윈도우 어플로 표현 할려고 합니다. 이종혁 2014-06-03 1,396
안녕하세요. 3축 가속도센서를 이용해서 무선 마우스 장갑을 만들 계획인데요. 다른 작품에서 쓰였던 윈도우 어플을 구할 수 있어서 사용 할려고 합니다. 가속도 센서 전압변화 실험은 한 상태구요. 소스파일을 컴파일 시키고 가속도 센서의 X Y Z 축 F포트에 각각 연결 시키고 ATmega128 개발 보드를 통해서 미리 구입한 myUSB2UART 를 통해서 각각 보드에 TXD / RXD 연결도 시켰습니다. 그리고 윈도우 어플리케이션 포트도 확인해서 통신포트 연결이 확인이 되었는데 아무리 가속도센서를 움직여도 변화가 없어서 이렇게 문의를 드립니다. 제가 아직 초보라서.. 어플이 문제인지 소스가 문제인지 잘 모르겠습니다.ㅠㅠ 어플을 직접 만든게 아니라 설정을 안해서 그런건지.. 어플 사진 올릴게요 #include <mega128.h> #include <delay.h> ////////////////////////////////////////////////////////////////////////////////////////////////// #define TEST_LED PORTB.1 // Test LED #define LED_ON 0 #define LED_OFF 1 #define NULL 0x00 // ASCII code #define BS 0x08 #define LF 0x0a #define CR 0x0d #define SPACE 0x20 #define SENSOR_X_MAX 650 // Sensor value #define SENSOR_X_MIN 400 #define SENSOR_Y_MAX 600 #define SENSOR_Y_MIN 400 #define SENSOR_THRESHOLD 900 ////////////////////////////////////////////////////////////////////////////////////////////////// unsigned int x_axis_value, y_axis_value, z_axis_value; unsigned int sensor_0_value, sensor_1_value; //, sensor_2_value; ////////////////////////////////////////////////////////////////////////////////////////////////// // UART transmit void uart_tx(unsigned char tx_data){ while(!(UCSR0A&0x20)); UDR0=tx_data; } // UART transmit decimal value void uart_decimal(unsigned int value){ unsigned char i; i=value/1000; // Transmit 10^3 if(value<1000)uart_tx(' '); else uart_tx(i+ '0'); i=(value%1000)/100; // Transmit 10^2 if(value<100)uart_tx(' '); else uart_tx(i+ '0'); i=(value%100)/10; // Transmit 10^1 if(value<10)uart_tx(' '); else uart_tx(i+ '0'); i=value%10; // Transmit 10^3 uart_tx(i+ '0'); } ////////////////////////////////////////////////////////////////////////////////////////////////// // I/O Port Initialize void port_init(void){ DDRB=0xff; // Port direction setting DDRC=0xc0; DDRD=0xfe; TEST_LED=LED_OFF; } // ADC initialize void adc_init(void){ ADMUX=0x40; // AREF=VCC=5V, ADC0 select ADCSRA=0x85; // ADC enable, 32 prescaling } // UART initialize void uart_init(void){ UCSR0B=0x18; // Rx&Tx enable UBRR0L=51; // 9600 bps at 8MHz } // Project Initialize void project_init(void){ port_init(); adc_init(); uart_init(); } ////////////////////////////////////////////////////////////////////////////////////////////////// void main(void){ unsigned char i; project_init(); while(1){ x_axis_value=0; y_axis_value=0; sensor_0_value=0; sensor_1_value=0; for(i=0; i<10; i++){ ADMUX=0x40; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; z_axis_value+=ADCW; ADMUX=0x42; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; y_axis_value+=ADCW; ADMUX=0x41; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; x_axis_value+=ADCW; ADMUX=0x43; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; sensor_0_value+=ADCW; ADMUX=0x44; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; sensor_1_value+=ADCW; } x_axis_value /=10; y_axis_value /=10; sensor_0_value /=10; sensor_1_value /=10; // uart_tx(' '); uart_tx('X'); uart_tx(':'); uart_decimal(x_axis_value); // uart_tx(' '); uart_tx('Y'); uart_tx(':'); uart_decimal(y_axis_value); // uart_tx(' '); uart_tx('0'); uart_tx(':'); uart_decimal(sensor_0_value); // uart_tx(' '); uart_tx('1'); uart_tx(':'); uart_decimal(sensor_1_value); // uart_tx(' '); if((x_axis_value > SENSOR_X_MIN)&&(x_axis_value<SENSOR_X_MAX) && (y_axis_value > SENSOR_Y_MIN)&&(y_axis_value<SENSOR_Y_MAX) && (sensor_0_value > SENSOR_THRESHOLD)&&(sensor_1_value > SENSOR_THRESHOLD))uart_tx(0); else if(x_axis_value<SENSOR_X_MIN)uart_tx(2); else if(x_axis_value > SENSOR_X_MAX)uart_tx(1); else if(y_axis_value<SENSOR_Y_MIN)uart_tx(4); else if(y_axis_value > SENSOR_Y_MAX)uart_tx(3); else if(sensor_0_value<SENSOR_THRESHOLD)uart_tx(5); else if(sensor_1_value<SENSOR_THRESHOLD)uart_tx(6); // for(i=0;i<45;i++)uart_tx(BS); delay_ms(300); } // while(1) }
관리자 답변 관리자 · 2014-06-03
안녕하세요? 고객님 저희 뉴티씨를 이용해 주셔서 감사합니다. 본사에서는 소스를 디버깅해드리거나 수정해드리지는 않습니다. 특히 해당 질문부분은 본사의 특허등록된 사항입니다. 본사에서 개인적인 목적으로 한개정도 쓰는것은 개의치 않으나, 제품생산이나 시제품개발시에는 본사와의 서면계약서가 필요한 사항입니다. 동작소스와 일부 어플도 공개한 상황이구요. 하지만 소스 수정등은 해드리지 않고 있으며, 수행의뢰시 프로젝트가되며 비용이 많이 드는 일입니다. 양해바랍니다. 감사합니다. > > > 안녕하세요. 3축 가속도센서를 이용해서 무선 마우스 장갑을 만들 계획인데요. > > > > 다른 작품에서 쓰였던 윈도우 어플을 구할 수 있어서 사용 할려고 합니다. > > > > 가속도 센서 전압변화 실험은 한 상태구요. > > > > 소스파일을 컴파일 시키고 가속도 센서의 X Y Z 축 F포트에 각각 연결 시키고 > > > > ATmega128 개발 보드를 통해서 미리 구입한 myUSB2UART 를 통해서 각각 보드에 TXD / RXD 연결도 시켰습니다. > > > > 그리고 윈도우 어플리케이션 포트도 확인해서 통신포트 연결이 확인이 되었는데 아무리 가속도센서를 움직여도 > > > > 변화가 없어서 이렇게 문의를 드립니다. > > > > 제가 아직 초보라서.. 어플이 문제인지 소스가 문제인지 잘 모르겠습니다.ㅠㅠ > > > > 어플을 직접 만든게 아니라 설정을 안해서 그런건지.. > > > > 어플 사진 올릴게요 > > > #include <mega128.h> > #include <delay.h> > ////////////////////////////////////////////////////////////////////////////////////////////////// > #define TEST_LED PORTB.1 // Test LED > #define LED_ON 0 > #define LED_OFF 1 > #define NULL 0x00 // ASCII code > #define BS 0x08 > #define LF 0x0a > #define CR 0x0d > #define SPACE 0x20 > #define SENSOR_X_MAX 650 // Sensor value > #define SENSOR_X_MIN 400 > #define SENSOR_Y_MAX 600 > #define SENSOR_Y_MIN 400 > #define SENSOR_THRESHOLD 900 > ////////////////////////////////////////////////////////////////////////////////////////////////// > unsigned int x_axis_value, y_axis_value, z_axis_value; > unsigned int sensor_0_value, sensor_1_value; //, sensor_2_value; > ////////////////////////////////////////////////////////////////////////////////////////////////// > // UART transmit > void uart_tx(unsigned char tx_data){ while(!(UCSR0A&0x20)); UDR0=tx_data; } > // UART transmit decimal value > void uart_decimal(unsigned int value){ > unsigned char i; > i=value/1000; // Transmit 10^3 > if(value<1000)uart_tx(' '); > else uart_tx(i+ '0'); > i=(value%1000)/100; // Transmit 10^2 > if(value<100)uart_tx(' '); > else uart_tx(i+ '0'); > i=(value%100)/10; // Transmit 10^1 > if(value<10)uart_tx(' '); > else uart_tx(i+ '0'); > i=value%10; // Transmit 10^3 > uart_tx(i+ '0'); > } > ////////////////////////////////////////////////////////////////////////////////////////////////// > // I/O Port Initialize > void port_init(void){ > DDRB=0xff; // Port direction setting > DDRC=0xc0; > DDRD=0xfe; > TEST_LED=LED_OFF; > } > // ADC initialize > void adc_init(void){ > ADMUX=0x40; // AREF=VCC=5V, ADC0 select > ADCSRA=0x85; // ADC enable, 32 prescaling > } > // UART initialize > void uart_init(void){ > UCSR0B=0x18; // Rx&Tx enable > UBRR0L=51; // 9600 bps at 8MHz > } > > // Project Initialize > void project_init(void){ > port_init(); > adc_init(); > uart_init(); > } > ////////////////////////////////////////////////////////////////////////////////////////////////// > void main(void){ > unsigned char i; > project_init(); > while(1){ > x_axis_value=0; > y_axis_value=0; > sensor_0_value=0; > sensor_1_value=0; > for(i=0; i<10; i++){ > ADMUX=0x40; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; z_axis_value+=ADCW; > ADMUX=0x42; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; y_axis_value+=ADCW; > ADMUX=0x41; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; x_axis_value+=ADCW; > ADMUX=0x43; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; sensor_0_value+=ADCW; > ADMUX=0x44; ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10; sensor_1_value+=ADCW; > } > x_axis_value /=10; > y_axis_value /=10; > sensor_0_value /=10; > sensor_1_value /=10; > // uart_tx(' '); uart_tx('X'); uart_tx(':'); uart_decimal(x_axis_value); > // uart_tx(' '); uart_tx('Y'); uart_tx(':'); uart_decimal(y_axis_value); > // uart_tx(' '); uart_tx('0'); uart_tx(':'); uart_decimal(sensor_0_value); > // uart_tx(' '); uart_tx('1'); uart_tx(':'); uart_decimal(sensor_1_value); > // uart_tx(' '); > if((x_axis_value > SENSOR_X_MIN)&&(x_axis_value<SENSOR_X_MAX) && > (y_axis_value > SENSOR_Y_MIN)&&(y_axis_value<SENSOR_Y_MAX) && > (sensor_0_value > SENSOR_THRESHOLD)&&(sensor_1_value > SENSOR_THRESHOLD))uart_tx(0); > else if(x_axis_value<SENSOR_X_MIN)uart_tx(2); > else if(x_axis_value > SENSOR_X_MAX)uart_tx(1); > else if(y_axis_value<SENSOR_Y_MIN)uart_tx(4); > else if(y_axis_value > SENSOR_Y_MAX)uart_tx(3); > else if(sensor_0_value<SENSOR_THRESHOLD)uart_tx(5); > else if(sensor_1_value<SENSOR_THRESHOLD)uart_tx(6); > // for(i=0;i<45;i++)uart_tx(BS); > delay_ms(300); > } // while(1) > } >
8807 답변완료usb isp 사용에 대해 질문있어요 서혁수 2014-06-02 1,398
KD-128PRO-USB키트를 산 후에 pdf파일 설명 대로 따라하던중 usb를 전원공급으로 쓸 수 있다고해서 usb isp의 on시키는 부분을 온했더니 보드에서 탄냄새와 소리가 납니다. 만약의 경우 usbisp 에 무리를 줄수 있다고 pdf에서 봤는데, 보드쪽에서 소리가 나고 탄냄새가 나니 불안하네요. 그 후에 se-dm185모터를 속도 500까지는 돌아가는데 1000넣으면 보드랑 연결된 모터 모듈, 엔코더모듈, lcd가 다 꺼졌다가 다시 켜지네요. 전원부분이 망가진건가요? (연기가 제대로 났는지 헤깔리네요;; 냄새와 소리는 확실합니다.) 그 전엔 속도1000도 잘돌아갔다네요. 만약 수리해야된다면 몇일이나 걸릴까요?
관리자 답변 관리자 · 2014-06-03
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용해 주셔서 감사합니다. 수리가 필요해보입니다. 방문하시면 당일 처리되고 보내주시면 택배 도착하면 도착 당일 또는 증상레따라 하루더 걸릴수 있고 택배 발송됩니다. 감사합니다. > > > KD-128PRO-USB키트를 산 후에 pdf파일 설명 대로 따라하던중 usb를 전원공급으로 쓸 수 있다고해서 usb isp의 on시키는 부분을 온했더니 보드에서 탄냄새와 소리가 납니다. 만약의 경우 usbisp 에 무리를 줄수 있다고 pdf에서 봤는데, 보드쪽에서 소리가 나고 탄냄새가 나니 불안하네요. 그 후에 se-dm185모터를 속도 500까지는 돌아가는데 1000넣으면 보드랑 연결된 모터 모듈, 엔코더모듈, lcd가 다 꺼졌다가 다시 켜지네요. 전원부분이 망가진건가요? > > (연기가 제대로 났는지 헤깔리네요;; 냄새와 소리는 확실합니다.) > 그 전엔 속도1000도 잘돌아갔다네요. 만약 수리해야된다면 몇일이나 걸릴까요? >
8806 답변완료AM-CD2L (모터모듈)로 서보형DC모터 2개를 제어하려고합니다. 마형민 2014-06-02 1,484
AVR128 키트를 이용해서 서보형dc모터 2개를 제어하려고 합니다. 서보형 dc모터는 SE-DS350 2개이구요. 모듈 AM-CD2L을 구매해서 핀10개를 키트에 연결후 모듈과 모터2개 연결하고 자료실에 예제코드를 돌렸는데 모듈에 출력포트 2개중 한쪽만 작동을 합니다 모터 각각에는 문제가 없는데 2개를 동시에 돌리려고 예제코드를 해석해보려해도 초보라 한계가 있네요ㅠㅠ 예제코드를 보면 분명히 출력포트 2개 다 동시에 제어를 하는 것 같은데 모터1번쪽 포트만 자꾸 돌아가네요... 저희가 목표하는 것은 모터 2개를 각각 제어하려고 합니다 스위치를 누르는 동안 1번모터가 일정시간 돌아간 뒤 멈추고 2번모터가 돌아가는 식으로 제어하려고 하는데 출력포트 한쪽이 돌아가지 않아서 어떻게 해야 할지 모르겠네요 혹시 모터 2개가 동시에 제어되도록 하는 다른 예제코드는 없을까요? 학교프로젝트인데 사비로 모두 구입을 했는데... 예제코드도 생각대로 안돌아가니 손을 댈수가 없네요ㅜㅜ 도와주세요...
관리자 답변 관리자 · 2014-06-03
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용해 주셔서 감사합니다. 자료실에서 CD2L로 검색하면 예제소스가 있을겁니다. 그걸로하면 될것 같네요. 감사합니다. > > > AVR128 키트를 이용해서 서보형dc모터 2개를 제어하려고 합니다. > 서보형 dc모터는 SE-DS350 2개이구요. > 모듈 AM-CD2L을 구매해서 핀10개를 키트에 연결후 > 모듈과 모터2개 연결하고 자료실에 예제코드를 돌렸는데 > 모듈에 출력포트 2개중 한쪽만 작동을 합니다 > 모터 각각에는 문제가 없는데 > 2개를 동시에 돌리려고 예제코드를 해석해보려해도 초보라 한계가 있네요ㅠㅠ > 예제코드를 보면 분명히 출력포트 2개 다 동시에 제어를 하는 것 같은데 > 모터1번쪽 포트만 자꾸 돌아가네요... > > 저희가 목표하는 것은 > 모터 2개를 각각 제어하려고 합니다 > 스위치를 누르는 동안 1번모터가 일정시간 돌아간 뒤 멈추고 > 2번모터가 돌아가는 식으로 제어하려고 하는데 > 출력포트 한쪽이 돌아가지 않아서 어떻게 해야 할지 모르겠네요 > > 혹시 모터 2개가 동시에 제어되도록 하는 > 다른 예제코드는 없을까요? > > 학교프로젝트인데 사비로 모두 구입을 했는데... > 예제코드도 생각대로 안돌아가니 손을 댈수가 없네요ㅜㅜ > 도와주세요... >
8805 답변완료2축자이로 센서 관련 질문입니다. 전은배 2014-06-01 1,419
안녕하세요 제가 2축 자이로센서와 3축 가속도 센서를 관절에 부착해서 랩뷰를 이용해서 모션캡쳐를 하려고합니다. 그런데 자이로 센서를 이용해 각을 구하려고 찾던중 ADC를 해서 식을 세우셧던데 저희는 Atmega128를 사용하지 않습니다. ADC를 하지않고 아날로그 신호를 사용해 그 유도식을 사용해도 되는 건가요?
관리자 답변 관리자 · 2014-06-02
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 네, 가능하겠습니다만, 랩뷰에서 ADC 하는 샘플링 타임이 정밀해야 그만큼 정밀하게 결과가 나오게 되겠습니다. 그 부분 참고하여 사용하세요. 감사합니다. > > > 안녕하세요 > 제가 2축 자이로센서와 3축 가속도 센서를 관절에 부착해서 > 랩뷰를 이용해서 모션캡쳐를 하려고합니다. > > 그런데 자이로 센서를 이용해 각을 구하려고 찾던중 ADC를 해서 식을 세우셧던데 > 저희는 Atmega128를 사용하지 않습니다. > ADC를 하지않고 아날로그 신호를 사용해 그 유도식을 사용해도 되는 건가요? >
8804 답변완료atmega128 pro+ dc모터 신이마 2014-05-31 1,445
atmega128 pro 킷트 사용하고있는데 여기에 dc모터를 달아서 제어하려고 합니다. 홈페이지에 강좌봤는데 드라이버를 사용하더군여 근데 킷트에 직접연결해서 사용할 수 있다고 들었습니다. 그냥 간단한 FAN돌리려고 하는데 킷트 어느부분에 연결해야할지 모르겠어서요 자세히좀 알려주세요
관리자 답변 관리자 · 2014-06-02
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 킷트에 직접 연결하여 사용하는 것은 무리입니다. DC 모터의 경우 최소 120mA 정도 사용하기 때문에, AVR의 핀당 최대한계 전류가 40mA 인 점을 감안할 때, 망가질 수 있습니다. 반드시 드라이버를 사용하여 쓰기를 권장합니다. 간단하게는 AM-CD2L 드라이버를 사용하면 되며, 자료실에서 CD2L로 검색하면 소스와 메뉴얼이 있을 겁니다. 소스에서 사용하는 포트에 대한 정의만 변경하면, AVR의 어떤 포트라도 써서 사용이 가능합니다. 감사합니다. > > > atmega128 pro 킷트 사용하고있는데 여기에 dc모터를 달아서 제어하려고 합니다. > 홈페이지에 강좌봤는데 드라이버를 사용하더군여 근데 킷트에 직접연결해서 사용할 수 있다고 들었습니다. > 그냥 간단한 FAN돌리려고 하는데 킷트 어느부분에 연결해야할지 모르겠어서요 자세히좀 알려주세요 >
8803 답변완료AM-128PRO 모듈 문의드려요~! 장민규 2014-05-30 1,388
AM-128PRO 구매하였는데요 http://www.interboard.co.kr/goods/view.php?seq=118&main=true&mainType=2 위 링크에 있는 USB ISP6핀 커넥터 구매해서 프로그래밍 하려고하는데 제가 구매한 인터보드사에 ISP는 2줄로 6핀 되어있구 AM-128PRO는 일렬로 6핀 ISP되있더라구요 그래서 인터보드에서 구매한 ISP 잘라서 일자로 만들어서 AM-128PRO에 연결해서 프로그래밍 하려고하는데 계속 USB확인하라고 AVR 스튜디오에서 뜨네요~! 뺐다 낄때만 입력되고 계속 그렇게나오네요 LED동작테스트해봐도 켜지지 않구요 그리고 전원 넣어줄 때 두 핀 5V전원 빼있는거에 넣어주고 ISP에도 넣어줘야되나요? 아니면 5V전원 2핀 연결안하고 ISP만연결해줘도되나요? 위에 링크 제품이랑 AM-128PRO 제품 호환 안되는건가요? 귀찮으시더라도 정확한 답변부탁드립니다 급한거라서요..ㅠ
관리자 답변 관리자 · 2014-05-31
안녕하세요? 고객님, 10핀 표준은 2x5 박스 커넥터를 사용하는데 이것과 뉴티씨표준 1x6커넥터와 변환 커넥터인 se-cvb를 avr개발장비 쪽에서 구해서 연결해쓰면 되겠습니다. 또는 핀기능 잘 보시고 서로 맞춰서 써야해요. 감사합니다. > > > AM-128PRO 구매하였는데요 > > http://www.interboard.co.kr/goods/view.php?seq=118&main=true&mainType=2 > 위 링크에 있는 USB ISP6핀 커넥터 구매해서 프로그래밍 하려고하는데 > 제가 구매한 인터보드사에 ISP는 2줄로 6핀 되어있구 > AM-128PRO는 일렬로 6핀 ISP되있더라구요 > 그래서 인터보드에서 구매한 ISP 잘라서 일자로 만들어서 AM-128PRO에 연결해서 프로그래밍 하려고하는데 계속 USB확인하라고 AVR 스튜디오에서 뜨네요~! > 뺐다 낄때만 입력되고 계속 그렇게나오네요 > LED동작테스트해봐도 켜지지 않구요 > > 그리고 전원 넣어줄 때 두 핀 5V전원 빼있는거에 넣어주고 ISP에도 넣어줘야되나요? > 아니면 5V전원 2핀 연결안하고 ISP만연결해줘도되나요? > > 위에 링크 제품이랑 AM-128PRO 제품 호환 안되는건가요? > > 귀찮으시더라도 정확한 답변부탁드립니다 > 급한거라서요..ㅠ >
8802 답변완료기판연결 질문입니다. 답변부탁드립니다. 장석현 2014-05-30 1,402
여기서 3축자이로센서를 구입하였습니다 그런데. 아두이노 우노 기판과의 연결을 하려고하는데 방법을 잘 모르겠습니다ㅜ. 꼭알려주세요 그리고혹시 진동소자와 전원공급장치 연결방법도 아신다면 알려주시면 감상사겠습니다ㅠ
관리자 답변 관리자 · 2014-05-31
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용해 주셔서 감사합니다. 우선 자이로 센서는 아날로그핀에 입력해서 adc로 받으세요. 진동모터는 직접붙여도 잠시는 될것같은데 몇초만써도 cpu가 무리한 전류를 흘릴것같으니 Tr. 하나 달아서 이미터 폴로워로 만들어 쓰세요 디지탈핀으로 제어하면되겠어요. 전원은 5V핀과 gnd 핀에 5V전원 넣어주세요. 감사합니다. > > > 여기서 3축자이로센서를 구입하였습니다 그런데. 아두이노 우노 기판과의 연결을 하려고하는데 방법을 잘 모르겠습니다ㅜ. 꼭알려주세요 그리고혹시 진동소자와 전원공급장치 연결방법도 아신다면 알려주시면 감상사겠습니다ㅠ >
8801 답변완료KR-DL16-S 라인트레이서 질문. 김상우 2014-05-30 1,434
라인트레이서 작동을 해보니 잘되는데요. 구동을 할때 검은색 전기테이프를 놓고 했는데 보통은 선만 따라 가잖아요. 혹시 다른 움직임도 가능한가요? 예를 들어 선을 ---------------- 이렇게 검은 테이프가 붙여져있는데 중간에 --- ----- 이렇게 끊어진 부분이 있으면 저 부분 앞에서 소리를 낸다거나 아니면 작동을 잠시 멈췄다가 간다거나.. 물론 소리를 낼려면 다른 센서를 붙여야 겠지만 이처럼 붙여진 테이프만 따라가는것 말고 다른 동작을 보고 싶은데.. 인문계 문과를 나와서 이쪽 부분에는 아는게 없습니다. 다른 동작이 있다면 해당 소스랑 어떻게 어느 부분에 넣는지 알려주시면 감사하겠습니다.. 실험과목중에 하난데.. 어쩃든 결론은 검은테이프만 따라가는것 외에 추가 동작을 넣어야하는데.. 아무거나 부탁드립니다..
관리자 답변 관리자 · 2014-05-31
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용해 주셔서 감사합니다. 추가 기능은 물론 가능합니다. 어떤 기능을 추가하는가에따라 추가할 하드웨어와 소프트웨어가 달라집니다. 선이 끊어짐을 감지하려면 중앙에 센서를 만들어 추가하여 하나 더 달아서 해야 할것 같네요. 그 센서로 감지되다 끊어짐이 일정시간 이상되는지를 봐서 하는게 좋겠네요. 그것보다는 검정선 따라가다가 십자가형태로 테잎을 붙여두면, 갑자기 둘다 감지되면 어떻게 해라 하는것을 만드는게 더 좋겠어요. 감사합니다. > > > 라인트레이서 작동을 해보니 잘되는데요. > > 구동을 할때 검은색 전기테이프를 놓고 했는데 보통은 선만 따라 가잖아요. > > 혹시 다른 움직임도 가능한가요? > > 예를 들어 선을 ---------------- 이렇게 검은 테이프가 붙여져있는데 중간에 --- ----- 이렇게 끊어진 부분이 있으면 저 부분 앞에서 소리를 낸다거나 아니면 작동을 잠시 멈췄다가 간다거나.. > > 물론 소리를 낼려면 다른 센서를 붙여야 겠지만 이처럼 붙여진 테이프만 따라가는것 말고 다른 동작을 보고 싶은데.. 인문계 문과를 나와서 이쪽 부분에는 아는게 없습니다. > > 다른 동작이 있다면 해당 소스랑 어떻게 어느 부분에 넣는지 알려주시면 감사하겠습니다.. > > > > 실험과목중에 하난데.. 어쩃든 결론은 검은테이프만 따라가는것 외에 추가 동작을 넣어야하는데.. 아무거나 부탁드립니다.. >
8800 답변완료codevision 소스를 avr studio 소스로 변환하려는데 김준섭 2014-05-29 1,487
codevision 소스를 avr studio 소스로 변환하려는데 너무어렵습니다. 도와주세요~ #include <iom128v.h> #include <macros.h> #include <ina90.h> #include <stdio.h> #define MOTOR_PORT PORTA #define MOTOR_PORT_DDR DDRA unsigned int all_sw=0; // 모든층과 문 sw 상태 unsigned int voice_Module=0; // 음성 모듈의 상태정보 void delay(int n); void one_move(int); void two_move(int); void three_move(int); void four_move(int); void up_move(int); void down_move(int); //////////////////////////////////////////////////////////////////////////////////////// #define servo_ref 60536 // 2.5ms unsigned char Motor=0; unsigned char one=1; unsigned int Out_V[8]; char key; /*60928=2.3ms, 60736=2.4ms*/ const unsigned int M_Value[] = {60928, 60947, 60966, 60985, 61004, 61023, 61042, 61061, 61080, 61099, 61118, 61137, 61156, 61175, 61194, 61213, 61232, 61251, 61270, 61289, 61308, 61327, 61346, 61365, 61384, 61403, 61422, 61441, 61460, 61479, 61498, 61517, 61536, 61555, 61574, 61593, 61612, 61631, 61650, 61669, 61688, 61707, 61726, 61745, 61764, 61783, 61802, 61821, 61840, 61859, 61878, 61897, 61916, 61935, 61954, 61973, 61992, 62011, 62030, 62049, 62068, 62087, 62106, 62125, 62144, 62163, 62182, 62201, 62220, 62239, 62258, 62277, 62296, 62315, 62334, 62353, 62372, 62391, 62410, 62429, 62448, 62467, 62486, 62505, 62524, 62543, 62562, 62581, 62600, 62619, 62638, 62657, 62676, 62695, 62714, 62733, 62752, 62771, 62790, 62809, 62828, 62847, 62866, 62885, 62904, 62923, 62942, 62961, 62980, 62999, 63018, 63037, 63056, 63075, 63094, 63113, 63132, 63151, 63170, 63189, 63208, 63227, 63246, 63265, 63284, 63303, 63322, 63341, 63360, 63379, 63398, 63417, 63436, 63455, 63474, 63493, 63512, 63531, 63550, 63569, 63588, 63607, 63626, 63645, 63664, 63683, 63702, 63721, 63740, 63759, 63778, 63797, 63816, 63835, 63854, 63873, 63892, 63911, 63930, 63949, 63968, 63987, 64006, 64025, 64044, 64063, 64082, 64101, 64120, 64139, 64158, 64177, 64196, 64215, 64234, 64253, 64272, 64291, 64310, 64329, 64348, 64367, 64386, 64405, 64424, 64443, 64462, 64481, 64500, 64519}; void Delay_ms(unsigned int ms) { unsigned int i, j; for(i = 1; i <= ms; i++) for(j = 1; j <= 250; j++); } void motor(unsigned int m1) { Out_V[0] = M_Value[m1]; Out_V[1] = M_Value[m1]; Out_V[2] = M_Value[m1]; Out_V[3] = M_Value[m1]; Out_V[4] = M_Value[m1]; Out_V[5] = M_Value[m1]; Out_V[6] = M_Value[m1]; Out_V[7] = M_Value[m1]; } #pragma interrupt_handler timer1_ovf_isr:15 void timer1_ovf_isr(void) { if(one == 1) { PORTC = 0x01; TCNT1H = Out_V[Motor]>>1; TCNT1L = Out_V[Motor] & 0x00FF; one = 0; } else { PORTC = 0; TCNT1H = servo_ref+(65536-Out_V[Motor]) >> 8; TCNT1L = servo_ref+(65536-Out_V[Motor]) & 0x00FF; Motor++; Motor%=8; one = 1; } } void timer1init(void) { TIMSK = 0x04; TCCR1A = 0x00; TCCR1B = 0x02; TCCR1C = 0x00; TCNT1H = 0xFE; TCNT1L = 0x70; } ////////////////////////////////////////////////////////////////////////////////////////////// void delay(int n) { volatile int i, j; for(i=1; i<n; i++) { for(j=1; j<30; j++) { } } } void one_move(int status) // 1층 알고리즘 { volatile unsigned int em, num; if(status == 4) num=730; else if(status == 3) num=495; else if(status == 2) num=245; else if(status == 1) num=0; else; for(em=0; em<num; em++) { delay(100); MOTOR_PORT = 0x03; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x09; } } void two_move(int status) // 2층 알고리즘 { volatile unsigned int em, num; if(status == 4) num=490; else if(status == 3) num=245; else if(status == 2) num=0; else if(status == 1) num=245; else; for(em=0; em<num; em++) { if(status == 1) { // 역 방향으로 움직인다. delay(100); MOTOR_PORT = 0x09; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x03; } else { // 정 방향으로 움직인다. delay(100); MOTOR_PORT = 0x03; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x09; } } } void three_move(int status) // 3층 알고리즘 { volatile unsigned int em, num; if(status == 4) num=245; else if(status == 3) num=0; else if(status == 2) num=245; else if(status == 1) num=490; else; for(em=0; em<num; em++) { if(status == 2 || status == 1) { // 역방향으로 움직인다. delay(100); MOTOR_PORT = 0x09; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x03; } else { // 정 방향으로 움직인다. delay(100); MOTOR_PORT = 0x03; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x09; } } } void four_move(int status) // 4층 알고리즘 { volatile unsigned int em, num; if(status == 4) num=0; else if(status == 3) num=245; else if(status == 2) num=490; else if(status == 1) num=730; else; for(em=0; em<num; em++) delay(100); // 역방향으로 움직인다. MOTOR_PORT = 0x09; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x03; } } void up_move(int num) { volatile unsigned int em; for(em=0; em<num; em++) { delay(100); // 정 방향으로 움직인다. MOTOR_PORT = 0x03; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x09; } } void down_move(int num) { volatile unsigned int em; for(em=0; em<num; em++) { delay(100); // 역방향으로 움직인다. MOTOR_PORT = 0x09; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x03; } } void main(void) { volatile unsigned int status=1; // 0->초기 상태, 1->1층, 2->2층, 3->3층, 4->4층 volatile unsigned int voice_status=0; DDRC = 0x01; timer1init(); _SEI(); DDRB=0xFF; // 도트 매트릭스와 연동 DDRD=0x00; // 음성 모듈 DDRA=0x0F; // 7핀:X, 6핀:음성인식모듈2, 5핀:음성인식모듈1, 4핀:음성인식모듈0 // 3핀:스탭모터3, 2핀:스탭모터2, 1핀:스탭모터1, 0핀:스탭모터0 DDRF=0xc0; // 1100 0000 ==> 문open_LED 문close_LED 문open_sw 문close_sw : 4층sw 3층sw 2층sw 1층sw DDRG=0x1E; // 0001 1110 ==> x x x 4층LED : 3층LED 2층LED 1층LED x PORTA=0x0F; // 서보 모터 초기 코드 // Delay_ms(5000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); motor(95); // 0 ~ 180값을 사용 Delay_ms(5000); motor(0); // 0 ~ 180값을 사용 PORTD=0xff; while(1) { voice_status=PIND; PORTA=0x0F; all_sw=PINF; // F포트 상태를 읽어온다. // voice_Module=PINA; // voice_Module=(~voice_Module); // voice_Module=(voice_Module)>>4; // 서보모터 상태를 버린다. 음성 모듈 상태만 읽어들인다. // voice_Module=voice_Module^0x07; if(voice_status == 0xfE || all_sw == 0x3E ) { // 1층sw 눌러 졌을때 0011 1110 PORTB=0x01; PORTG=0x02; // 1층 LED 켜진다. 0000 0010 // up_move(240); // one_move(); // return_move(); if(status==1) one_move(1); else if(status==2) two_move(1); else if(status==3) three_move(1); else if(status==4) four_move(1); else; status=1; Delay_ms(1000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); motor(95); // 0 ~ 180값을 사용 Delay_ms(100000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); } else if(all_sw == 0x3D || voice_status == 0xfD) { // 2층 sw 눌러 졌을때 0011 1101 PORTB=0x02; PORTG=0x04; // 2층 LED 켜진다. 0000 0100 // up_move(490); // two_move(); // return_move(); if(status==1) one_move(2); else if(status==2) two_move(2); else if(status==3) three_move(2); else if(status==4) four_move(2); else; status=2; Delay_ms(1000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); motor(95); // 0 ~ 180값을 사용 Delay_ms(100000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); } else if(all_sw == 0x3B || voice_status == 0xfc) { // 3층 sw 눌러 졌을때 0011 1011 PORTB=0x04; PORTB=0x04; PORTG=0x08; // 3층 LED 켜진다. 0000 1000 // up_move(730); // three_move(); // return_move(); if(status==1) one_move(3); else if(status==2) two_move(3); else if(status==3) three_move(3); else if(status==4) four_move(3); else; status=3; Delay_ms(1000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); motor(95); // 0 ~ 180값을 사용 Delay_ms(100000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); } else if(all_sw == 0x37 || voice_status == 0xfb) { // 4층 sw 눌러 졌을때 0011 0111 PORTB=0x08; PORTG=0x10; // 4층 LED 켜진다. 0001 0000 // up_move(1020); // four_move(); // return_move(); if(status==1) one_move(4); else if(status==2) two_move(4); else if(status==3) three_move(4); else if(status==4) four_move(4); else; status=4; Delay_ms(1000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); motor(95); // 0 ~ 180값을 사용 Delay_ms(100000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); } else if(all_sw == 0x2F || voice_status == 0xfa) { // 문 close sw 눌러 졌을때 0010 1111 PORTF=0x40; // 문 close LED 켜진다. 0100 0000 // down_move(245); // status=5; Delay_ms(5000); motor(0); // 0 ~ 180값을 사용 Delay_ms(5000); } else if(all_sw == 0x1F || voice_status == 0xf9) { // 문 open sw 눌러 졌을때 0001 1111 PORTF=0x80; // 문 open LED 켜진다. 1000 0000 // up_move(245); // status=6; // return_move(); Delay_ms(100); motor(90); // 0 ~ 180값을 사용 Delay_ms(5000); } else { PORTG=0x00; PORTF=0x3F; } PORTG=0x00; PORTF=0x3F; PORTB=0x00; } }
관리자 답변 관리자 · 2014-05-30
안녕하세요? 고객님, 저희 뉴티씨를 이용해주셔서 감사합니다. 사용자의 소스변환을 도와드리거나 하는 서비스는, 죄송하지만 저희 회사에서 제공하고 있지 않습니다. 받게되면 유료로 프로젝트로 진행하게 됩니다. 소스변환은 헤더파일을 우선 쓰고자하는 컴파일러에 맞게 고치고, 인터럽트 핸들러 함수 관계 루틴 등을 컴파일러의 규칙에 맞게 변경하고, 그렇게 조금씩 고쳐나가는 겁니다. 한술에 배부를수 없지만 조금씩하는거죠. 순서대로 해보세요. 어느새 다 되어 있을겁니다. 감사합니다. > > > codevision 소스를 avr studio 소스로 변환하려는데 너무어렵습니다. > 도와주세요~ > > > #include <iom128v.h> > #include <macros.h> > #include <ina90.h> > #include <stdio.h> > > #define MOTOR_PORT PORTA > #define MOTOR_PORT_DDR DDRA > > unsigned int all_sw=0; // 모든층과 문 sw 상태 > unsigned int voice_Module=0; // 음성 모듈의 상태정보 > > void delay(int n); > > void one_move(int); > void two_move(int); > void three_move(int); > void four_move(int); > > void up_move(int); > void down_move(int); > > //////////////////////////////////////////////////////////////////////////////////////// > > #define servo_ref 60536 // 2.5ms > > unsigned char Motor=0; > unsigned char one=1; > unsigned int Out_V[8]; > char key; > > /*60928=2.3ms, 60736=2.4ms*/ > const unsigned int M_Value[] = > {60928, 60947, 60966, 60985, 61004, 61023, 61042, 61061, 61080, 61099, > 61118, 61137, 61156, 61175, 61194, 61213, 61232, 61251, 61270, 61289, > 61308, 61327, 61346, 61365, 61384, 61403, 61422, 61441, 61460, 61479, > 61498, 61517, 61536, 61555, 61574, 61593, 61612, 61631, 61650, 61669, > 61688, 61707, 61726, 61745, 61764, 61783, 61802, 61821, 61840, 61859, > 61878, 61897, 61916, 61935, 61954, 61973, 61992, 62011, 62030, 62049, > 62068, 62087, 62106, 62125, 62144, 62163, 62182, 62201, 62220, 62239, > 62258, 62277, 62296, 62315, 62334, 62353, 62372, 62391, 62410, 62429, > 62448, 62467, 62486, 62505, 62524, 62543, 62562, 62581, 62600, 62619, > 62638, 62657, 62676, 62695, 62714, 62733, 62752, 62771, 62790, 62809, > 62828, 62847, 62866, 62885, 62904, 62923, 62942, 62961, 62980, 62999, > 63018, 63037, 63056, 63075, 63094, 63113, 63132, 63151, 63170, 63189, > 63208, 63227, 63246, 63265, 63284, 63303, 63322, 63341, 63360, 63379, > 63398, 63417, 63436, 63455, 63474, 63493, 63512, 63531, 63550, 63569, > 63588, 63607, 63626, 63645, 63664, 63683, 63702, 63721, 63740, 63759, > 63778, 63797, 63816, 63835, 63854, 63873, 63892, 63911, 63930, 63949, > 63968, 63987, 64006, 64025, 64044, 64063, 64082, 64101, 64120, 64139, > 64158, 64177, 64196, 64215, 64234, 64253, 64272, 64291, 64310, 64329, > 64348, 64367, 64386, 64405, 64424, 64443, 64462, 64481, 64500, 64519}; > > > void Delay_ms(unsigned int ms) > { unsigned int i, j; > > for(i = 1; i <= ms; i++) > for(j = 1; j <= 250; j++); > } > > void motor(unsigned int m1) > { > > Out_V[0] = M_Value[m1]; > Out_V[1] = M_Value[m1]; > Out_V[2] = M_Value[m1]; > Out_V[3] = M_Value[m1]; > Out_V[4] = M_Value[m1]; > Out_V[5] = M_Value[m1]; > Out_V[6] = M_Value[m1]; > Out_V[7] = M_Value[m1]; > } > > #pragma interrupt_handler timer1_ovf_isr:15 > void timer1_ovf_isr(void) > { > > if(one == 1) > { > > PORTC = 0x01; > TCNT1H = Out_V[Motor]>>1; > TCNT1L = Out_V[Motor] & 0x00FF; > one = 0; > } > else > { > > PORTC = 0; > TCNT1H = servo_ref+(65536-Out_V[Motor]) >> 8; > TCNT1L = servo_ref+(65536-Out_V[Motor]) & 0x00FF; > Motor++; > Motor%=8; > one = 1; > } > } > > void timer1init(void) > { > TIMSK = 0x04; > TCCR1A = 0x00; > TCCR1B = 0x02; > TCCR1C = 0x00; > TCNT1H = 0xFE; > TCNT1L = 0x70; > } > ////////////////////////////////////////////////////////////////////////////////////////////// > void delay(int n) > { > volatile int i, j; > for(i=1; i<n; i++) { > for(j=1; j<30; j++) { > } > } > } > > void one_move(int status) // 1층 알고리즘 > { > volatile unsigned int em, num; > > if(status == 4) num=730; > else if(status == 3) num=495; > else if(status == 2) num=245; > else if(status == 1) num=0; > else; > > for(em=0; em<num; em++) { > delay(100); > MOTOR_PORT = 0x03; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x09; > } > } > > > void two_move(int status) // 2층 알고리즘 > { > volatile unsigned int em, num; > > if(status == 4) num=490; > else if(status == 3) num=245; > else if(status == 2) num=0; > else if(status == 1) num=245; > else; > > for(em=0; em<num; em++) { > if(status == 1) { // 역 방향으로 움직인다. > delay(100); > MOTOR_PORT = 0x09; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x03; > } else { // 정 방향으로 움직인다. > delay(100); > MOTOR_PORT = 0x03; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x09; > } > } > } > > > void three_move(int status) // 3층 알고리즘 > { > volatile unsigned int em, num; > > if(status == 4) num=245; > else if(status == 3) num=0; > else if(status == 2) num=245; > else if(status == 1) num=490; > else; > > for(em=0; em<num; em++) { > if(status == 2 || status == 1) { // 역방향으로 움직인다. > delay(100); > MOTOR_PORT = 0x09; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x03; > } else { // 정 방향으로 움직인다. > delay(100); > MOTOR_PORT = 0x03; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x09; > } > } > } > > > void four_move(int status) // 4층 알고리즘 > { > volatile unsigned int em, num; > > if(status == 4) num=0; > else if(status == 3) num=245; > else if(status == 2) num=490; > else if(status == 1) num=730; > else; > > for(em=0; em<num; em++) > delay(100); // 역방향으로 움직인다. > MOTOR_PORT = 0x09; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x03; > } > > } > > void up_move(int num) > { > volatile unsigned int em; > for(em=0; em<num; em++) { > delay(100); // 정 방향으로 움직인다. > MOTOR_PORT = 0x03; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x09; > } > } > > void down_move(int num) > { > volatile unsigned int em; > for(em=0; em<num; em++) { > delay(100); // 역방향으로 움직인다. > MOTOR_PORT = 0x09; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x03; > } > } > void main(void) > { > volatile unsigned int status=1; // 0->초기 상태, 1->1층, 2->2층, 3->3층, 4->4층 > volatile unsigned int voice_status=0; > > DDRC = 0x01; > timer1init(); > _SEI(); > DDRB=0xFF; // 도트 매트릭스와 연동 > DDRD=0x00; // 음성 모듈 > > DDRA=0x0F; // 7핀:X, 6핀:음성인식모듈2, 5핀:음성인식모듈1, 4핀:음성인식모듈0 > // 3핀:스탭모터3, 2핀:스탭모터2, 1핀:스탭모터1, 0핀:스탭모터0 > DDRF=0xc0; > // 1100 0000 ==> 문open_LED 문close_LED 문open_sw 문close_sw : 4층sw 3층sw 2층sw 1층sw > > DDRG=0x1E; // 0001 1110 ==> x x x 4층LED : 3층LED 2층LED 1층LED x > PORTA=0x0F; > > // 서보 모터 초기 코드 // > Delay_ms(5000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > motor(95); // 0 ~ 180값을 사용 > Delay_ms(5000); > motor(0); // 0 ~ 180값을 사용 > PORTD=0xff; > > while(1) > { > voice_status=PIND; > PORTA=0x0F; > all_sw=PINF; // F포트 상태를 읽어온다. > // voice_Module=PINA; > // voice_Module=(~voice_Module); > // voice_Module=(voice_Module)>>4; // 서보모터 상태를 버린다. > 음성 모듈 상태만 읽어들인다. > // voice_Module=voice_Module^0x07; > > > > if(voice_status == 0xfE || all_sw == 0x3E ) { // 1층sw 눌러 졌을때 0011 1110 > PORTB=0x01; > PORTG=0x02; // 1층 LED 켜진다. 0000 0010 > // up_move(240); > // one_move(); > // return_move(); > > if(status==1) > one_move(1); > else if(status==2) > two_move(1); > else if(status==3) > three_move(1); > else if(status==4) > four_move(1); > else; > status=1; > > Delay_ms(1000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > motor(95); // 0 ~ 180값을 사용 > Delay_ms(100000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > > } else if(all_sw == 0x3D || voice_status == 0xfD) { > // 2층 sw 눌러 졌을때 0011 1101 > PORTB=0x02; > PORTG=0x04; // 2층 LED 켜진다. 0000 0100 > // up_move(490); > // two_move(); > // return_move(); > > if(status==1) > one_move(2); > else if(status==2) > two_move(2); > else if(status==3) > three_move(2); > else if(status==4) > four_move(2); > else; > status=2; > > Delay_ms(1000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > motor(95); // 0 ~ 180값을 사용 > Delay_ms(100000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > > } else if(all_sw == 0x3B || voice_status == 0xfc) { > // 3층 sw 눌러 졌을때 0011 1011 > PORTB=0x04; > PORTB=0x04; > PORTG=0x08; // 3층 LED 켜진다. 0000 1000 > // up_move(730); > // three_move(); > // return_move(); > > if(status==1) > one_move(3); > else if(status==2) > two_move(3); > else if(status==3) > three_move(3); > else if(status==4) > four_move(3); > else; > status=3; > > Delay_ms(1000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > motor(95); // 0 ~ 180값을 사용 > Delay_ms(100000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > > } else if(all_sw == 0x37 || voice_status == 0xfb) { > // 4층 sw 눌러 졌을때 0011 0111 > PORTB=0x08; > PORTG=0x10; // 4층 LED 켜진다. 0001 0000 > // up_move(1020); > // four_move(); > // return_move(); > > if(status==1) > one_move(4); > else if(status==2) > two_move(4); > else if(status==3) > three_move(4); > else if(status==4) > four_move(4); > else; > status=4; > > Delay_ms(1000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > motor(95); // 0 ~ 180값을 사용 > Delay_ms(100000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > > } else if(all_sw == 0x2F || voice_status == 0xfa) { > // 문 close sw 눌러 졌을때 0010 1111 > PORTF=0x40; // 문 close LED 켜진다. 0100 0000 > // down_move(245); > // status=5; > Delay_ms(5000); > motor(0); // 0 ~ 180값을 사용 > Delay_ms(5000); > } else if(all_sw == 0x1F || voice_status == 0xf9) { > // 문 open sw 눌러 졌을때 0001 1111 > PORTF=0x80; // 문 open LED 켜진다. 1000 0000 > // up_move(245); > // status=6; > > // return_move(); > Delay_ms(100); > motor(90); // 0 ~ 180값을 사용 > Delay_ms(5000); > } else { > PORTG=0x00; > PORTF=0x3F; > } > PORTG=0x00; > PORTF=0x3F; > PORTB=0x00; > } > } >
8799 답변완료SE-DM185 모터관련 질문드립니다. 최용욱 2014-05-29 1,402
현재 모터를 구동중에 엔코더 값을 받아오는 것이 난항을 겪고 있습니다. 모터의 A.B상이 사각펄스파형태로 나와야되는걸로 알고있는데 현재 오실로스코프로 확인한 결과 싸인파로 나오고 있는 것을 확인하였습니다. 홀센서의 전원은 5V로 연결하였고 모터 드라이브를 이용해서 PWM신호를 인가하였습니다. 모터는 제대로 돌아가는데 A,B상이 싸인파로 나오는 원인이 무엇인지 답변부탁드립니다.
관리자 답변 관리자 · 2014-05-29
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용해 주셔서 감사합니다. 예전에 측정해봤을때 사각파로 나온것으로 기억됩니니다만, 확실친 않네요. 나중에 한번 찍어볼께요. 이상하네요. 혹시 온라인 강의 중 avr강의에서 엔코더로 찾아 읽어보셨나요? 한번 우선 확인해보세요. 감사합니다. > > > 현재 모터를 구동중에 엔코더 값을 받아오는 것이 난항을 겪고 있습니다. > > 모터의 A.B상이 사각펄스파형태로 나와야되는걸로 알고있는데 > > 현재 오실로스코프로 확인한 결과 싸인파로 나오고 있는 것을 확인하였습니다. > > 홀센서의 전원은 5V로 연결하였고 > > 모터 드라이브를 이용해서 PWM신호를 인가하였습니다. > > 모터는 제대로 돌아가는데 A,B상이 싸인파로 나오는 원인이 무엇인지 답변부탁드립니다. >
8798 답변완료ATmega128 avr studio로 스테핑 모터 구동하기 김준섭 2014-05-29 1,371
저희가 newtc 홈페이지에 있는 모터구동 소스를 받아서 컴파일해보았는데 성공적으로 구동이되었습니다. 그런데 말입니다. 여기서 이모터동작의 역회전으로 구동하고싶은데 어느 부분을 수정해야할지 몰라서 글을 올립니다. 한번 보시고 아시는부분이시면 답변 부탁드립니다. 소스는 right모터만 제어하는 소스로 바꾸었습니다.
관리자 답변 관리자 · 2014-05-29
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용해 주셔서 감사합니다. 소스를 올려주세요. aps파일로는 알수 럾어요 감사합니다. > > > 저희가 newtc 홈페이지에 있는 모터구동 소스를 받아서 컴파일해보았는데 성공적으로 구동이되었습니다. > 그런데 말입니다. 여기서 이모터동작의 역회전으로 구동하고싶은데 어느 부분을 수정해야할지 몰라서 글을 올립니다. 한번 보시고 아시는부분이시면 답변 부탁드립니다. > 소스는 right모터만 제어하는 소스로 바꾸었습니다. >
8797 답변완료온도센서 부착된 보드 질문입니다. 이동수 2014-05-28 1,390
사진과 같은 보드를 이번주 월요일에 구입했는데 온도센서만 사용하려 합니다. 온도 측정이나 스텝 모터로 온도 제어 가능한 예제 소스를 구할 수 없어서 질문 올립니다. 사진에 해당 보드 사진 첨부했습니다.
관리자 답변 관리자 · 2014-05-29
안녕하세요? 고객님, ADC로 자료실에서 소스 검색하여 쓰면 되겠습니다. AVR Studio와 ICCAVR로 된 소스를 주로 올려드리고 있으며, "3축"이라고 해서 찾으면 ADC 소스인데, 3축 가속도 센서 중심으로 된 내용이 있습니다. 이것은 AVR Studio, ICCAVR, 코드비전, IAR까지 모두 소스를 지원하고 있습니다. 감사합니다. > > > 사진과 같은 보드를 이번주 월요일에 구입했는데 > > 온도센서만 사용하려 합니다. > > 온도 측정이나 스텝 모터로 온도 제어 가능한 예제 소스를 구할 수 없어서 질문 올립니다. > > 사진에 해당 보드 사진 첨부했습니다. >
8796 답변완료AVR MEGA128 개발보드(소형) 질문입니다. 소병무 2014-05-28 1,389
저희가 이 AVR MEGA128 개발보드(소형)에 12V 2A 짜리 어답터를 연결 하여 사용하다가 베터리로 개발보드를 작동 시킬까 합니다 그래서 9V 사각건전지 2개(18V)를 레귤레이터로 12V로 만들려고하는데 개발보드에 필요한 전류양은 얼마나 되나요 ? 저희가 모터때문에 모듈에서 12V 출력도 받아 쓰는데 전류를 얼마나 줘야 제대로 작동 하는지 알고싶습니다 필요 전류의 MAX 와 MIN좀 알려주시면 감사하겟습니다! 또 12V 어답터 전원공급하는곳에 11.1 V 주어도 잘 작동 할까요 ?
관리자 답변 관리자 · 2014-05-29
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 소형 개발보드의 경우 60mA 정도면 잘 동작할 것이라, 사각 배터리로도 잘 동작합니다. 9V 한 개만 입력해도 잘 동작하죠. 아답타 입력쪽옆의 12V 하얀색 2핀 커넥터쪽으로 입력하면 됩니다. 본사에 그렇게 쓰는 목적의 2핀 케이블 한쪽 끝이 사각 베터리 연결하는 케이블도 있습니다. 라인트레이서 킷트에 들어갑니다. 하지만, DC 모터도 토크가 많이 안 걸리는 매우 작은 것은 두 개도 잘 돌아가지만, 오랜시간은 곤란합니다. 모터의 전류 소모량이 많기 때문이죠. 가능하면 충전지를 쓰는 게 좋습니다. 본사에도 제품소개의 확장모듈의 전원쪽에 가면 충전지 타입과 충전기가 판매되고 있습니다. 감사합니다. > > > 저희가 이 AVR MEGA128 개발보드(소형)에 12V 2A 짜리 어답터를 연결 하여 사용하다가 > > 베터리로 개발보드를 작동 시킬까 합니다 > > 그래서 9V 사각건전지 2개(18V)를 레귤레이터로 12V로 만들려고하는데 > > 개발보드에 필요한 전류양은 얼마나 되나요 ? > > 저희가 모터때문에 모듈에서 12V 출력도 받아 쓰는데 > > 전류를 얼마나 줘야 제대로 작동 하는지 알고싶습니다 > > 필요 전류의 MAX 와 MIN좀 알려주시면 감사하겟습니다! > > 또 12V 어답터 전원공급하는곳에 11.1 V 주어도 잘 작동 할까요 ? >
8795 답변완료[JTAG Debug문의] KT-M128-KIT, JTAGICE mkII, AVR studio 6.1 입니다. 김용태 2014-05-28 1,580
Q1) KT-M128-KIT를 구입해서 AVR Studio 6.1 을 사용중이며, JTAG 장치 인식 및 KT-M128의 fuse bit r/w 또한 동작이 잘됩니다. simulator로만 debug가 되는데, JTAGICE-MKII 로는 debug 가 되지 않습니다. 원래 지원이 안되는것인지 잘 모르겠네요. KT-M128에서, JTAG을 통한 On chip Debug(이하 OCD)를 하려면 어떻게 setting 해야 하는지요? Q2) KT-M128-KIT를 JTAG을 통한 OCD(mkII 이용)로 하려면, AVR Studio V.4 을 사용하면 되는 것인지요? 다운로드 및 guide 부탁드립니다.
관리자 답변 관리자 · 2014-05-28
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. ATMEGA128에 대해서 AVR Studio V6.x를 이용시, JTAGICE-MKii는 debug가 잘 되는 것으로 ATMEL사에서 설명이 나오고 있습니다. 아래 링크를 참고하세요. - atmel studio - http://www.atmel.com/tools/atmelstudio.aspx - readme file - http://www.atmel.com/images/as6installer-6.0.1843-readme.pdf 특별히 다른 가이드가 있는 것은 아니고, 그림처럼, 체크한 후 Program 하고 사용하세요. 감사합니다. > > > Q1) KT-M128-KIT를 구입해서 AVR Studio 6.1 을 사용중이며, JTAG 장치 인식 및 KT-M128의 fuse bit r/w 또한 동작이 잘됩니다. > simulator로만 debug가 되는데, JTAGICE-MKII 로는 debug 가 되지 않습니다. > 원래 지원이 안되는것인지 잘 모르겠네요. > KT-M128에서, JTAG을 통한 On chip Debug(이하 OCD)를 하려면 어떻게 setting 해야 하는지요? > > Q2) KT-M128-KIT를 JTAG을 통한 OCD(mkII 이용)로 하려면, AVR Studio V.4 을 사용하면 되는 것인지요? > 다운로드 및 guide 부탁드립니다. >
8794 답변완료AM-CS2P사용 질문입니다. 이재락 2014-05-27 1,373
AM-CS2P제품 1-2상 여자방식을 사용할 경우 총 8스텝으로 구성되는 걸 메뉴얼로 확인했습니다. 그럼 1.8도/step 스테핑 모터를 사용할 경우 1스텝당 1.8도를 움직이게 되는건가요?
관리자 답변 관리자 · 2014-05-28
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 1.8도/step 기본 스테핑 모터의 경우 1-2상 여자 사용시 0.9도/스텝 으로 움직에게 됩니다. 감사합니다. > > > AM-CS2P제품 1-2상 여자방식을 사용할 경우 총 8스텝으로 구성되는 걸 메뉴얼로 확인했습니다. > 그럼 1.8도/step 스테핑 모터를 사용할 경우 1스텝당 1.8도를 움직이게 되는건가요? >