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:
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):
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:
division et multiplication par puissance de la base ⇔ décalages
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.
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
Description de l'écosystème Arduino:
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:
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
Multimètre (fonctions voltmètre,Ohmmètre et ampèremètre):
Oscilloscope (illustrer avec GPIO qui commute, PWM, puis Serial)
Wattmètre USB
Utilisation de l'arduino en bridge USB⇔servos: http://inmoov.fr/how-to-start-myrobotlab/
Discussion sur les entrées/sorties