Cours Arduino/C 2 ème partie



Documents pareils
Bien commencer avec un LaunchPad MSP430G et un Breadboard

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Programmation C++ (débutant)/instructions for, while et do...while

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique et Programmation, IMA

ACTIVITÉ DE PROGRAMMATION

Bonjour, Le document qui suit est le support de la formation ''Arduino applications distantes''.

La programmation des PIC en C. Les fonctions, les interruptions.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Chapitre 2 Devine mon nombre!

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Une carte pour vos projets

Activité initiation Arduino


Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Java Licence Professionnelle CISII,

IV- Comment fonctionne un ordinateur?

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Conventions d écriture et outils de mise au point

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Atelier Arduino. Initiation à la mise en oeuvre matérielle et logicielle de l Arduino. novembre 2006

Utilisation d objets : String et ArrayList

Atelier Arduino. Initiation à la mise en oeuvre matérielle et logicielle de l Arduino. novembre 2006

I. Introduction aux fonctions : les fonctions standards

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

L informatique en BCPST

Bernard HAMM, Évelyne LAVOISIER

Easy Lock. Mod. DPN13PG Mod. DPN18PG V.2 LIRE LES INSTRUCTIONS ATTENTIVEMENT AVANT UTILISATION ET LES CONSERVER EN CAS DE BESOIN PAGE 2 PAGE 4 PAGE 8

Programmer en JAVA. par Tama

Introduction au langage C

Messages d'erreurs. Redémarrez votre PC en cliquant sur Démarrer, en sélectionnant ensuite Arrêter puis en cochant Redémarrer

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

4. Groupement d objets

Mode d emploi Flip Box

IUT GEII MARSEILLE Patrick GUMUCHIAN. Lycée Alphonse Benoit L'Isle sur la Sorgue Marc SILANUS

HAM841K CENTRALE D'ALARME POUR SYSTEMES DE SECURITE COMMERCIAUX ET D'HABITATION

Carte ARDUINO UNO Microcontrôleur ATMega328

Microsoft Application Center Test

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

4D Server et les licences : fonctionnement et environnement

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

INDEX Fonctionnement Schéma de câblage... 24

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

TABLE DES MATIÈRES. Avant-propos... 1 Communications série Entrées simples analogiques et numériques... 61

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Langage Java. Classe de première SI

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Initiation à la programmation en Python

Programmation Objet - Cours II

Notions fondamentales du langage C# Version 1.0

Guide abrégé ME301-2

Examen Médian - 1 heure 30

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Corrigés des premiers exercices sur les classes

1. Étape: Activer le contrôle du compte utilisateur

Cours de Systèmes d Exploitation

Une liste des distributeurs Paxton se trouve sur le site Internet -

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

NOTICE D INSTALLATION CENTRALE 260

l'ordinateur les bases

Ceci est un Chromebook, ton ordinateur!

Connexion de Votre Imprimante Multifonction à votre Réseau pour la Première Fois

Education Delivery Intelligent Tool

Piano Stairs. descriptif de la conception et des programmes associés. Copyright (C) 2013 taprik

Rapidolect Les Productions de la Columelle ( ) Page 1

OUVERTURE PAR GSM Code : GSM64

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

SMS-COM LT RAILS DIN V Manuel d installation, de programmation et d utilisation.

Relais d'arrêt d'urgence, protecteurs mobiles

Système clients serveur Kwartz Vulgarisation, identification, dossier personnel

1. Introduction Création d'une requête...2

INTERNE SETRI. NOTE D'INFORMATIONS - Réaliser une sauvegarde d'un système avec EASEUS To Do Backup v4 et +

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Les structures. Chapitre 3

RÉALISATION D UN BANC D ÉQUILIBRAGE

LA SAUVEGARDE DES DONNEES SUR LES ORDINATEURS PERSONNELS

Chapitre 4 Pierre, papier, ciseaux

Le stockage local de données en HTML5

Votre adresse ... Pour consulter vos s, connectez-vous sur le site :

PIC EVAL Dev Board PIC18F97J60

Cours Programmation Système

Chapitre I Notions de base et outils de travail

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Comment tracer une droite représentative d'une fonction et méthode de calcul de l'équation d'une droite.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Hotspot Mobile 3G+ HUAWEI E587. Guide de démarrage rapide

DOCUMENTATION VISUALISATION UNIT

Cours d algorithmique pour la classe de 2nde

Cours Informatique Master STEP

BADPLUS V5 MANUEL D'UTILISATION. Imports de données joueurs à partir de la base fédérale en ligne Poona. Stéphan KIEFFER - Dominique BOSSERT

OOo4Kids, la suite OpenOffice adaptée aux enfants

Transcription:

Arduino/C avec la carte Diduino Cours02 1 http://www.didel.com/ info@didel.com Cours Arduino/C 2 ème partie www.didel.com/diduino/cours02.pdf La première partie se trouve sous www.didel.com/diduino/cours01.pdf Cette 2e partie permet d'étudier les 4 structures de commandes importantes du C: if, for, while, do.. while et d'aller vers de programmes toujours plus intéressants, D'autres exemples de programmes utilisant ces structures se trouvent sous www.didel.com/diduino/composants.pdf et naturellement dans les innombrables exemples sur le Web. Mais avant, découvrons un gadget très utile. 2.1 Le terminal série Le C peut s'apprendre sur un PC ou Mac sans utiliser une carte processeur Arduino ou autre. L'écran affiche "Hello World" comme premier exercice. Les données sont données au clavier et l'écran affiche les résultats. Le site du zéro a un excellent cours: http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html#part_14188 Arduino permet aussi d'afficher sur l'écran, avec des notations légèrement différentes et des limitations. Via la ligne USB, des fonctions (ordres) permettent de balancer des caractères sur l'écran et lire le clavier. Très utiles pour la mise au point des programmes temps réel qui nous intéresse, mais le temps de communication avec le PC ou Mac fait perdre cet aspect "temps réel" (à la microseconde près) qui est la raison d'utiliser une carte Arduino. Dans le set-up, il faut dire que l'on va communiquer avec l'écran et préciser la vitesse de transfert setup () ; Serial.begin (9600) ; pinmode Dans la boucle de programme, on prépare un texte, le nom d'une variable dont on veut afficher le contenu: Serial.print ("la variable toto est égale à ") ; Un Serial.println ( ) ; fait passer à la ligne suivante Quand le programme est chargé, on clique sur l'icône tout à droite et une fenêtre apparaît. Testons d'abord le programme TestSerie.ino pinmode(13, OUTPUT); void loop() Serial.print("J'allume "); digitalwrite(13, HIGH); Serial.println("J'éteins"); digitalwrite(13, LOW); Mettez delay(1); Le clignotement n'a pas la période souhaitée de 2 millisecondes; l'affichage ralentit le clignotement, et l'écran se remplit à vitesse max! Comme autre exemple, comptons les clignotements. TestSerie2.ino int compte = 0 ;

Arduino/C avec la carte Diduino Cours02 2 pinmode(13, OUTPUT); void loop() Serial.print("J'allume "); digitalwrite(13, HIGH); compte++ ; Serial.print( "J'eteint pour la " ); Serial.print( compte ); Serial.println( "eme fois" ); digitalwrite(13, LOW); Afficher une variable peut être très utile quand on mets au point un programme. Nous verrons comment lire une action sur le clavier dans Cours0x et Si vous voulez déjà savoir, regardez http://arduino.cc/fr/main/apprendreprogrammetypestructureserie 2.2 Commande if La commande if a trois formes else Si la condition est vraie, les instructions entre sont exécutées. Autrement le processeur passe plus loin. Si la condition est vraie, les instructions entre sont exécutées. Autrement le processeur exécute le 2e groupe d'instructions else if (autre condition) else // tous les autres cas Si la condition est vraie, les instructions entre sont exécutées. Si la 2e condition est vraie, les instructions qui suivent sont exécutées On peut naturellement continuer les else if Pour les autres cas, si on veut faire qqchose, on ajoute un else Comme application de cette 3e forme, qui n'a pas été rencontrée dans la première partie de ce cours, on pourrait câbler deux poussoirs, et décider quelle Led on allume. 2.3 Commande while (condition) Le while (condition) permet de boucler on non selon une condition vrai/faux, ou une valeur >0/=0. Le groupe d instructions entre est exécuté jusqu'à ce que la condition devienne fausse. Donc while (1) boucle indéfiniment! Reprenons comme exemple le son continu désagréable à la longue. Avec un while, on peut le couper dès que l'on presse sur le poussoir. Son2.ino Si on presse, le son s'arrête Le poussoir sur la pin9 est câblé vers le avec une pull-up de 4k7 à 100k La haut-parleur sur la pin8 est câblé vers le + avec une résistance de 47-470 Ohm const int HP8=8; const int Pous9=9; void setup () pinmode (HP8, OUTPUT); pinmode (Pous9, INPUT);

while ( digitalread (Pous9) == HIGH ) delaymicroseconds (300) ; delaymicroseconds (300) ; Arduino/C avec la carte Diduino Cours02 3 while (1) // On reste là. Reset ou nouveau chargement pour ré-écouter Exercice: câbler un 2e poussoir, dont l'action permettra de se retrouver au début de la boucle. Rappelons la différence: avec un if, si la condition est vraie, on exécute les instructions et on continue. Avec un while, on exécute les instructions en boucle tant que la condition est vraie, et on passe plus loin quand elle est fausse.. 2.4 Exercice On a câblé une Led et un poussoir. Un pèse, la Led s'allume, on repèse, elle s'éteint. A cause des rebonds de contact expliqués dans www.didel.com/diduino/composants.pdf il faut attendre 5ms toutes les fois que l'on lit le poussoir. 2.5 Commande do..while La syntaxe du do..while est do while (condition) ; Tant que la condition est vraie, on exécute en boucle les instructions du bloc. La différence avec le while est que la condition est testée après les instructions, qui se font donc au moins une fois, alors que avec le while, si la condition est fausse dès le départ, on n'exécute rien. A noter le bon usage de mettre les accolades autrement. Comme exemple, demandons via le Terminal de presser sur le poussoir et redemander tant que ce n'est pas fait. Avec un do..while le message apparaîtra même si l'utilisateur presse en anticipation. //Merci.ino Test do while const int Pous9=9; pinmode(pous9, INPUT); do Serial.println ("Presse svp "); while (digitalread (Pous9 == HIGH) ; Serial.println ("Merci"); delay (2000) ; 2.6 Commande for Prenons un exemple simple. On veut compter de 1 à 10 et afficher sur le terminal. Il faut définir un compteur et dire au programme j'initialise le compteur à 1 j'affiche le compteur tant que la condition "mon compteur est inférieur ou égal à 10" est vraie chaque fois j'augmente de 1 ;

Arduino/C avec la carte Diduino Cours02 4 for (compteur=1 ; compteur <= 10 ; compteur ++ ) Serial.print (compteur) ; Serial.print (" ") ; delay (100) ; delay (1000) ; Chargez ce programme (TestFor.ino). Notons bien les 3 parties dans la parenthèse d'une boucle for : for (initialization; condition; modification) "modification" veut dire qu'il faut agir sur quelque chose (un calcul, une action extérieure) pour que la condition change et que l'on sorte de la boucle. 2.8 Sirène La boucle for se prête bien pour faire une sirène comme en 1.17 for (demiperiode=demipermax ; demiperiode>=periodemin ; demiperiode -= Increment ) for (demiperiode=demipermin ; demiperiode<=periodemax ; demiperiode += Increment ) A compéter et tester comme exercice Vous voyez où rajouter un while (Pous9 == HIGH) pour couper le son? (solution SireneFor.ino) La sirène évolue trop vite, comment la ralentir? Avec un boucle for qui joue n fois la même période. 2.9 Anticipons Pour faire varier l'intensité de la Led, on peut s'inspirer de la sirène pour décider quand on allume et éteint, et faire cela assez rapidement pour que l'on ne voie pas le clignotement. C'est plus simple avec la fonction analogwrite (pin, %intensité);, que l'on verra plus tard, qui agit sur la pins 3 et quelques autres (3, 5, 6, 9, 10, and 11). On voit aussi dans cet exemple que la variable i est déclarée dans le for, pour la durée du for, //LedVarie delay(59; fixe la vitesse de variation const int Led3=3; pinmode (Led3, OUTPUT); for (int i=0 ; i<256 ; i++ ) analogwrite(led3,i); delay (20) ; for (int i=255 ; i>0 ; i-- ) analogwrite(led3,i); delay (20) ; 2.10 Règles d'écriture Le C est "case sensitive" mais à part cela vous pouvez nommer les variables et constantes comme vous voulez. Mais si vous ne voulez pas vous faire traiter de mauvais programmeur au premier coup d'oeil jeté à votre programme, il faut suivre les règles suivantes les constantes ont un nom qui commence par une majuscule ValeurMax les variables ont un nom qui commence par une minuscule demiperiode les noms des identificateurs sont significatifs (pas de var, toto) ne pas utiliser des noms qui se ressemblent trop éviter le risque de confusion entre 0 et o, 1 et l indenter les lignes pour faire ressortir la structure syntaxique du programme bien commenter l'objectif, l'environnement matériel, la structure de chaque bloc une ligne vide peut être un excellent commentaire une accolade fermante est seule sur une ligne, sauf pour le do..while

Arduino/C avec la carte Diduino Cours02 5 1.10 Assimiler Il faut passer du temps, c'est à dire relire la doc, modifier des exemples, s'en inventer, avant d'être à l'aise avec ces commandes de base du C et respecter scrupuleusement la discipline de mise en page qui aide à la lisibilité, pour soi quand on écrit, pour les autres quand ils lisent. Si vous demandez sous Google "Arduino while" vous tombez sur une page explicative qui vous aidera ou vous troublera. Nous n'avons encore vu qu'une partie des termes utilisés pour décrire la fonctionnalité du C. Pour continuer, si vous avez le kit de composants Diduino, jouer avec ces composants et faire les programmes www.didel.com/diduino/composants.pdf permet d'exercer le C avant de s'attaquer aux notions qui vous manquent encore et qui permettent d'aller vers des applications complexes. Vous trouverez la suite de ce cours sous www.didel.com/diduino/cours03.pdf dans quelques semaines. Le tableau www.didel.com/diduino/resume.pdf est utile pour se rafraîchir la mémoire quand on hésite. jdn 120204/06/09