PDA

View Full Version : Control of servo motor wireless



cesar35
- 10th April 2014, 11:20
I'm unable to control a servo wireless
someone can help me
need to control 2 motor and a servo motor.
THANK YOU:)

A VAR BYTE
B VAR BYTE
C VAR BYTE
D VAR BYTE
E VAR BYTE
X VAR BYTE


PAUSE 900
lcdout $FE,1,"P1 P2 P3 P4"

PROG:
GOSUB LCD
ADCIN 0,A
ADCIN 1,B
ADCIN 2,C
ADCIN 3,D
ADCIN 4,E:X=(E+20)
PAUSEUS 50
hserout ["PC",A,B,C,D,X]
GOTO PROG

LCD:
lcdout $FE,$C0,dec3 A," ",dec3 B," ",dec3 C," ",DEC D," "
pause 200
RETURN


A VAR BYTE
B VAR BYTE
C VAR BYTE
D VAR BYTE
E VAR BYTE


PROG:
hSerIn [WAIT("PC"),A,B,C,D,E]
if (A>160) THEN FRE
IF (A<100) THEN TRA
IF (B>160) THEN DIR
IF (B<100) THEN ESQ

pulsout PORTB.0,E 'SERVO MOTOR


PORTC.0 = 0
PORTC.1 = 0
PORTC.2 = 0
PORTC.3 = 0
PORTC.5 = 0
GOTO PROG

FRE:
PORTC.0 = 1
PORTC.1 = 0
PORTC.2 = 0
PORTC.3 = 1
PORTC.5 = 1
GOTO PROG

TRA:
PORTC.0 = 0
PORTC.1 = 1
PORTC.2 = 1
PORTC.3 = 0
PORTC.5 = 1
GOTO PROG

DIR:
PORTC.0 = 1
PORTC.1 = 0
PORTC.2 = 1
PORTC.3 = 0
PORTC.5 = 1
GOTO PROG

ESQ:
PORTC.0 = 0
PORTC.1 = 1
PORTC.2 = 0
PORTC.3 = 1
PORTC.5 = 1
GOTO PROG

tasmod
- 10th April 2014, 12:45
A bit more information needed. What chip? ADCON settings? HSERIN/OUT settings?

Is this what you mean (Renamed slightly for clarity in MCS)

GOSUB LCD probably wants to be at end of PROG as first run will show no values.



A VAR BYTE
B VAR BYTE
C VAR BYTE
D VAR BYTE
E VAR BYTE
X VAR BYTE


PAUSE 900
lcdout $FE,1,"P1 P2 P3 P4"

PROG:
GOSUB LCD
ADCIN 0,A
ADCIN 1,B
ADCIN 2,C
ADCIN 3,D
ADCIN 4,E:X=(E+20)
PAUSEUS 50
hserout ["PC",A,B,C,D,X]
GOTO PROG

LCD:
lcdout $FE,$C0,dec3 A," ",dec3 B," ",dec3 C," ",DEC D," "
pause 200
RETURN


;-------------------------------------------------------------------------
;Wireless receiver

A1 VAR BYTE
B1 VAR BYTE
C1 VAR BYTE
D1 VAR BYTE
E1 VAR BYTE



PROG1:
hSerIn [WAIT("PC"),A1,B1,C1,D1,E1]
if (A1>160) THEN FRE
IF (A1<100) THEN TRA
IF (B1>160) THEN DIR
IF (B1<100) THEN ESQ

pulsout PORTB.0,E1 'SERVO MOTOR


PORTC.0 = 0
PORTC.1 = 0
PORTC.2 = 0
PORTC.3 = 0
PORTC.5 = 0
GOTO PROG1

FRE:
PORTC.0 = 1
PORTC.1 = 0
PORTC.2 = 0
PORTC.3 = 1
PORTC.5 = 1
GOTO PROG1

TRA:
PORTC.0 = 0
PORTC.1 = 1
PORTC.2 = 1
PORTC.3 = 0
PORTC.5 = 1
GOTO PROG1

DIR:
PORTC.0 = 1
PORTC.1 = 0
PORTC.2 = 1
PORTC.3 = 0
PORTC.5 = 1
GOTO PROG1

ESQ:
PORTC.0 = 0
PORTC.1 = 1
PORTC.2 = 0
PORTC.3 = 1
PORTC.5 = 1
GOTO PROG1

cesar35
- 10th April 2014, 16:23
hello tasmod
Thanks for responding to my message
I need ponteciometro stay in the middle and the servant is in the center to divide right and center left.
Could you help me with this
thank you

tasmod
- 10th April 2014, 16:46
Need to know which PIC chip you are using.

What other settings you have made. Such as ADCON HSERIN etc.

cesar35
- 10th April 2014, 17:06
hello tasmod
When the potentiometer Reaches the end the servant is out of position
here s configuration Requested that I am using
thank you

DEFINE OSC 4
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 25
DEFINE HSER_CLROERR 1

DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
ADCON1=%1001001

tasmod
- 10th April 2014, 18:02
Please say which PIC you are using

Is it 16f88 or 16f877 or an 18f

cesar35
- 10th April 2014, 18:08
01 pic16f876a tx
01 pic16f876a rx
excuse me

tasmod
- 10th April 2014, 18:22
Quick look shows ADCON0 doesn't have enough bits set. There's only 7

ADCON1 ??


ADCON1 = %10000100 ' Set PORTA analog and RIGHT justify result

cesar35
- 10th April 2014, 18:39
I USE 5 pot
01 POT LEFT AND RIGHT
01 POT DOWN AND UP
01 SERVO POT