=====Initiation à Arduino pour la robotique===== =====Bases d'algorithmie==== Le programme est une recette! Démonstration avec la résolution d'un Rubik's Cube la machine effectue des actions en fonction des entrées (conditions, cas multiple, boucles, séquences de mouvements=fonctions) Le programme est la suite d'opérations, un compteur indique où en est l'exécution du programme Les variables permettent de stocker des informations sur l'état de la résolution du problème Le programme permet de résoudre des problèmes complexes en procédant à une décomposition en succession de tâches simples Le compilateur traduit le programme en une succession d'opérations élémentaires exécutées par le processeur Le programme utilise: - des structures de contrôle (boucles, conditions, fonctions avec paramètres et valeur de retour, fonctions imbriquées, librairies ) - des structures de données ===Bases de numération=== Les bases binaires et hexadécimales -> (partir d'exemples simples et généraliser) -> expliquer les opérations de calculs additions et multiplication en binaire pour montrer que c'est plus simple. Structures de données élémentaires (types, variables, constantes): - expliquer les types entiers 8,16,32,64 bits int8_t etc (non)signés, caractères ascii (interprétation en tant que valeur numérique ou caractère) - évoquer les flottants Structures de données composites (tableaux, structures, classes,...) Opérations de calculs (arithmétiques, booléens, logiques) Priorité des opérateurs et parenthèses: exemple du 3*4+2 Exercices: - tester si le chiffre des centaines d'un nombre est égal à 4 (en base 10) - tester si le chiffre des quatraines d'un nombre est égal à 1 (en base 2) -> d'abord avec des opérateurs arithmétiques puis logiques division et multiplication par puissance de la base <=> décalages =====Application au Langage C/C++===== ===Variable=== Une variable est une entité permettant de stocker une information susceptible de changer au cours de l'exécution du programme. Déclaration de variable: donner un nom, un type et une valeur initiale/par défaut Types: permet d'indiquer ce qu'une variable, une constante ou un paramètre contient. ===Fonction=== Une fonction est une séquence d'instructions regroupées, pouvant être appelée depuis plusieurs endroit du programme, pouvant être paramétrée et éventuellement retournant une fonction. Déclaration de fonction, paramètres E/S et type de retour Implémentation de fonction: Instructions à l'intérieur des fonctions/méthodes entre { et } Appel de fonction: donner des valeurs effectives aux paramètres et éventuellement utiliser la valeur de retour. En C/C++, une fonction principale: main() Les classes et objets =====Arduino===== Description de l'écosystème Arduino: * cartes mères * cartes d'extensions (shield) * logiciels (IDE, compilateur, console et téléchargement) * librairies (intégrées ou tierces) permettant d'abstraire la complexité du matériel Un site de référence: https://www.arduino.cc/reference/fr/ Explication de la structure du programme arduino (fonctions loop(), setup(). main() est cachée) Présentation d'un microcontroleur: Analogie avec ordinateur Intégration dans une puces des différents composants (processeur/RAM/ROM/périphériques...) Pas de système d'exploitation, faible latence et haute cadence (tâches bas niveau) /complémentaire avec carte type raspberry pi (PC sur carte SBC) pour la partie haut niveau Exemples de périphériques intégrés: * interfaces de communication (bus): illuster avec port Série émulé en USB * e/s TOR * e/s analogiques et convertisseurs * e/s PWM * Timers Notions d'actionneurs/capteurs (sera détaillé par Thomas/Luiz) échelle de temps (16Mips) Exercices E/S série E/S TOR lire port d'entrée 8574 et isoler certains bits en faire une fonction bool lireBitEntree(unsigned char numerobit) ADC=> lecture vitesse ou position angulaire sur potar, division et commande moteur présentation potentiomètre rotatif ou linéaire monté en pont diviseur de tension dynamique du convertisseur: plage de tension admissible en entrée et plage de valeurs possible en sortie, notion de résolution chronogramme signal PWM et génération par logiciel avec digitalWrite et delayMicroseconds alimentation pour la logique et pour la puissance, dimensionnement et discussion tension/courant ===Appareils de mesures=== Multimètre (fonctions voltmètre,Ohmmètre et ampèremètre): * Montages * Calibre * Fusible Oscilloscope (illustrer avec GPIO qui commute, PWM, puis Serial) Wattmètre USB ===Analyse d'un schéma électronique=== Utilisation de l'arduino en bridge USB<=>servos: http://inmoov.fr/how-to-start-myrobotlab/ Discussion sur les entrées/sorties =====Mise en oeuvre==== https://bvdp.inetdoc.net/wiki/doku.php?id=tp_capteur_actionneur