Étape 10 : Copiez et collez le code source
/ * Copie d’ici à la fin de ce texteExemple pour DIP32 (8mHz)
*/
Dim M00 pwm(PP0) nouveau
M01 Dim comme nouveau pwm(PP1)
Dim M11 pwm(PP2) nouveau
Dim M10 pwm(PP3) nouveau
Dim IR1 comme nouvel objet ADC(PAD05) //ADC pour capteur Sharp (avant)
Dim IR1Result as new ubyte
Dim IR2 comme nouvel objet ADC(PAD03) //ADC pour capteur Sharp (retour)
Dim IR2Result as new ubyte
Dim myChar nouvel octet //Variable aux personnages de magasin a reçu
Dim S comme nouvel objet SCI(PS0,PS1) //SCI
Dim SPK comme nouveau DIO(PM4) / / à l’aide de haut-parleurs sur le SSIM
ontime const = 20
Dim durée comme nouveau mot
Const A2 = 2273 / / notes de musique
Const A3 = 1136 / / notes de musique
Const A4 = 568 / / notes de musique à faire sonner lorsque le robot voit quelque chose
Dim WLED1 as new DIO(PM2) //LEDs sur les roues
Dim WLED2 as new DIO(PM3) //LEDs sur les roues
Dim boucle as new ubyte
Const OFF = 0
Const sur = 1
Const pour toujours = 1
A const = 200
Const B = 10
Const DEL_1MSEC = 1000
void DelayMsec (en millisecondes octets)
while (millisecondes > 0)
System.Delay (DEL_1MSEC) //Delay 1000 microsecondes pour faire 1 milliseconde
millisecondes = millisecondes - 1
fin tant que
EndSub
void / stop() / / faire arrêter les moteurs
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)
EndSub
void goback() / / robot va revenir
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)
EndSub
void turnright() / / tourner le robot à droite
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)
EndSub
void turnleft() / / tourner le robot vers la gauche
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)
EndSub
void goahead() / / faire le robot vers l’avant
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
EndSub
void wait3() / / mes propres retards
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
EndSub
void wait4()
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
EndSub
void wait5()
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
DelayMsec(A)
EndSub
void wait10() //long retard
boucle = 1
tandis que (boucle < 11)
DelayMsec(A)
Loop = boucle + 1
fin tant que
EndSub
void playsound() / / pour jouer les notes
durée = ontime
while (durée > 0)
SPK. PIN_Out(PM4,on)
système. Delay(a2)
SPK. PIN_Out(PM4,OFF)
système. Delay(a2)
Durée = Durée - 1
fin tant que
DelayMsec(B)
durée = ontime
while (durée > 0)
SPK. PIN_Out(PM4,on)
système. Delay(a3)
SPK. PIN_Out(PM4,OFF)
système. Delay(a3)
Durée = Durée - 1
fin tant que
DelayMsec(B)
durée = ontime
while (durée > 0)
SPK. PIN_Out(PM4,on)
système. Delay(A4)
SPK. PIN_Out(PM4,OFF)
système. Delay(A4)
Durée = Durée - 1
fin tant que
DelayMsec(B)
EndSub
principal
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 et permettre aux 4 personnages d’être mis en mémoire tampon
System.INTS_On () //TURN sur interrompt !
S.SER_Put_string ("Ceci est un test")
S.SER_Put_char ('\n')
S.SER_Put_char ('\r')
tandis que (FOREVER)
IR1. ADC_Start (attente, ADC_MODE_8ONCE) / / lire la valeur du capteur sharp avant
IR1. ADC_Read (PAD05, IR1Result)
IR2. ADC_Start (attente, ADC_MODE_8ONCE) / / lire la valeur du capteur arrière pointu
IR2. ADC_Read (PAD03, IR2Result)
S.SER_Put_decimal(IR2Result,FILLUP_SPACE) / / envoyer la valeur à l’HyperTerminal de windows
S.SER_Put_char ('\n') / / faire une nouvelle ligne sur l’hyper terminal
S.SER_Put_char ('\r')
Si ((IR1Result == 25) ou (IR1Result > 25))
Stop()
PlaySound()
wait5()
WLED1. PIN_Out(PM2,on)
WLED2. PIN_Out(PM3,on)
GoBack()
wait5()
Si ((IR2Result == 25) ou (IR2Result > 25))
Stop()
PlaySound()
wait5()
turnleft()
wait3()
GoAhead()
fin si
Turnright()
wait3()
d’autre
GoAhead()
fin si
Si ((IR2Result == 25) ou (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()
d’autre
GoAhead()
fin si
fin tant que
fin principale