속도가 전혀~~~~~~~~~~~~~~~~~~~~~` 제어가 안되네요
무쟈게 빨라서 바디부분이 뿌아질라고 그람니다
답답해 죽겠네
어떻게 해야죠 님들 답변 부탁드려요~
무쟈게 빨라서 바디부분이 뿌아질라고 그람니다
답답해 죽겠네
어떻게 해야죠 님들 답변 부탁드려요~
하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.
번호 | 분류 | 제목 | 글쓴이 | 조회 수 | 날짜 |
---|---|---|---|---|---|
26 | 펌웨어 & 코딩언어 | HOT모니터 정보 읽어올때 프로토콜1 | 빛나는 영혼 | 1365 | 2008.03.06 |
25 | 펌웨어 & 코딩언어 | HOT아~~20 | あさひ | 926 | 2008.01.15 |
24 | 펌웨어 & 코딩언어 | HOT최근에 질문 받은 소스-_-;;1 | 아크마 | 763 | 2007.08.16 |
23 | 펌웨어 & 코딩언어 | HOTRS232 컨트롤 소스2 | 아크마 | 3830 | 2007.04.13 |
22 | 펌웨어 & 코딩언어 | HOT시리얼통신 데모 프로그램 소스2 | 아크마 | 3299 | 2007.04.13 |
21 | 펌웨어 & 코딩언어 | HOT시리얼통신 테스트 프로그램2 | 아크마 | 3254 | 2007.04.13 |
20 | 펌웨어 & 코딩언어 | HOT화상 캠 제어 소스5 | 아크마 | 3284 | 2007.04.13 |
19 | 펌웨어 & 코딩언어 | HOT음성변조 관련 프로그램 소스 모음4 | 아크마 | 6557 | 2007.04.13 |
18 | 펌웨어 & 코딩언어 | HOT어셈으로 구현한 암호화 복호화 - by 아크마4 | 아크마 | 2755 | 2007.08.08 |
17 | 펌웨어 & 코딩언어 | HOTC를 위한 어셈블리어22 | 아크마 | 3150 | 2007.06.06 |
16 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #16 [ 입력/출력 ]10 | 뺘쑝 | 3727 | 2007.06.02 |
15 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #15 [ 인터럽트 : DOS가 서비스를 제공하는 방법 ]5 | 뺘쑝 | 2863 | 2007.06.02 |
14 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #14 [ 스트링 작업 ]6 | 뺘쑝 | 2831 | 2007.05.24 |
13 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #13 [ 산술 연산 ]9 | 뺘쑝 | 3677 | 2007.05.24 |
12 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #12 [ 프로시저 ]9 | 뺘쑝 | 2889 | 2007.05.24 |
11 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #11 [ 제어 흐름의 구현 ]8 | 뺘쑝 | 2529 | 2007.05.24 |
10 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #10 [ 제어 흐름 ]7 | 뺘쑝 | 2650 | 2007.05.24 |
9 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #9 [ 일반 명령문 ]11 | 뺘쑝 | 3230 | 2007.05.11 |
8 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #8 [ 자료의 정의 ]8 | 뺘쑝 | 1933 | 2007.05.04 |
7 | 펌웨어 & 코딩언어 | HOT어셈블리어 강좌 #7 [ 프로그램의 처리 ]6 | 뺘쑝 | 2281 | 2007.05.04 |
그놈 서보모터 감히 고문관님의 말을 안듣다니.
드뎌 찾았습니다.ㅋㅋㅋ 도움되시길....이건 8051 작품란에도 올려놓겠습니다.
동시에 여러개 RC서보 제어하는 방법은 빠라삐리뽀님 글을 찾으면 제가 답변해노은게 있습니다.
이것도 어딘가 소스가 있을텐데.ㅠㅠ
/*
8051을 이용해 IR리모콘으로 RC서보모터 제어
8051을 이용해서 IR리모콘(TV리모콘과 같은)로 RC서보모터를 원격조정하는 것입니다...
만들당시 회로는 너무 간단해서 회로도는 그리지 않았습니다.;;
사진은 차후에 올려드리겠습니다.
작성자 : 아크마
작성일 : 2004년 12월 8일
VERSION : 0.1
*/
// 컴파일러 : 마이크로비젼 7.0
#include <at89x52.h>
/*
645
1382
2119
18432
*/
#define TIME_SEC 20000
#define RATE_8952 0.000001085069444
#define PULS_LEFT 900
#define PULS_MID 2000
#define PULS_RIGHT 5000
#define PULS_OFF 18432
#define SPEED_1 1
#define SPEED_2 2
#define SPEED_3 3
#define SPEED_4 4
#define SPEED_5 5
#define SPEED_6 6
#define SPEED_20 20
#define TIMER0_ON TR0 = 1
#define TIMER0_OFF TR0 = 0
#define TIMER1_ON TR1 = 1
#define TIMER1_OFF TR1 = 0
#define TIMER_IT0_ENABLE ET0 = 1
#define TIMER_IT0_DISALBE ET0 = 0
#define TIMER_IT1_ENABLE ET1 = 1
#define TIMER_IT1_DISABLE ET1 = 0
#define IT_ENABLE EA = 1
#define IT_DISABLE EA = 0
#define SERVO_PORT P2_7
#define TRUE 1
#define FALSE 0
#define REMOCON_RIGHT P1_4
#define REMOCON_DOWN P1_3
#define REMOCON_STOP P1_2
#define REMOCON_UP P1_1
#define REMOCON_LEFT P1_0
#define REMOCON_TEST P1_5
char old_right=1;
char old_down=1;
char old_stop=1;
char old_up=1;
char old_left=1;
typedef unsigned int word;
typedef unsigned char byte;
typedef char bool;
byte flag = 0;
word speed;
word rate= PULS_MID;//PULS_MID;
word angle = PULS_MID;
word target = PULS_MID;
bool chat_flag = FALSE;
long delay_count =0;
long delay_count_h=0;
int led_num = 0;
void delay_s(unsigned int iSec)
{
int iCnt;
while(iSec)
{
for(iCnt=0; iCnt < TIME_SEC; iCnt++);
iSec--;
}
}
void delay_t(unsigned int iTime)
{
while(iTime--);
}
//타이머 초기화
bool InitTimer(void)
{
TMOD = 0x11; // TMOD 1(16bit timer/counter) setting - use TH, TL, [hgigh : M1 = 0, M0 = 1] [low : M1 = 0, M0 = 1]
TH0 = 0x4C;
TL0 = 0x00;
TH1 = 0x4c;
TL1 = 0x00;
TIMER_IT0_ENABLE;
TIMER_IT1_ENABLE;
TIMER0_ON;
IT_ENABLE;
return 1;
}
//인터럽트 초기
bool InitInt()
{
PX0 = 1 ;
IT0 = 1 ;
EX0 = 1 ;
EX1 = 1 ;
IT_ENABLE;
}
// 서보 이동속도 설
void SetSpeed(word s)
{
speed = s;
}
void test()
{
char cnt;
for(cnt=0;cnt<3;cnt++)
{
REMOCON_TEST = 1;
delay_s(1);
REMOCON_TEST = 0;
delay_s(1);
}
}
int main(void)
{
char flag_h = 0;
delay_t(1);
delay_s(1);
InitTimer();
InitInt();
SetSpeed(SPEED_3);
rate = 92;
P0_3 = 0;
while(1)
{
chat_flag = TRUE;
if(old_left!=REMOCON_LEFT)
{
old_left = REMOCON_LEFT;
/*
if(REMOCON_LEFT==0)
{
if(target-100 >= PULS_LEFT)
target-=100;
}
*/
if(REMOCON_LEFT==0)
{
target=PULS_LEFT;
}else
{
target = angle;
}
}
if(old_right!=REMOCON_RIGHT)
{
old_right = REMOCON_RIGHT;
if(REMOCON_RIGHT==0)
{
target=PULS_RIGHT;
}else
{
target = angle;
}
}
if(old_up!=REMOCON_UP)
{
old_up = REMOCON_UP;
if(REMOCON_UP==0)
{
if(speed < SPEED_20)
{
speed+=3;
}
}
}
if(old_down!=REMOCON_DOWN)
{
old_down = REMOCON_DOWN;
if(REMOCON_DOWN==0)
{
if(speed > SPEED_1)
{
speed-=3;
}
}
}
delay_count++;
if(delay_count>40000)
{
delay_count = 0;
switch(led_num)
{
case 0:
P0_0 = 0;
P0_1 = 1;
P0_2 = 1;
break;
case 1:
P0_0 = 1;
P0_1 = 0;
P0_2 = 1;
break;
case 2:
P0_0 = 1;
P0_1 = 1;
P0_2 = 0;
break;
}
led_num++;
if(led_num > 2)
led_num = 0;
}
delay_count_h++;
if(delay_count_h>3000)
{
delay_count_h=0;
if(angle >= PULS_MID-100 && angle <= PULS_MID+100)
{
if(flag_h)
P0_3 = 0;
else
P0_3 = 1;
flag_h = ~flag_h;
}else
{
P0_3 = 0;
}
}
/* target = PULS_MID;
delay_s(15);
target = PULS_MID + 300;
delay_s(15);
target = PULS_MID - 500;
delay_s(15);
*/
}
}
void T0_int (void) interrupt 1
{
TIMER0_OFF;
if(flag == 0)
{
flag = 1;
SERVO_PORT = 0;
rate = PULS_OFF - angle; // low level time
}
else
{
flag = 0;
SERVO_PORT = 1;
rate = angle;
}
if(angle + speed < target)
angle += speed;
else if(angle - speed > target)
angle -= speed;
else
angle = target;
TH0 = ~(byte)((0xff00 & rate) >> 8);
TL0 = ~(byte)(0x00ff & rate);
TIMER0_ON;
}
void ext_int(void) interrupt 0
{
IT_DISABLE;
/*
if(chat_flag)
{//채터링처리
if(target+100 <= PULS_RIGHT)
target+=100;
else
target = PULS_LEFT;
}else
chat_flag = FALSE;
*/
IT_ENABLE;
http://www.micombox.com/avr_work/635
위 글과 같이 잘 보시길..어차피 원리는 다 똑같고 IR리모콘부분만 다르니까요.
참고하겠습니다
근데 우회를회서
rf제어를 하고 있습니다
지금 한번에 많은 각을주지 않고 조금씩주어서 하고있습니다
완전 부드럽지않고 ㅡㅡ 답안나옵니다