Hur man gör en cool robot från en RC-bil (10 / 11 steg)
Steg 10: Kopiera och klistra in källkoden
/ * Kopiera härifrån till slutet av denna textExempel för DIP32 (8mHz)
*/
Dim M00 som ny pwm(PP0)
Dim M01 som ny pwm(PP1)
Dim M11 som ny pwm(PP2)
Dim M10 som ny pwm(PP3)
Dim IR1 som nya ADC(PAD05) //ADC objekt för skarpa Sensor (framsida)
Dim IR1Result som ny byte
Dim IR2 som nya ADC(PAD03) //ADC objekt för skarpa Sensor (tillbaka)
Dim IR2Result som ny byte
Dim myChar som ny byte //Variable till butiken fick tecken
Dim S som nya SCI(PS0,PS1) //SCI objekt
Dim SPK som nya DIO(PM4) / / med talare på SSIM
CONST ontime = 20
Dim längd som nya ord
CONST A2 = 2273 / / noter
CONST A3 = 1136 / / noter
CONST A4 = 568 / / musik anteckningar för att göra ljud när roboten ser något
Dim WLED1 som ny DIO(PM2) //LEDs på hjul
Dim WLED2 som ny DIO(PM3) //LEDs på hjul
Dim loop som nya byte
CONST OFF = 0
CONST-utskottet på = 1
CONST-utskottet för evigt = 1
CONST A = 200
Konstanten B = 10
CONST DEL_1MSEC = 1000
sub DelayMsec (i byte millisekunder)
medan (millisekunder > 0)
System.Delay (DEL_1MSEC) //Delay 1000 mikrosekund göra 1 millisekund
millisekunder = MS - 1
slutet medan
End sub
sub-stop () / / för att göra motorer stoppa
M00. PWM_Start(PWM_MAIN_CLK,0,250,250)
M01. PWM_Start(PWM_MAIN_CLK,0,250,250)
M10. PWM_Start(PWM_MAIN_CLK,0,250,250)
M11. PWM_Start(PWM_MAIN_CLK,0,250,250)
End sub
sub-goback() / / robot kommer att gå tillbaka
M00. PWM_Start(PWM_MAIN_CLK,0,250,180)
M01. PWM_Start(PWM_MAIN_CLK,0,250,250)
M10. PWM_Start(PWM_MAIN_CLK,0,250,180)
M11. PWM_Start(PWM_MAIN_CLK,0,250,250)
End sub
sub-turnright() / / slå roboten till höger
M00. PWM_Start(PWM_MAIN_CLK,0,250,250)
M01. PWM_Start(PWM_MAIN_CLK,0,250,180)
M10. PWM_Start(PWM_MAIN_CLK,0,250,250)
M11. PWM_Start(PWM_MAIN_CLK,0,250,250)
End sub
sub-turnleft() / / slå roboten till vänster
M00. PWM_Start(PWM_MAIN_CLK,0,250,250)
M01. PWM_Start(PWM_MAIN_CLK,0,250,250)
M10. PWM_Start(PWM_MAIN_CLK,0,250,250)
M11. PWM_Start(PWM_MAIN_CLK,0,250,180)
End sub
sub-goahead() / / gör roboten framåt
M00. PWM_Start(PWM_MAIN_CLK,0,250,250)
M01. PWM_Start(PWM_MAIN_CLK,0,250,180) //left dc
M10. PWM_Start(PWM_MAIN_CLK,0,250,250)
M11. PWM_Start(PWM_MAIN_CLK,0,250,180) //right dc
End sub
sub-wait3() / / mitt eget förseningar
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
End sub
sub wait4()
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
End sub
sub wait5()
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
End sub
sub wait10() //long dröjsmål
loop = 1
medan (loop < 11)
DelayMsec(A)
loop = slinga + 1
slutet medan
End sub
sub-playsound() / / till spelar toner
längd = ontime
medan (varaktighet > 0)
SPK. PIN_Out(PM4,on)
systemet. Delay(a2)
SPK. PIN_Out(PM4,off)
systemet. Delay(a2)
varaktighet = varaktighet - 1
slutet medan
DelayMsec(B)
längd = ontime
medan (varaktighet > 0)
SPK. PIN_Out(PM4,on)
systemet. Delay(a3)
SPK. PIN_Out(PM4,off)
systemet. Delay(a3)
varaktighet = varaktighet - 1
slutet medan
DelayMsec(B)
längd = ontime
medan (varaktighet > 0)
SPK. PIN_Out(PM4,on)
systemet. Delay(A4)
SPK. PIN_Out(PM4,off)
systemet. Delay(A4)
varaktighet = varaktighet - 1
slutet medan
DelayMsec(B)
End sub
huvudsakliga
PWM. PWM_Res_PP0145 (TIMER_DIV_16, 0)
PWM. PWM_Res_PP23 (TIMER_DIV_16, 0)
S.SER_Setup(SER_BUFFER_4,BAUD9600) //Setup SCI och ge 4 tecken att buffras
System.INTS_On () //TURN på avbryter!
S.SER_Put_string ("Detta är ett test")
S.SER_Put_char ("\n")
S.SER_Put_char ('\r')
samtidigt (för alltid)
IR1. ADC_Start (vänta, ADC_MODE_8ONCE) / / läsa värdet från främre skarpa sensor
IR1. ADC_Read (PAD05, IR1Result)
IR2. ADC_Start (vänta, ADC_MODE_8ONCE) / / läsa värdet från tillbaka skarpa sensor
IR2. ADC_Read (PAD03, IR2Result)
S.SER_Put_decimal(IR2Result,FILLUP_SPACE) / / skicka värdet till windows hyper terminalen
S.SER_Put_char ("\n") / / gör en ny rad i hyper terminalen
S.SER_Put_char ('\r')
om ((IR1Result == 25) eller (IR1Result > 25))
Stop()
PlaySound()
wait5()
WLED1. PIN_Out(PM2,on)
WLED2. PIN_Out(PM3,on)
GoBack()
wait5()
om ((IR2Result == 25) eller (IR2Result > 25))
Stop()
PlaySound()
wait5()
turnleft()
wait3()
goahead()
slut om
turnright()
wait3()
annat
goahead()
slut om
om ((IR2Result == 25) eller (IR2Result > 25))
WLED1. PIN_Out(PM2,on)
WLED2. PIN_Out(PM3,on)
Stop()
wait5()
turnright()
wait3()
WLED1. PIN_Out(PM2,off)
WLED2. PIN_Out(PM3,off)
goahead()
wait3()
annat
goahead()
slut om
slutet medan
slutet main