RP6CC128 - Jouets AREXX - Notice d'utilisation et mode d'emploi gratuit
Retrouvez gratuitement la notice de l'appareil RP6CC128 AREXX au format PDF.
| Caractéristiques techniques | Modèle : AREXX RP6CC128, Type : Jouet électronique, Alimentation : Piles non incluses |
|---|---|
| Utilisation | Destiné aux enfants, Favorise l'apprentissage et la créativité, Utilisation sous la supervision d'un adulte recommandée |
| Maintenance et réparation | Nettoyer avec un chiffon doux, Vérifier régulièrement les piles, Remplacer les pièces endommagées si nécessaire |
| Sécurité | Ne pas laisser les enfants jouer sans surveillance, Éviter l'exposition à l'eau, Vérifier l'absence de petites pièces pouvant être ingérées |
| Informations générales | Âge recommandé : 3 ans et plus, Garantie : 1 an, Conformité aux normes de sécurité des jouets |
FOIRE AUX QUESTIONS - RP6CC128 AREXX
Questions des utilisateurs sur RP6CC128 AREXX
0 question sur cet appareil. Repondez a celles que vous connaissez ou posez la votre.
Poser une nouvelle question sur cet appareil
Téléchargez la notice de votre Jouets au format PDF gratuitement ! Retrouvez votre notice RP6CC128 - AREXX et reprennez votre appareil électronique en main. Sur cette page sont publiés tous les documents nécessaires à l'utilisation de votre appareil RP6CC128 de la marque AREXX.
MODE D'EMPLOI RP6CC128 AREXX
Cette notice fait partie du produit. Elle contient des informations importantes concernant son utilisation. Tenez-en compte, même si vous transmettez le produit à un tiers.
Conserve cette notice pour tout report ultérieur!
Note de I'éditeur
This notice is an publication de la société Conrad, 59800 Lille/France. Tous droits réservés, y compré la traduction. Toutre reproduction, qu'elle que soit le type (p.e.: photocopistes, microfilms ou salable dans l'attribution à l'électronique) est sümme à une autorisation prétable déserte de l'éducateur.
Reproduction, même partie, infertile.
Cette notice est conforme à l'état du produit au moment de l'implosion.
Données techniques et conditionnement soumils à modifications de la nature des opérations. © Copyright 2001 par Conrad, Imprimé en CEE, XXX/07-11/FQ

RP6 C-Control PRO M128 Module d'extension

IMPORTANT A line absolement
Avant demettre en marche,vote module d'extension RP6,il est important delire entiemente mode d'emploi,celui du SYSTEME ROBOT RP6 et celui du C-Control PRO !Ils contienent des explications Importantes quant a uneutilisation correcte et vous informant d'eventuels dangers possibles!De plus,ilspossecdesinformationstomentiques,qui ne sont nullement evidentes pour la plupart des utilisateurs.Le mode d'emploi du RP6 CCPRO M128n'est qu'uncomplément!
En cas de non observation de ce mode d'emploi et de celui du système robot RP6, toute garantie prend fin! De plus, AREXX Engineering ne sera tenu pour responsable pour tout type de dommages, resultant d'une non observation de ce mode d'emploi!
Prétez toute votre attention au paragraphe « consignes de sécurité » du mode d'emploi du SYSTÉME ROBOT RP6!
Remarques sur la garantie limite et la responsabilité
La garantie de AREXX Engineering se limite à l'échange ou à la réparation du robot et de ses accessoires, dans le déalié de garantie légaie en cas de fautes de production avérées, comme des dommages mecaniques, des pieces d'equipement manquantes ou fausses, exceptés tous les composants branchés à des connecteurs/socles.
B. Recyclage et consignes de sécurité

Recyclage
Le RP6 et les composants annexes ne doivent pas etre elimines dans les ordures menageres! Le RP6 et ses accessoires doivent etre apportedes a une dechetterie a tri sélectif ou bien a une collecte d'apparels électriques usages, comme tout apparellé electromager!
Si vous avez des questions à ce propos, renseignez-vous auprès de toute commercant.
Consignes de sécurité pour les accus et les ples
Les accus et les piles ne sont pas à laisser entre les mains des enfants! Ne laisser pas les piles/accus trainer à la vue de tout le monde, les enfants ou les animaux domestiques risquoraient de les ingérer. En cas d'ingestion, consulter immédiatement un medecin!
Les piles qui fuient ou abimées peuvent provquer des brûlures en cas de contact avec la peau, dans ce cas, utilisez des gants de protections adaptés ! Veilze à ce que les piles/accus ne doivent pas mis en court-circuit ou ne soit pas jétés dans le feu. Les piles normales ne doivent pas être recharges ! Il existe un risque d'explosion ! Seuls les accumulateurs concurs pour être recharges, comme par exemple les accus NIMH, peuvent être charges avec un chargeur适应é!
Recyclage des accus et des piles
Tout comme le robot, les accus et les ples ne doivent pas etre eliminés dans les ordures menagères! En tant qu'utilisateur final, vous est tenus par la loi de restituer toutes les piles et tous les accus usages ! Il est strictement interdit de les jeter dans les ordures menagères!
De ce fait, amenez vos accus usages/lieux ou vos piles vides à votre commercant ou à une collecte de piles de vos commune! Vous pouvez également amencer les accus et les piles usages dans tous les lieux ou des accus et des pile sont vendus.
Vous rempilisez ainsi vos obligations legales et contribueez a la protection de I'environnement.
Adresse EEPROM bus ^2 ..

Egalement deux bits (A0 et A1) de l'adress de un EEPROM optionnel à embollement pouvant être modifiées.
Tenez compte de la fiche technique de l'EEPROM! Le schéma d'adressage peut varier en fonction de chaque constructeur!
L'adresse de l'EEPROM correspond en écriture binaire à : 10100[A1][A0]0
Les adresses possibles sont: 0xA6, 0xA4, 0xA2 et 0xA0 (160 decimales)
LED:

Les LED se désactiver par jumper. Dans le champ de ce jumper, vous pouvez utiliser, entre autres, des I/O ou des sorties de commutation directement sur le connéur. LED1 et 2 sont connectées avec les portes I/O PG3 et PG4, LED3, 4 et 5 seulement à des sorties propres au registre à glissement, auquel est aussi branché le LCD.
Il n'existe aucune responsabilité pour des dommages résultat directement ou après l'utilisation du robot. Les réclamations reposant sur des consignes légales nécessaires sur la responsabilité du fait des produits restent intactes.
Dés que vous procédé à des modifications irreversibles sur le robot ou accessoire (par exemple: soudage de pieces supplémentaires, forage d'autres troux, etc.) ou que le robot subit des dommages suite à la non observation de ce mode d'emploi, toute garantie prend fin!
Il ne peut être garantie, que le calculi fourn avec chaque version suffit ou qu'il est possible de travailler entierement avec sans interruption ou erreur.
De plus, le logiciel fourni est modulable et peut être charge dans l'appareil par l'utilisateur. Ànsi, l'utilisateur prend un risque quant à la qualité et l'efficacité de l'apparil y compris tous lesologiçés.
AREXX Engineering garantit la fonctionnalite de l'exemple d'application foumi tout en observant les conditions specielles dans les données techniques. S'il est provue que le robot ou le calculi pc est en plus defectieux ou insuffisamment, le client prend en charge tous les coûts pour le service, la réparation ou la correction.
Tenez egalent compte de I'accord de licence du CD-ROM
Symboles
Les différences symboles suivants sont utilisés dans ce mode d'emploi :

Le symbole « attention » indique un paragraphe particulièrement important, que vous doivent soignement respecter. Si vous effectue une erreur, cette peut conduire à une destruction du robot ou de ses accessioires et même menace votre personne ou la santé des autres!

Le symbole « information » vous indique un paragraphe contenant des trucs et astuces ou des informations de fond. Il n'est pas essentiel de tout comprendre, mais cela reste tout de même très utilis.
SOMMAIRE
- Le module d'extension RP6 CCPRO M128
1.1. Support
1.2.Contenu
1.3. Caracteristiques et données techniques
- Montage du module d'extension
2.1. Test de fonction
- Programmation
3.1. Consulter le bouton start et demarrage du programme
3.2. Initialisation
3.3.Deliverr du texte
3.4.LED de statut
3.5.Beeper
3.6.Bus I2C
3.6.1. Envoyer des commandes
3.6.2.Lire des données
3.6.3.Capteur de tempéature
3.7.Bus SPI
3.8.Ecran LC
- Programmes d'exemple
ANNEXE
A-Affectation des broches
B-Recyclage et consignes de sécurité
1. Le module d'extension RP6 CCPRO M128
Gracé au module d'extension RP6 CCPRO M128 vous pouvez ajouter à votre système robot RP6 un module performant C-Control PRO MEGA128 de Conrad Electronic (code article 198219). Ce module compte un contrôleatmol ATMEGA128 avec une Flash ROM 128 Ko, un SRAM de 4 Ko et de nombreux port I/O. Il existe une mémoire d'extension sur le module d'extension, qui augmente la mémoire vivie à 64 Ko et permetais ainsi l'execution d'important algorithms, comme par exemple, une simple préparation d'étnirimagee. Le pilotation d'un hardware complexe est également possible.
Interruptions :

Ce bloc jumper peut être utilisé pour brancher PE6 et PE5 avec les cables d'interruption du XBUS. Cela peut par exemple être utilisé pour émettre de constantes interrogations (« Polling ») du Slaves l'°C. Au lieu de cette celles-ci mettent un des cables d'interruption à un niveau Low lors de modifications d'état. Sur le schéma, PE6 et INT3 sont reliés, ainsi que PE5 et INT1, il s'agit d'une configuration standard l'INT1 doit être relié avec PE5, afin que les programmes d'exemple fonctionnement correctement! Mieux vaut ne pas brancher PE6 avec deux cables d'interruption en même temps, même si cette est possible avec le bloc jumper!
Adresse du capteur de température bus FC :

Deux bits (A0 et A2) de l'adresse du capteur de température peuvent être modifiés afin de pouvoir coriger d'éventuels conflicts (c'est-à-dire d'adresses identiques) avec d'autres produits sur le bus I/C.
Tenez compte de la fiche technique du capteur de température!
L'adresse du capteur de température correspond en écriture binaire à : 1001[A2]A[A0]0. A vraîde, cette adresse n'est longue que de 7 bits, soit 100100 -> 0x48. Le bit écriture lecture doit être cependant directement incorpore dans le programme (sera place automatique), d'ou 10010000 -> 0x90 (144 décimales).
L'imagé indique le réglage standard de l'adresse sur 0x90.
D'aoutres adresspeossibles:0x92,0x98 et 0x9A.
Si vous ne souhaïte pas installer le LCD standard, vous pouvez assembler votre propre cable à 14 pôles en se basant sur l'affection des broches ci-contre.
Les lignes D0, D1, D2, D3, RW sont fermement branchées avec GND, puisque nous exploitons le LCD seulement en mode 4 Bit et qu'il n'y a pas besoin d'y dire quelque chose (RW est également sur la masse).
Veilze absolutément à une affection correcte des broches et à ne pas brancher les connecteurs à l'envers!
Les designations des broches varient d'un fabricant à un autres, mais elles sont généralement identiques à celles que nous avons utilisées ici et vous pouvez brancher les broches 1:1 avec l'écran!
PORTA et PORTC

Les connecteur pour PORTA et PORTC ne sont PAS équipés. Ils ne sont qu'optionsnels, au cas où vous aieurlez réellement besoin de nombreuses broches I/O, mais que vous pouvez renconcer au SRAM extreme. Vous pouvez le désactiver sur un jumper non équipe lui aussi (le branchement de ce jumper est place sur l'arrière de la platine via piste conductrice - on peut facilement le sectionner à l'aide d'un cutter, et ensuite dessouder le jumper).
L'afactation des broches du PORTC est imprimée sur la carte mère. Vous pouce, par exemple, dessouder une barrette à un seul rang de broches et à 9 pôles si besoin est.
Jumper
You've ares certain jumper sur le module afin de configurer les composants sur le module.
En plus de ses composants centraux, le module compte également un capteur de température de 12 Bit, un piezo pour la création d'un signal sonore, 5 LED et un port pour écanner LC, sur lequel vous pouvè directement brancher un LCD xyte standard.
Plusieurs possibités d'extension sont disponibles grâce à 3 branchements pour des servos, 16 l/O libres (dont 8 canaux convertisseurs analogue/numérique (ADC)), un UART (une deuxieme interface séquentuelle), un socle DILB pour un bus EEPROM FC de la série 24LCxxx, ainsi qu'un branchement bus SPI pour la commande d'autres hardwares telles qu'un registre à glissement, ADC, DAC, Flash-ROM (cartes mémoire) ou autre. Les interfaces sont disponibles sur des connecteurs standard, à 10 pôles, et peuvent être facilement reliés à la plaque perforée de la platiné d'experimentation.
En désactivant quelques composants sur la carte-mère, vous pouvez libérer jusqu'à 19 autres portes l/O et 3 sorties de commutation (16 portes l/O reviennent au SRAM, les branchements pour une autre utilisation de ces port doivent absolument être équipés d'un connecteur enficiable).
Comme environnement de développement, vous pouvez utiliser le CCPRO IDE de Conrad Electronic. Il est très facile à utiliser et propose plusieurs fonctionsComfortables. Il y a deux langages de programmation différent au besoin : Basic et Compact C. Le Basic est plus facile à apprendre pour les débutants que le C, mais a une etendue de fonctions identique. La bibliothèque de fonctions du CCPRO Unit est importante et prend même le multithreading en charge. Rêférez-vous à la documentation détaillée du C-Control Pro pour plus d'informations !
Avant que vous ne mettrie en route votre RP6 CCPRO M128, vous doivent absolument如果您 familiarisser avec le robot en testant tous les programmes d'exemple SANS que le module d'extension ne soit monte dessus. Il faut considérer ce mode d'emploi comme un ajusté auquel du RP6 ET du C-Control PRO. Dans tous les cas, veilliez lire ce manuel avant d'utiliser vos RP6-M128! Vous pouverez survolver le chapitre sur la programmation si besoin est, et dans ces cas la mise le mode d'emploi du CCPRO Unit. Veiliez cependant à ce que les programmes d'exemple du CCPRO Unit n ont pas été écrites spécialment pour le RP6. Seule le code de programme de ce mode d'emploi et dans les programmes d'exemple est directement exécutable sur le module d'extension. Tous les autres programmes doivent êtreAAParavant légarement adaptations (avant tout autres affections d broches).
Indication important pour les débutants : Les programmes écrites pour le RP6 CCPRO M128 ne fonctionnel ABSOLUMENT PAS correctement sur le micro contrôleur de l'unité de base et vice et versa (processeurs, disposition des broches et fréquence élémentaire totalement différents) !
Pour toute question ou problème, vous pouvez Jointre notre Support Team comme suit sur Internet (avant de nous contacter, veillez dire attentivement et entierement ce mode d'emploi! La plupart des réponses à vos questions se trouvent dedans)!
-surnotf.org:http://www.arexx.com/forum
-pare-mail:info@arexx.nl
-adresse postale:
AREXX Engineering
Nervistaat 16
8013 RS ZWOLLE
PAYS-BAS
- Pour toutes les informations de contact, les mises à jour logiciel et autres informations, rendez-vous sur notre page d'accueil :
http://www.arexx.com/
et sur la page d'accueil du robot :
http://www.arexx.com/rp6
et sur la page d'accueil du C-Control:
http://www.c-control.de
ainsi que sur le forum (non officiel) C-Control :
http://ccpro.cc2net.de
1.2. Contenu
Voudevez trouverlesarticlesuivants danslaboite duRP6CONTROLM32:
Le module RP6 CCPRO M128
CD-ROM avec le logiciel et la documentation
- 4 x boulon d'ecartement 25 mm M3
-4xvisM3
-4x ecrou M3
- 2x cable ruban 14poles
Le logiciel et le mode d'emploi PDF se trouvent sur le CD-ROM. Les versions actuallises des logiciel et ce mode d'emploi se trouvent également sur notre page d'accueil! Le logiciel pour le C-Control PRO est disponible sur http://www.c-robotics.com ou http://www.c-control.de!
ATTENTION: il y a plusieurs variantes de servos! Verifie优越aravant les affections des broches et faites attention à la polarité !
Les canaux ADC :

Les 8 canaux ADC libres (qui sont bien evidemment utilisables comme broches I/O) sont disponibles avec la tension d'alimentation sur le connecteur ADC a 10 pôles.
Deux des ADC (ADC4 et ADC6) sont en plus disponibles sur deux connecteurs à 3 pôles pour brancher, par exemple, directement des captures de distance IR analogiques.

Port LCD:

Bus SPI et ports I/O :

Vou pouvrez brancher jusqu'à 5 pucees compatibles SPI sur le bus SPI (et meme plus avec un decedeur d'adressee externe).Le bus SPI peut ettre utilise pour un registre a glissement rapide,EEPROM,memoire FLASH,convertisseur N/A et A/N,etc.5 broches I/O sont disponibles (PBO/SS est reservé pour le bus SPI lorsqu'il est en mode Slave SPI et peut sinon ettre utilisée comme un I/O),qui peuvent ettre utilisées pour les signaux « Chip select » ou tout simplement comme des broches I/O tout a fait normales. Il s agit de PBO,PB4,PB7,PES et PE7.
PB1, PB2 et PB3 ne peuvent PAS être utilisées comme broches I/O normales, un registre à glissement est déjà connecté au module afin de commander le LCD et certaines LED (sansque vous n'avez pas besoin de ces composants, une utilisation de ces broches comme I/O normales est envisageable. Attention au schéma de connexion!). PB7 est disponible en plus sur l'un des branchements serve, vous ne devez donc l'utiliser que pour un servo OU une ligne Chipselect.
Les servos :

Comme nous l'avons déjà mentionné, PB5, PB6 et PB7 sont disponibles aux branchements servos à 3 pôles. Vous pouvez brancher ici directement des servos avec une affection des connecteurs adaptée.
1.3. Caracteristiques et données techniques
Cette partie vous offre un aperçu de ce que le RP6 CCPRO M128 vous offre et sort en même temps d'introduction de certains termes et appellations des composants du module.
Caracteristiques, composants et données techniques du RP6 CCPRO M128 :
- Logement pour le programme pulsuant C-CONTROL PRO MEGA128 avec un microcontrôleur 8 Bit Atomel ATMEGA128
Cadence de 14,7456Mhz (dite quartz de taux de Baud pour atteindre le taux de bit le plus exact avec l'interface sequentienne.
Mémoire: 128 Ko Flash ROM, 4Ko SRAM interne et 64 Ko de SRAM extérieur pour l'extension sur le module, 4 Ko EEPROM.
Programmable en Basic et CompactC.
...retrouvez plus d'infos techniques sur la documentation du CCPRO Unit) !
- Connecteurs d'extension Bus P-C
Peut contrer tous les Bus Slaves I C.
Le MEGA128 peut être utilisé comme Master ou Slave. Généralement, il vaut moins l'utiliser comme Master pour un contrôle complet du robot (le contrôleur de la carte mère se charge en effet de la régulation de la vitesse du moteur, ACS, IRCOMM, surveillance de l'accu, etc. de façon autonome et decharge ainsi le contrôleur du module d'extension).
- Capteur de température bus FC 12 Blt
Afin de mesurer précisé la tempéature environnante.
Résolution au besoin de 0,5 à 0,0625°C. Exactitude la mesure d'env. 1°C.
- Socle pour Bus EEPROM PC du type 24(L)Cxxx (non f
Les données sont conserves après l'arrêt sur l'EEPROM.
Disponible jusqu'à une capacité de 1 Mbit (= 128 Kbyte) - idéal, entre autres, pour les enregistrateur de données.
1 million de fois reinscriptible
Signaurep plezo
Pour creer des sons et des melodies simples
Signaleur pour faire part d'une erreur ou d'un changement de statut, par exemple
念 Peut etre desactive-le port I/O est alors disponible pour le connecteur.
-5LED de statut
Pour la representation des etats d'un programme ou d'un capteur
Deux LED sont branchées à un port I/O, les trois autres à la sortie du registre à glissement. Vous pouvez désactiver les LED via le Jumper - les I/O ou les sorties de commutation sont alors disponibles pour d'autres applications.
- Port Ecran LC
Pour le branchement d'un écran LC texte standard. De préférence des LCD compatibles HD44870, par exemple avec 16 x 2 ou 16 x 4 lignes. Nous vous conseillons toute fois de prendre les dimensions avant l'achat et de commander le matériel de montage adaplé!
L'écran peut afficher, par exemple, des messages textes, des menus, des statuts de programme ou encore des valeurs de capteur.
- 19 ports I/O disponibles pour le contrôle de votre circuit et de vos capteurs
8 d'entre eux sont utilisables comme canaux convertisseurs analogique/ numérique (ADC).
3 peuvent servir desorties PWM, par exemple pour le contrôle de servos.
Une interface séquentiellesupplémentaire (UART) est disponible sur deux I/O.
Vous pouvEZ libER qu'a 19 porto I/O en desactivant les composants sur le module, 16 d'entre eux sont de toutes faconas allouedes pour le SRAM. Les connecteurs de ces porto I/O ne sont pas soudes au module, puisquils ne sont utilisés qu'en cas d'exception. Le grand SRAM est generalément plus utilise (Vous pouvaz ajouter des I/O sur le port Expander du bus PC si besoin est).
- Jusqu'à 2 interrupteurs externes sur la connexion XBUS utilisables.
- Un bouton poussoir pour le démarrage du programme et d'autres fonctions.
- Branchement pour une interface USB RP6 pour le téléchargement de programme
Le télèchargement de programme fonctionne sur l'interface USB, comme pour le robot, mais dans tous les cas pas avec le calculié RP6Loader mais directement sur le CCPRO IDE. Vous pouvez, si vous le souhaïez, utiliser la carte d'application CCPRO pour programmer le CCPRO Unit. Vous doivent pour cela le changer de prise (cela n'est pas capendant pas nécessaire lorsqu'un LCD doit encore être monté).
Sont fournis également pour les langages Basic et CompactC 20 programmes d'exemple chacun, afin de vous permettre un apprenticessage plusrapide.
Vou puevez couver sur les pages web du robot et du C-Control PRO plus de programmes et de mises a jour, mis a disposition. Bien evidement, vous pouverez aussi échéanger votre propre programme sur Internet avec d'autres utilisateurs!
ANNEXE
A. Affectations des broches
Voutrouvez dans ce chapitre les affections des broches des connecteurs et des blocs à souder les plus importantes.
Ports I/O :

Certaines broches I/O libres et la tension d'alimentation de 5V sont disponibles sur les connecteurs I/O.
SND/PE3, PB5, PB6, PD2, PD3, PD4, PD6 et PD7
PE3 (OC3A) est relié au signaleurpiozo (SND),cellui-ci peut ettre désactivé par Jumper allen libérer cette broche I/O.PB6 et PB5 sont disponibles en plus pour des branchements sur la plage avant de la platine. Bien evidemment, ces broches ne peuventetre utilisées que pour une seule chose à la fois -soit comme broche normale I/O OU comme sortie servo. Ainsi, nutilissez PAS en meme temps les broches sur les deux connecteurs!
ATTENTION : Veuillez ne pas connecter la broche de tension d'alimentation avec un autre mode d'extension (par exemple un module d'experimentation) à la broche de tension d'alimentation de ce connecteur, afin d'éviter toule boucle de masse.
4. Programmes d'exemple
Voutrouvêrez sur le CD respectivement 20 programmes d'exemple complets en CompactC et Basic. Les programmes d'exemple pour le module CCPRO sont détaillés en allemand.
Ces programmes d'example démontré les fonctions fondamentales du module d'extension du RP6 CCPRO M128. comme pour le robot, elles ne représentent enaucun cas une solution optimale, mais只会ul un point de départ pour vos propresprogrammes. Nous avons deliberément choisir de proceser ainsi, afin qu'il vous restecore quelque chose a faire - il seraient en effet ennueyeux, de tester seulement desprogrammes préfabriques, qu'en dites vous?
Il existe quelques programmes d'exemple pour le C-Control PRO sur Internet et dans le pack du CCPRO IDE. Vous doivent façpond fait attention, à ce que les autres programmes d'exemples s'adaptent au matériel du RP6 CCPRO M128 – cela risque sinon de ne pas fonctionner (les problèmes les plus courants sont une affectation des broches différente, l'emploi de modules d'hardware déjà utilisés ailleurs, comme par exemple les minuteurs, etc.)!
Les programmes d'exemple se montent les uns sur les autres - c'est-à-dire que « Example 01
_HelloWorld doit être regardé, testé et compris avant « Example_02_Bepper »! De « Example_07_RP6_Sensors1 » jusqu'à « Example_09_Behaviour4 », un programme d'exemple complexe est monté petit à petit, dans lequel le robot peut esquiver des obstacles à l'aide de la technologie des capteurs infrarouges.
Attention, tous les exemples pour le RP6 ne sont pasforcément compréhensibles pour les debutants! Il est recommendé de démarrer dans un premier temps avec un programme facile et d'avancer pas à pas. Les programmes d'exemple du C-Control PRO sont avant tout important pour une compréhension fondamentale et doivent être travaillés au préalable. Des essais avec l'hardware RP6 ne fonctionnent malheureusement que dans de rares cas, puisque les programmes pour la carte d'application du C-Control PRO ont été écrites (hardware et affectation des broches différents). Mais dire les commentaires et chercher à saisir ce qui est réellement fait est très utile pour la compréhension!
Les exemples complexes utilisant par autres le multithreading mis à la disposition du CCPRO. ici (et pour d'autres choses encore), il est recommendé de dire la documentation du CCPRO avant de comprendre le mode de fonctionnement de programmes d'exemple spécifique du RP6!
Vousoupezutiliserl'exemple comme modèle pourvoireproproprogramme -il existe d'ailleurs pour chaqueprogramme d'exempléune versioncomplete mais non commentede.
Nous avons atteint la fin de ce petit mode d'emploi additionnel. Vous pouvez désormais faire place à votre propre créativité, et ainsi écrire de nouveaux programmes ou placer de nouveaux capteurs sur le RP2, contrôlés par le RP6-CCPRO-M128 – ou bienmettre tout autre chose en place!
2. Montage du module d'extension

Vouvevez tout d'abord enricher correctement le CCPRO MEGA128 Unit sur le module d'extension. Pour toute sécurité, voirze a ne manipuler le module qu'vec un objet mis à la terre, affirm qu'il se décharge. Par exemple, un tuyau nu d'un corps chaud ou d'une piece métallique d'un boitier d'ordinateur (prise a 3 pôles!).
Veuilence contrôler AVANT le montage la position de tous les Jumper sur le module (cf. Annea I) Ceux-ci doivent se tracer dans leur position standard.
Il n'y a qu'une orientation du module CCPRO adaptée (cf. image). Veillez bien a ce que toutes les broches seront correctement insérçés dans les douillés de la platine!

Le montage nécessite un peu de force, mais veiliez à ne pas appuyer trop fort! Maintené le dessous plat de la plataine directement en dessous du module avec un ou deux doits. Attention: les soudures tout autour sont légersément pointues! Veiliez donc à ne toucher que la surface libre en dessous du module!
La façon dont vous deveze fixer le module d'extension sur le robot depend des autres modules d'extension que vous avez deja, eventuellement, monte sur le robot.
Pour monter le module sur le robot, vous neveze d'abord devisees les 4 vis de la carte mere. Vous pouce également, si vous le souhaitez, detacher prudement un petit connecteur de la piatine bumper, afin de soulever entierlement la carte mere. Cependant, cela n'est pas nécessaire, si vous vous servez de vos doigs pour atteindre ce qu'il y a en dessous de la carte mere et pour visser les boulons d'ecartement avec les écrous M3.

Attention : Lorsque vous rebranchez le cable de la platine Bumper, maintenez l'arriere de la platine du capteur avec un doigt afin d'éviter qu'elle ne soit poussaïe trop fortément vers l'arrière ! Autrement , vous pouvez également dévissez les 2 vis de la platine Bumper et faître passer le cable...

Vouppouvessu vissez les 4 boulons d'ecartement 25mm M3 avec les ecrous M3 dans les trous de fixation de la carte mere, comme represente sur la photo. Sur Iimage au dessus, les 8 boulons d'ecartement sont visses, et egalement ceux du circuit imprimé du module d'extension!
Installez le module d'extension sur les boulons d'ecartement et fixez le avec les 4 vis M3. Enfin, connectez les deux cables ruban-c'est fini.

Les macros fonctionnel de la même façon que leurs pour l'interface sequentière. La position des caractères est bien evidemment très importante sur un LCD.
printLCD ne fait qu'initialiser un array temporaire avec un texte constant transmis, puis l'envero sur ACD avec writeStringLCD.
printlnLCD appelle writeLineLCD.
ShowScreenLCD efface l'intégrauté du contenu de l'écran et écrit ensuite les deux textes transmis à la ligne 1 et à la ligne 2. Ce n'est bien sur utile que pour les écran à 2 lignes - si vous souhaitez utiliser un écran à 4 lignes ou plus, vous doivent l'adapter en conséquence.
Il existe un équivalent à printinterger pour l'interface séquentielle avec printintergLCD. Avec ce macro, la valeur est envisée comme une variable transmise en texte au LCD. Cela est très utile lorsque vous souhaïez visualiser les valeurs du capteur.
Voupez couver de nombreux exemples d'application du LCD dans les programmes d'exemple du CD-Rom ou de la page d'accueil du RP6. Le LCD est utilisé dans chaque programme d'exemple de façon plus ou moins intensive.
① Ce chapire ne sert que d'un grand aperçu des fonctions, qui sont disponibles comme extensions aux fonctions déjà intégrées du C-Control Interpreter dans la RP6CCLib. La façon dont vous develez les utiliser dans un programme complet est montré de façon detailée dans les programmes d'exemple.
Vouyperez facilement modifier vous-meme la RP6CCLib et ajouter de nouvelles fonctions si besoin. Il seraill ailleurs préférent dans ce cas d'utiliser un nouveau fichier Basic ou C et de l'intégrer séparément. La façon dont cette fonction est bien évidemment démontré dans les programmes d'example. Vouyprourez y creer une autre petite bibliothèque, qui continuera à vous simplifier dans l'exploitation du capteur et le contrôle du robot sur des bus 2C . Il y a également des fonctions d'alde telles que RP6_rotate ou RP6_move, avec lesquelles vous pouvayer faire tournier le robot selon un certain angle, ou le faire avancer sur une distance précise. Les fonctions peuvent aussi réagir automatiquement lorsqu'il y a modification de données importantes de capteur (par exemple, lorsque l'ACS détecte un obstacle, une certaine fonction est appelée).
Nous n'allons pas parle plus longtemps de ces choses complémentaires, car ces fonctions sont peut a petit ajouter dans les programmes d'exemple et décrites. Veulée lires les commentaires dans les programmes d'exemple.
et
Les deux transmettrent un byte au LCD, interpreter comme ordre de commande par writeLCDCommand et comme code caractere par writeCharLCD.
Avec la fonction suivante, le curseur texte sera place à une position précise.
void setCursorPosLCD(byte text line, byte pos) Sub setCursorPosLCD(text line As Byte, pos As Byte)
Example CompactC:
strCursorPosLCD(1, 5); // Placer leibur ligne 1, position 5
writeCharLCD(65) // Escrit un à cette position
Exampie Basic:
setCursorPosLCD(1, 5) ' Placer ide cursore ligne 1, position 5
writeCharLCD(63) ' Ercit un A ' sa cette position
public ClearLCD()
Sub clearLCD()
Clear LCD;
<h1 id="efface-lintegralite-du-content-du-lcd">Efface l'integralite du content du LCD.</h1>
void setCursorPosLCD (byte text line, byte pos)
Sub setCursorPosLCD(text line As Bye, pos As Byte)
N'efface qu'une partie précise du LCD. Debutant à la ligne « text_line » à la position « pos », « lenght » caractères seront effacés.
Si vous souhaitez envoyer plusieurs caractères l'un après l'autre au LCD, vous pouvez utiliser la fonction suivante.
void writeStringLCD(char text[]) Sub writestringLCD(ByRef text As Char)
Si vous souhaitez insérer plusieurs caractères l'un après l'autre, et à une position précise, utilisez la fonction suivante.
void writeLineLCD(char text[],byte text line, byte pos) Sub writeLineLCD(ByVal text As Char, text line As Byte, pos As Byte)
Pour toutes les fonctions String, il existe des macros qui simplifie l'application :

NosyourevoremandonlerRP6CCPROM128a l'arriere du monceau d'extensiondurobot.Lesdeuxbranchementsdeprogrammationstarsollassusss accessiblesdepuiselme facedurobot.Vouspuvezfixateravandutobotles modulesd'experimentationfournisaveclerobot(cf PHOTOcl-dessouspourvoirun exampledeconfiguration).
Si vous avez acheté un écran LC, vous devez d'abord le brancher et le monter au module d'extension avant de l'installer sur le robot. En fonction du format d'écran, vous allez devoir fabriquer un adaptateur afin de fixer l'écran. Cele est surtout valable pour les écrans de grande taille. Les petits LCD 2 x 16 lignes d'un format standard peuvent être directement fixés dessus grâce à 2 voire 4 boulons d'écartements. Afin d'installer l'écran encore au-dessus du module CCPRO, vous avez besoin de 2 boulons d'écartements 25 mm, de 2 vis et de 2 écrous au minimum. Pour les plus grands écrons, vous aurez besoin de matériel de montage nécessaire.
Le cable ruban à 14 pôles de l'écran LC standard 2 x 16 lignes est très flexible et peut être piée problème. Pouvez également installé l'écran d'une façon différente de cette que nous avons expliquons ici.
Voupez egalent utilise un autre ecran LC texte compatible avec le contrôleur HD44780. Youvez simplement souder un cable a l'ecran. Veillez absolument à la bonne affection des broches! En cas d'inversion de polarite, l'ecran et le contrôleur pourrait etre gravement endomagés!

4 boulons d'écartement ne sont pasforcément nécessaires, comme sur la photo ! 2 suffisant amplément (tous les deux devant ou a l'arriere) pour fixer I'écran. Une fois le montage terminé, cela peut ressembler, par exemple, à la photo.
Vouypouezaisementconnecterles3connecteurs d'extensiona10podesavecles portsI/Olibres etlebusSPIun unpettcelabrcubran a10podesavecuna plaque perforedeu module d'extensionetutilieralslesI/OetlesADC pour,entreautres, l'exploitation descapteurs.Cela fonctionneeglement avecles modules montes sur I'autre cote-les cables ruban passent normalement facilelement entre l'espace au milieu des deux monceaux de modules.
<h1 id="21-test-des-fonctions">2.1. Test des fonctions</h1>
Maintenant vous couldez effectuer un petit test des fonctions, ain de vérifier que le module d'extension fonctionne correctement.
Pour cela vous devez avant tout vous familierser avec le CCPRO IDE (et bien evidemment l'installer comme cette est decrit dans le mode d'emploi du CCPRO. Vous pouvez utiliser le pilote USB du CD-ROM du RP6, referez-vous au mode d'emploi du RP6 pour en savoir plus sur l'installation) ! Afin d'effectuer le test, vous devez relier interface USB connectee à votre ordinateur via le cable ruban à 10 pôles au branchement PROG/UART du RP6 CCPO M128 et démarrer le CCPRO IDE. Ouvrez ensuite le projet :
Cela doit ressembler par exemple à ce qui suit:
ThreadLock(1); // Important: Bloguer la commutation thread
PortWriteBuf(PORT Flash, 1); // Activer la ligne CS
SPIWrite(10); // Envoyer les données
Result = SPIRead(); // Lire les données
SPIWriteBuf(buffer, 32); // Envoyer 32 Bytes
SPIWriteBuf(buffer, 16); // Envoyer 16 Bytes
PortWriteBuf(PORT STR, 0); // Déactivé à nouveau la ligne CS
ThreadLock(0); // Attention: déblquer la commutation thread
Celia n'est bien evidemment pas un exemple complet, il doit etre adapté a chaque slave ! Vous devez faire la bien attention aux fiches de donnees du constructeur. Il est important de bloquer la commutation thread Iintegrale du temps d'acces. Sinon deux thread tenteraient en meme temps d'acceder au bus SPI, ce qui ne fonctionne pas. Vous devez particulierement faire attention ici, car chaque acces au LCD et aux LED exgle un acces SPI!
<h1 id="38ecran-lc">3.8.Ecran LC</h1>
L'écran LC est idéal pour l'affichage des valeurs du capteur et des messages d'etat. Il peut être très utile pour obtenir des informations sur l'etat du programme actuel, surtout quand le robot n'est pas relié à un ordinateur.
Le LCD n'est pas branché comme sur la carte d'application CCPRO, les fonctions LCD internes ne pouvant ettre utilisées directement. Cela devrait toutefois etre possible dans une prochaine version de l'intérpréteur CCPRO.
En tout premier, vous devez bien evidemment initiaisre le LCD :
void RPEInitLID(void)
sub void RPEInitLIDC)
Le RP6 CCPRO Init() le fait normalment déjà – vous n'avez donc pas besoin, normalment, de la vente à nouveau.
Le LCD fonctionne en mode 4 blt. Ainsi, vous devez appeler 2 fois la fonction suivante pour transmettre un byte de données complet au LCD.
void setLCDDDbyte lcdld) Sub setLCDDD(lcdd As Byte)
Ces deux fonctions suivantes le font également
void writeLCDCommandBYTE cmd) Sub writeLCDCommand(cmd As Byte)
contenus dans la RP6CCLib! comme celles-ci ne sont pas disponibles très longtemps dans l'interpréteur CCPRO, elles sontrapidement écrites. Elles doivent être enregistrées peu après dans la documentation CCPRO.
void SPI_Enable(byte ctrl)
Initialisez le module hardware SPI avec le byte de configuration « ctrl ». La valeur standard pour un module d'extension CCPRO est de 0x50, vous doivent alors fixer les bits SPE (Enable) et MSTR (Master Modus) dans le registre de configuration (cf. fiche de données MEGA128).
La cadence d'horloge est reglee sur la moitié de celle de la CPU, soit 7.3728 MHz.
byte SPI_Read(void)
Lit un byte d'un slave SPI tout juste activé.
void SPI_Writ(cbyte data)
Envoie un byte au slave SPI tout juste activé.
void SPI_ReadBuf(byte buf[], byte length)
Lil les bytes « length » d'un slave SPI tout juste activé et les enregistrres dans un circuit «Buf »
void SPIWriteBuf(bytebuf[]bytelength)
Envole les bytes « length » du circuit « but » au slave SPI tout juste activé.
Pour un registre à glissement tel que le 74HC4094 utiliseson un module d'extension CCPRO, vous neccesser activer une ligne « Strobe » après que vous ayez ecrit les données.
Par exemple :
Thread Lock(1): // Important : Blocuer la commutation thread !
SPI Write(external port): // Envoyer les données
Port_WritEd(PORI-STR,1); //Activier la ligne strobe
delayCycles(5); // très courte pause
TextWriteBit/Point = 0; // (if necessary) a new byte is added to the line.
TnR 1
Cela s'effectue de la même façon que la RP6CCLib. Pour les autres slaves SPI, comme par exemple les puce mémoire Flash ou les EEPROM, il est plus généralement requis demettre la ligne Chipselect avant l'acces BUS et de la desactiver ensuite.
<RP6_CCPRO_Examples>/CompactC/RP6_CCPRO_SELPTEST/RP6_CCPRO_Selftest.cprj

du CD et laisssez le complétableur le traduire (la flèche bleu en haut dans la barre d'outils).
Vous doivent désirier la bonne Interface dans les régliages (COMXn, ne PAS désirier USB0, celui-ci ne fonction qu'avac la carte d'application CCPRO) et éventuellescocher la case pour l'activation de « RP6 USB Interface AutoConnect » ! C'est important afin que le CCPRO IDE passes automatique en mode Bootload. Ainsi vous n'avez plus besoin d'appuyer sur deux boutons du module a chaque féchéargement de programme.

Si le CCPRO Unit n'est pas reconnu au premier essai, cliquez à nouveau sur le bouton « recherche d'interfaces » et assurez-vous que le CCPRO Unit est correctement passé en mode bootload (« Conrad C-Control Pro 2008 » doit apparaitre dans la fenetre d'édition). Dans le cas cela ne se passée pas automatiquement, vous pouvrez appuyer sur les deux boutons du module CCRO, dans l'ordre qui suit alin de passer le module en mode Bootboard: Appuyez sur START/BOOT et restez appuyez, appuyez sur RESET, lâchez RESTER et seulement après relachéz le bouton START/BOOT.
Lorsque le module CCPRO est en mode Bootload, la LED jaune sallume de façon permanente. Vous pouze alors charger le programme dans le CCPRO Unit. Àpres la réussite du téléchargement, démarrez le programme soit par pression sur le bouton Start du module CCPRO ou du robot lui-même. Vous doivent d'abord appuyer une fois sur Reset, si jamais le module se trouve encore dans le mode Bootload (ou cliquez sur le symbole « éclair » dans la barre d'outils du CCPRO IDE). La LED vertée est sensée clignoter lorsque le module est pré à démarquer le programme charge. Ce ne fonctionne cependant que lorsque vous utilisez le RP6CCLib! Il y a en effet un sous-programme qui permet de démarrer tous les contrôleurs du RP6 en même temps.
Le signateur Piezo doit émettre un court son directement après où appuyé sur le bouton Start. La LED s'éclaire et un textile est affchéé sur le LCD « RP6 CCPOR M128 »
Des messages d'etat sont transmis à l'interface séquentielle, qui peuvent se voir sur le CCPRO IDE (ou au terminal du RP6Loader). Faibles bien attention ici aux messages d'erreur possibles!
Lorsque l'écran n'affiche rien ou seulement deux lignes de carres noirs, mais que les LED clignotent et que la connexion avec le CCPRO IDE fonctionne, vous devez régler le contraste de l'écran (ou bien l'affection des broches de l'écran est mauvaise...). Cela se fait avec le potentiamètre R10 à l'arrête de la platine.
Adjustez le contraste avec le potentiamètre R16 sur la platine. Il peut être régèle grâce à un petit tourmeis plat. Vous pouvez également utiliser un petit tourisme cruciforme, mais vous rencontres des difficultés à le positionner par rapport au potentiamètre.
Tourne le potentiametre alors que le robot est allumé, jusqu'à cequelque chose de distinct apparaisse sur l'écran. Redémarrez alors le programme d'autotest!
Lorsque le programme d'autotest est terminé, le message « SELFTEST OK ! » doit apparaitre sur l'écran LC.
L'edition du programme doit à peu pres ressembler à ce qui suit :
RP6 ROBOT SYSTRM
RP6 C-Control PRO M128 Selftest
Writing Text to LCD...
Testing Breper...
Teating LEDs...
Testing Temperature Sensor
TATPOTRAL:186350%
T
Temperature:19.6875C--ON
temperature: 19.8750°C -- > OK
Temperature: 19.8125°C --> OK
Temperature: 19.8750°C --> OK
[ ]
Temperature: 19.8125°C ---> OK
Temperature: 19.6250°C -- > OF
Testing External 64X Memory
NEM PATTERN:12 - Writiing
Baei
RE01
OR
REPAIINB!34-WFING...
Reading...
OK
NEM PATTERN: 68 - Writing...
(一)
…
REX PATTERN: 64 - Writing...
Reading...
OK
// Lecture value measure:
reine():
#
prime(temperature:);
strWriteFloat [temperature]
Serial write
print('C');
newline();
<h1 id="exampie-basic-2">Exampie Basic:</h1>
Dim temperature As Single ( point de flotttement variable pour la valeur de
la temperature
Dim expval(33) As Char
Bin temp low in Integra
Dillcmp_low As Integer
:[…]
' Convertir yaleur meurere en yaleur . Float . (meure de 12 bits)
tcm low = gettemperatureLow(
I Not temp low and 178 Then
127
comp_10w = (comp_10w At
E156
temp_1ow = temp_1ow And b3
temperature = temp_low + (0.0625 * (getTemperatureHigh() >> 4))
' Lecture valeur mesurée:
newline(
PRINT("Temperature:")
strWriteFloat(temperature, result=0)
Sexual KritoText (Kosul)
Serial_Wntce1exc(0, result)
PRINE
newline()
La valeur mesurée sur l'interface sérieelle est donnée dans les deux programmes d'exemple.
<h1 id="37bus-spi">3.7.Bus SPI</h1>
Sur le bus SPI (= Serial Peripheral Interface), vous pouvez connecter différents composants. Le convertisseur analogique/numérique, le convertisseur numérique/analogue, les EEPROM, la mémoire Flash, des cartes mémoire, des écans LC ou un registre à glissement entre autres.
L'écran LC optionnel du module d'extension CCPRO est par exemple relié à un registre à glissement 8 Bit, avec 3 des LED de statut. Nous vous parlons des fonctions pour la commande de l'écran dans le prochain paragraphe.
L'accès au bus SPI est très simple, vous neccessement commuter la ligne de chaque slave sur le niveau « high » et vous pouvez alors lires les données et les écrites.
Attention: Seule une ligne Chipselect doit être activée à la fois! Simon, la lecture des données fonctionne mal, puisque des données sont envoyées à deux slaves.
Les fonctions SPI sont des fonctions internes « interpréteur », et ne sont donc pas
Pour fire ensuite le capteur, nous allons utiliser cette fonction :
```txt
void TC735 read(byte ad);
Sub TC735.read(ad As Byte)
Exampie CompactC:
TCN75 run(TCN75 ADR, TCN75A CONSIG RES 12) // Demarrage des mesures AbsDelay(250) //Pause TCN75 shutdown(TCN75 ADR) //Arrêt des mesures TCN75_read(TCN75_ADR) // lecture...
Exemple Basic:
TCN75 run(TCN75_ADR, TCN75A_CONSIG_REB_12) 'Demarrage des mesures AbsDelay(290) 'Pulse
TCN75 Shutdown(TCN75_ADR) 'Arrêt des mesures TCN75_read(TCN75_ADR) 'lecture...
Cela vous permé de lire la valeur de la température actuelle. Elle doit bien évidemment étretraillée par la suite...
Après que la valeur de la température actuelle ait été lue, vous pouze acceder aux « Low » et « High » Byte de la valeur mesure avec les fonctions :
byte getTemperatureEligh(void) Sub getTemperatureEligh As Byte
et
byte getTemperatureLow(void)
sub getTemperatureLow() As Byte
Ces deux bytes ne contiennent pas la valeur du capteur dans le format adapté – vous pouvez la converter en un chiffre de point d'écoulement.
Example CompactC:
Float temperature;
Char result[32];
Int temp_low;
// Valeur mesure à convertir en valeur « Float « (mesure de 12 bits):
temp_low = getTemperatureLow();
if (itemlow & 128)
temp_low = (temp_low + 63) - 127;
else
temp_low = temp_low + 63;
temperature = temp_low + {0.0625 * (getTemperatureHigh() > 4)};
MEN PATTERNS: 128 - Writing... Testing I2C Communication... Selfest finished successfully! Les valeurs mesures de temperature seront bien evidemment differentes et l'edition légarement plus courte.
3. Programmation
Comme il existe déjà une documentation détaillée pour toutes les applications et la programmation pour le CCPRO Unit, nous allons vous expliquer ici directement les fonctions spécifiques du RP6. Nous n'allons pas aborder ici sur les bases des langages CompactC ou BASIC ni comment contrôle les port s un à un, les ADC, l'interface suivante ou travailler avec les threads ! Tout cela est détaillée dans le mode d'emploi du C-Control PRO et désirt dans la fonction d'aide existante du CCPRO IDE.
Nous allons you decrre les fonctions de la bibliothque RP6 CCPRO (ou « RP6CCLib »). Pour chaque fonction, nos allons you dander quelques codes d'exemple en CompactC et BASIC. Ces prototypes de fonction sont listed dans la notation C et BASIC. Vous trouverez plus d'examples détaillés sur le CD-ROM.
3.1. Consulter le bouton start et demarrage du programme
void RPG waitForStart(void) Sub RPGWaitForStart()
Cette fonction est importante pour synchroniser le démarriage du programme avec d'autres contrôleurs du RP6. Les contrôleurs de votre programme doivent, si possible, démarrer en même temps et vous doivent pouvoir contrôler l'execution du programme, en le stoppant sans étendre complètement le robot.
Cette fonction attend d'abord un signal de départ précis. Cela peut être une pression sur le bouton Start sur le module RP6 CCPO M128 ou un signal reçu d'un autre contrôleur (par exemple de la carte mère) sur le bus I'C. Lorsque vous appuyez sur le bouton Start, cela est signalé aux autres contrôleurs via le bus PC.
3.2. Initialisation
void RPS6_CCPROInit(void) SubRP6_CCPROInit
Vousdevez tousjappeler cette fonction a la place du RP6_watForStart.Elle initiaise le module hardware et appelle ensuite le RP6_waitForStart.
Une structure de base de programme typique pour le RP6 CCPRO M128 peut ressembler a ce qui suit:
Exemple en CompactC
#include *.././RP6CCLib/RP6CCLib.cc*
void main(void)
{
RP6_CCPRO_Init(); // Initialisierung - IMMER ALS ERSTES AUFRUPENi
while [...] Programmcode...
}
Exemple en Basic :
include"..//RP6CCLib/RP6CCLib.cbas"
2
3 Sub main()
4 P6_CCPRO_Init() 'Initialisierung-IMMERALSERESTSAUFRUFEN!
5
6' [...]Programmcode...
7
8 Io While True Endlosschleife
9' [...]Programmcode...
10 End While
11 End Sub
Ces deux programmes sont par leur fonctionnelle identique. Chacun peut decide derelirement s'il préférent programme en BASIC ou en Compactc.
Indication : Vous pouvez intégrer le RP6_CCPRO_lib ( ligne 1 dans l'exemple) à un paramètre de projet. Il est toutefois plus intéressant d'utiliser une indication de chemin relative plutilot qu'un chemin absolu ( « …./lib » , deux niveaux répertoire supérieur). Ainsi vous pouvez déplacer sans problème le projet avec la bibliothèque ou l'utiliser
| I2C_REG_ADC_NOTATOR curls_L | 17, |
| I2C_REG_ADC_NOTATOR curls_H | 18 |
| I2C_REG_ADC_NOTATOR curls_L | 19, |
| I2C_REG_ADC_NOTATOR curls_H | 20 |
| I2C_REG_ADC_UBAT_L | 21, |
| I2C_REG_ADC_UBAT_H | 22 |
| I2C_REG_ADC_ADCO_L | 23, |
| I2C_REG_ADC_ADCO_H | 24 |
| I2C_REG_ADC_ADC1_L | 25, |
| I2C_REG_ADC_ADC1_H | 26 |
| I2C_REG_RC5_ADR | 27 |
| I2C_REG_RC5_DATA | 28 |
| I2C_REG_LEDS | 29 |
3.6.3. Capteur de tempéature
Il existe déjà des fonctions prêtes pour le capteur de température connecté à la platinte par bus I'FC. Avec:
TCN75 write cfg(byte adr, byte config)
Sub TCN75 write cfg(adr As Byte, config As Byte)
vous pouvez généralement écrire dans le registre de configuration du capteur (vous trouvrez plus d'informations dans la feuille de données du capteur TCN75. Certains réglages ont déjà été mis dans la bibliothèque en tant que constantes).
Le code est plus visible lorsque les macros suivants sont utilisés :
TCN75_run(ADR, CONFIG)
et
TCN75 shutdown(ADR)
pour démarrer ou stopper l'utilisation. Ces macros appelant cependant TCN75 writecfg. AvecTCN75_run vous pouvez transmettre en plus de l'adresse des capteurs l'octet de configuration.
Exampie Basic:
// Lire la valeur du capteur de tension :
Dim messageBuf (3) As Byte; // Buffer pour la réception de données RF6-read-Reads (RB5, DST, APP, 12C, BFG, ADC, UPAT, messageBuf, 2)
Rk-RednEgrecs (Rk-BASB-RAK) 100 Rk-ABC-OBH-A, message(su), 2) // La valeur meurerse es composede de 2 octets, vous deveze les assembler en
// une valeur mesure
adcbat = (messageBuf(1)<<8)|(messageBuf(0));
// (1'octet de valeur supérieure de 8 points est glissé à gauche et à la // / plante est escrit l'octet de valeur inférieure sur une ODEB combinée)
// Prinse cane 1024 25 23 11
print ( Battery Sensor Value : )
printInteger (adcBat)
println (一 + 一)
// Il s'agit ici non pas d'une valeur de tension directe, mais d'une valeur.
valeur 14
// mesure greissiere du convertisseur analogique numerique. Voues pouvez / enccore la convertir atin d'obtenir la veritable valeur (par 1024
// / parties.
Le programme standard RP6 12C. Slave to 30 registres à sa disposition, avec lesquels vous pouvè dire les actuelles valeurs des capteurs et les états des programmes.
| Nom du registre # Description | ||
| I2C_REG_STATUS1 | 0 Statut registre 1Bit 0:batLow; 1: bumperLeft;2: BumperRight; 3: RC5 reception;4: RC5transmitReady; 5: obstacleLeft;6: obstacleRight; 7: driveSystemChange | |
| I2C_REG_STATUS2 | 1 Statut registre 2Bit 0: powerOn; 1: ACSactive;2: watchDogTimer; 3: wdlRequest;4: wdlRequestEnable; | |
| I2C_REG_MOTION_STATUS | 2 Statut registre pour actionnement systèmeBit 0: movementComplete; 1: motorsOn;2: motorOvercurrent; 3+4: direction; | |
| I2C_REG_POWER_LEFT | 3 Valeur PMW gauche régèle actuellément | |
| I2C_REG_POWER_RIGHT | 4 Valeur PMW droite régèle actuellément | |
| I2C_REG_SPEED_LEFT | 5 Valeur mesure encodeur gauche (/200 ms) | |
| I2C_REG_SPEED_RIGHT | 6 Valeur mesure encodeur droite (/200 ms) | |
| I2C_REG_DES_speed_LEFT | 7 Valeur théorique de vitesse gauche | |
| I2C_REG_DES_speed_RIGHT | 8 Valeur théorique de vitesse droite | |
| I2C_REG_DIST_LEFT_L | 9, | Distance accomplice gauche(High et Low Byte) |
| I2C_REG_DIST_LEFT_H | 10 | |
| I2C_REG_DIST_RIGHT_L | 11, | Distance accomplice droite(High et Low Byte) |
| I2C_REG_DIST_RIGHT_H | 12 | |
| I2C_REG_ADC_LSL_L | 13, | Valeur ADC mesure, capteur de luminosité gauche(High et Low Byte) |
| I2C_REG_ADC_LSL_H | 14 | |
| I2C_REG_ADC_LSR_L | 15, | Valeur ADC mesure, capteur de luminosité droite(High et Low Byte) |
| I2C_REG_ADC_LSR_H | 16 | |
directement sur un autre ordinaire, Veiliez bien a ce qu'il est deux bibliothèques différentielles : une pour BASIC (RP6CClib.cbas) et une pour CompactC (RP6PClib.coc).
3.3.Deliver du texte

Il n'y a pas de constante de texte dans CompactC et BASIC - C'est pour cela qu'un array toujours attribuer du texte en premier et le transmettre ensuite à la fonction Serial_ WriteText.
Afin de conserver le programme clair et d'épargner un travail d'écriture, les macros RP6CCLib sont disponibles, qui prenent justement du texte en charge, jusqu'à 64 lignes (et valeurs numériques intégrées). « print » délivre le texte transmis et « printin » ajoute en complément les caractères spéciaux « vinn », afin que le terminal début une nouvelle ligne.
Example Compact C:
PrintIn(bonjourlemonde!):
Print{Test1};
printInteger(x) ; // Donne la valeur de la variable x en tant que texte
ASCII
prine {k ... Test2}
newline(); // Nouvelle ligne
Exemple Basic
Println(bonjourlemonde!);
Print{Test1:}
printInteger(x) ' Donne la valeur de la variable x en tant que texte
ASCII
print(*...Test2*);swirr():Newpillo
3.4. LED de statut

Les 5 LED de la carte mère peuvent être contrôées à partir de cette fonction
Exemple CompactC:
setLEDe(LED1 | LED2 | LED5); //LED1,LED2 et LEDs allumes,LED3 et
LED4 eteintes.
setLEDs(0);//touteslesLED sonteteintes
setLEDs (31) ; // toutes les LED sont allumées (31 = binaire 1111)
Exampie Basic:
setLEDS (LED1 Or LED2 Or LED5) 'LED1, LED2 et LED5 allumées, LED3 et LED4
setLEDs(4)'LED3 allumee
setLEDa(5)'LED1 et 3 allumee (5 = binaire 00101)
Les LED1 et 2 sont directement branchées à des ports I/O normaux et peuvent donc être commandes comme des ports I/O normaux. Mais les LED3, 4 et 5 sont reliées, avec le LCD, à un registre à glissement au bus SPI. Cea permettant d'économiser des portes I/O, qui seront utilisés pour d'autres choses. Sinon le LCD bloquerait a lui seul 6 I/O, plus les 5 LEDs, cela fait 11 I/O au total. Grace au registre à glissement, il n'y en a que 6 et le bus SPI peut rattachier du matériel extérieur supplémentaire.
3.5.Beeper
Le signateur du RP6-M128 peut etre contrloié avec cette fonction :
Cependant cette fonction est bloquante - c'est-à-dire qu'elle fixe les hauteurs de son, bloque les laps de temps imposes, etéint le signaleur et marquee une pause avant le deuxième laps de temps fixé. La fonction AbsDelay de la bibliothèque de fonction du CCPRO est utilisé ici. Les temps sont ici retranscrites en ms.
Exampie CompactC
define Tone A1 262 //40Hz
beep(Tone_A1, 100, 200) // 100ms de son, 200ms de pause
Beepe (one A1, 355, 422) / 355me de non, 422me de pause
Exampie Basic :
define Tone_A1 262 440Hz
beep (Tane A1, 100, 200) '100ms de son, 200ms de pause
Cette fonction beep est principalement pensée pour l'edition de melodies. Si vous souhaitez laisser d'autres choses fonctionner en parallele, vous pouze utiliser les threads. Veillec cependant à ne pas utiliser cette fonction en meme temps dans deux threads différents (vous ne pouze pas avoir un acces simultané à deux threads differents sur un meme composant hardware)!
Cela ne fonctionne de toutes façon pas avec la fonction beep normal, car AbsDelay est utilise ici. AbsDelay interrupt les éditions de tous les threads. C'est pourquoi il existe cette fonction spéciale:
qui utilise Thread_Delay au lieu de AbsDelay. L'inconvenient est que Thread_Delay n'a
Un programme d'exemple vous montre comment utiliser un ordre seul.
Pour écrire une valeur de 16 bit, comme par exemple pour l'ordre CMD_Move, vous doivent partager cette valeur en 2 valeurs de 8 bit.
Exemple CompactC
Word distance; // Valeur de 16 bit qui doit être écrite
Distance = 4000 . / / 4000^ 0.25mm -1 metre
byte parame[5]
parans[0] = 80 // IV-675
parer [2] = distance 33 B; //distance u-dassus B bit
params [3] = distance & 0x0F; // en dessous de 8 bit
RP6_writeCommand_parameters(10, CMD_Move, parameters, 4);
3.6.2. Lire des données
Bien evidemment, vous ne transmettez pas seulement des ordres, vous pouvez également dire les données, comme par exemple les valeurs des capteurs. Vous pouvez dire une registre seul avec la fonction suivante:
byte R6 readRegister(byte addr, byte reg)
Sub EP6 readRegister(addr As Byte, reg As Byte) As Byte
Vous pouvez dire plusieurs registres avec :
void R6 readRegisters(byte addr, byte reg, char readBuffer[], byte reg count)
Sub R6_readRegisters(addr As Byte, reg As Byte,
ByRef readBuffer As Byte, reg count As Byte)
etls seront ecrits sur I'array readBuffer
Exampie CompactC:
// Lire la valeur du capteur de tension:
byte messageBuf [3] ; // Buffer pour la reception de données
RP6-readRegisters(RP6_BASE_ADR, I2C_REG_ADC_UBAT_L, messageBuf, 2) ;
// La valeur mesure est composé de 2 octets, vous devèz les assembler en
// une valeur mesure :
adcBuf = (messageBuf [1] << 8) | (messageBuf [0]) ;
// (1'octet de valeur supérieure de 8 points est quillage à gauche et à la
// place est escrit l'octet de valeur inferieure sur une ODER combinaison)
// Maintenant vous pouvés donner la valeur :
print( Battery Sensor Value : ) ;
printInteger (adcBuf) ;
printInt( ) ;
// Il n'aigui ici non pas d'une valeur de tension directe, main d'une
valeur
// mesure grossière du convertisseur analogue numérique. Vous pouvés
// encroir la convertir afin d'obtenir la verritable valeur (par 102.4
// parties).
Le programme RP612CSlave connait actuellement 12 ordres, permettant de contrcler entitlement le robot.
| Ordre Code Description | |
| CMD_POWER_OFF | 0 Eteindre l'encodeur, le détecteur de courant et Power LED |
| CMD_POWER_ON | 1 Allumer l'encodeur, le détecteur de courant et Power LED |
| CMD_SETLEDS | 3 Régler les LEDParamètre 1 : État LED - 6 premiers bitsBit 0 = LED1, Bit 6 = LED6 |
| CMD_STOP | 4 Arrêter les moteurs et la régulation de la vitesse |
| CMD_MOVE_AT_SPEED | 5 Bouger à une vitesse préciseParamètre 1 : vitesseGLEAUCHEParamètre 2 : vitesse droleValueur de la vitesse à l'encodeur par niveau de 200ms |
| CMD_CHANGE_DIR | 6 Modifer le sens de rotation du moteurParamètre 1 : Direction - FWD, BWD, LEFT ou RIGHT(les constantes sont définies dans le RP6CCLib) |
| CMD_MOVE | 7 Effectuer une distance préciseParamètre 1 : vitesseParamètre 2 : direction, FWD ou BWDParamètre 3 : High Byte de l'itinétaire compliParamètre 4 : Low Byte |
| CMD ROTATE | 8 Pour effectuer un angle précisParamètre 1 : vitesseParamètre 2 : Direction LEFT ou RIGHTParamètre 3 : High Byte de l'angleParamètre 4 : Low byte de l'angle |
| CMD_SET_ACS_POWER | 9 Regler l'énergie d'émission des ACSParamètre 1 : énergie d'émissionACS_PWR_OFF, ACS_PWR_LOW, ACS_PWR_MED,ACS_PWR_HIGH |
| CMD_SEND_RCS | 10 Emettre un signal RCS avec l'IRCOMMParamètre 1 : adresse et toggle bitParamètre 2 :TTYe |
| CMD SET WDT | 11 Activer le minuteur WatchdogParamètre 1 : true (vrai) ou false (faux) |
| CMD SET_WDT_RO | 12 Activer la requête minuteur WatchdogParamètre 1 : true ou false |
un temps de pause que de 10ms exactement. C'est-à-dire que le programme ci-dessus aurait resemblée à qa :
Exampie CompactC
define Tone A1 262 //440Hz
beep(Tone_A1, 10, 20) //100ms de son, 200ms de pause
beep(Tone_A1, 35, 42) //350ms de son, 420ms de pause
Exampie Basic:
define Tone A1 262 '440Hz
beep (Tone A1, 10, 20) '100ms de son, 200ms de pause
beep (Tone_A1, 35, 42) '350ms de son, 420ms de pause
Au lieu d'utiliser la fonction beep et beep_t, vous pouvez aussi utiliser les macros.
| sound(pitch) |
| und |
| sound_off() |
Voussoupiezquenquementreglerlahauteurdeson.Celaestresutilpouruesuite desonscontinue(parexampieusirirenalarme).Cettefonctionn'estPASbloquante!Seulelahauteurdesonsereglgeotenchaineradirectementavecleprogramme.Vousoupvezarrerledesigneredusongraceaound/off().
Vouavesuneauteraltentativepossibleavecle macro suivant.
tone(PITCH, TIME)
Il est à utiliser, par exemple, dans un programme d'exemple pour jouer de longues méliodies, pendant lesquelles le beeper ne doit sur tout pas être étient.
Attention: pour toutes les fonctions de beeper, la zone autorisée de « pitch » (hauteur de son » se trouve entre 0 et 65535. 0 étant la plus haute fréquence et 65535 la plus bassé!
Référez-vous à la documentation du C-Control Pro, au chapitre sur le minuteur pour plus de détails. Timer3 est utilisé pour les fonctions beep.
3.6.Bus PC
Vous avez en plus des fonctions bus IC de la bibliothèque normale CCPRO, des fonctions supplémentaires spécifiées permettant de contrôle le robot depuis le programme « RP6Bases_12CSlace ». Ce programme doit être bien évidemment charger depuis la carte mère sur un contrôleur via RP6Loader (cf. mode d'emploi RP6). Il met a disposition une rangée de registres, sur lesquels le robot est entélément controllable par
L'interprétable CCPRO met à给你 disposition d'autres fonctions, avec lesquilles les données sont transmis sur le bus IC.
3.6.1. Envoyer des commandes
Un ordre seul est transmis grâce à la fonction suivante :
Généralément, il vaut moyen ne pas envoyer qu'un ordre seul, mais transmettre avec quelques valeurs - par exemple, afin de régler les LED sur la carte mère, régler également la vitesse.
Un paramètre supplément peut etre transmis grace a cette fonction :
void RP6_writeCMDparam(void addr, byte cmd, byte paraon) Sub RP6WriteCMDparam(Addr As Byte, cmd As Byte, paraon As Byte)
Exemple CompactC:
//Adnressebus12cdu contrbleur sur la cartemere: #define RP6 BASE ADR 10
RP6writeCMDParam(RP6_BASEADR,CM_SETLEDS,0x09);
Exampie Basic :
define RP6 BASE ADR 10
RP6_writeCMD_iparam(RP6_BASE_ADR, CM_SETTLEDS, 0x09)
0x09 est une hexadecimale pour le binaire: 00001001. Les 6 LED de la carte mère sont affectées aux 6 premiers bits d'un octet.
0x01 allume donc la LED1. 0x02 = LED2, 0x04 = LED3, 0x08 = LED4, 0x10 = LED5 et 0x20 = LED 6.
On peut bien évidemment écrire avec des décimalles : 1 pour LED1, 4 pour LED3, 16 pour LED5 et 32 pour LED6. Lorsque vous saufaitez allumer plusieurs LED, il vous faut simplement ajouter ces valeurs. Àsiçui, la valeur 63 permet d'allumer toutes les LED ou 0x3F en écrite hexadécimale. 0x24 allume les LED6 et LED3.
Il existe aussi d'autres définitions adaptées pour les LED, que vous pouvez écrire ainsi :
RP6 writeCMD1 param[RP6 BASE ADR, CMP SETTLEDS, LED1 | LED4 ]; // Compact C
RP6 writeCMD1 param[RP6 BASE ADR, CMP SETTLEDS, LED1 OR LED4 ]; // Basic
Cela est déjà plus lisible. Les autres exemplés en haut ne seront qu'à la comprehension, car LED1 n'est rien d'autre que la valeur decimale 1, LED2 = 2, LED3 = 4, LED4 = 8 et LEDs = 16.
Les deux commandes ci-dessus (0x09) allument donc les deux LED vertes 1 et 4.
Similaire a writeCMD_1param, il y a des fonctions pour 2:
void RP6_writeCMD2params(bytes adr, byte cmd, byte param1, byte param2)
Sub RP6_writeCMD2params(adr As Byte, cmd As Byte, param1 As Byte, param2 As Byte)
et pour 3 paramétres :
void RP6_writeCMD_3params(byte adr, byte cmd, byte param1, byte param2, byte param3)
Sub RP6_writeCMD_3params(adr As Byte, cmd As Byte, param1 As Byte, param2 As Byte, param3 As Byte)
Ainsi la plupart des choses sont desservies. Pour les cas particuliers avec plus de paramétres, vous pouvez utiliser la fonction!
void R6_writeCommand.params(bytes addr, byte cmd, byte param[]byte param count) Sub R6_writeCommand.params(addr As Byte, cmd As Byte, ByVal parame As Byte, param_count As Byte)
Jusqu'a 255 paramétres peuvent être transmis à un array.
Example CompactC:
Byte params [16]
params[0] = 10;
parama[7] = 10;
//
params[15]=255;
RP6writeCommand.params(10,40,params,16);
Exampie Basic:
Byte parame (16)
parame 0 = 10 PA
Parrae(2)-10
i
params(15)-255;
Ordre × 40 avec 16 valeurs de parametre a envoyer a 1'adresse 10 RP6 writeCommand params(10, 40, params, 16)