La struc­ture de base d’un pro­gramme Ar­dui­no

L'Informaticien - - DEV - THIER­RY THAUREAUX

Le lan­gage uti­li­sé par l’IDE Ar­dui­no stan­dard pour pro­gram­mer le mi­cro­con­trô­leur épo­nyme est ba­sé sur le lan­gage C. Vous pou­vez le té­lé­char­ger sur le site of­fi­ciel, à l’adresse http://www.ar­dui­no.org/ down­loads. Ou­vrez le lo­gi­ciel Ar­dui­no. Une fois la fe­nêtre d’ac­cueil ou­verte, ce code est pro­po­sé par dé­faut : La pre­mière fonc­tion, se­tup, sert à l’ini­tia­li­sa­tion (dé­cla­ra­tion des va­riables et constantes du pro­gramme). La deuxième, loop, re­pré­sente la boucle d’exé­cu­tion du pro­gramme. Si vous êtes pas­sés par cir­cui­to, en re­vanche, votre pro­jet est dé­jà plus avan­cé et peut être di­rec­te­ment trans­fé­ré sur la carte contrô­leur (on dit té­lé­ver­ser en lan­gage ar­dui­nesque…). Avant ce­la, il faut bien évi­dem­ment connec­ter votre carte Ar­dui­no à votre PC via le câble USB nor­ma­le­ment four­ni à cet ef­fet (avec la carte, si­non c’est que vous vous êtes fait rou­ler…). Une fois la connexion éta­blie, cli­quez sur l’icône avec la flèche afin de té­lé­ver­ser le pro­gramme. Le lo­gi­ciel va trans­fé­rer le pro­gramme com­pi­lé, trans­for­mé en lan­gage ma­chine, dans la mé­moire du mi­cro­con­trô­leur de l’Ar­dui­no. Une fois cette opé­ra­tion ef­fec­tuée, l’Ar­dui­no gar­de­ra ce pro­gramme en mé­moire et l’exé­cu­te­ra – tant qu’il se­ra ali­men­té en élec­tri­ci­té. Plus pré­ci­sé­ment, il exé­cu­te­ra jus­qu’à l’ar­rêt le code de loop(). et LOW qu’elle est à 0 V. Pour éteindre la diode, il faut char­ger un nou­veau pro­gramme qui, lui, s’en char­ge­ra – ou plu­tôt fe­ra autre chose. Après avoir vu comment al­lu­mer et éteindre la diode, voyons main­te­nant comment la faire cli­gno­ter. Ou­vrez l’IDE Ar­dui­no – ou Code ::Blocks ver­sion Ar­dui­no - et cli­quez sur l’icône nou­veau pro­gramme. Nom­mez-le Blink, par exemple. Une mini-ana­lyse don­ne­rait les étapes sui­vantes : 1. in­di­quer à l’Ar­dui­no que la connexion 13 doit pou­voir en­voyer du cou­rant ; 2. en­voyer du cou­rant dans la connexion 13 pour que la diode s’al­lume ; 3. ar­rê­ter d’en­voyer du cou­rant dans la connexion 13 pour éteindre la diode ; 4. re­com­men­cer au point nu­mé­ro 2 à l’in­fi­ni – tant que la carte est ali­men­té, si­non l’in­fi­ni se ter­mine.

Jouer une mé­lo­die avec son Ar­dui­no

Pour faire un peu de mu­sique avec votre Ar­dui­no, vous avez be­soin de trois élé­ments : • une carte Ar­dui­no ; • un pe­tit haut-par­leur pou­vant être bran­ché à l’Ar­dui­no ; • une ré­sis­tance de 100 ohms Les fonc­tions de bases per­met­tant de jouer un air de mu­sique sont : tone(pin, fre­quen­cy) tone(pin, fre­quen­cy, du­ra­tion) noTone(pin) La fonc­tion qui nous in­té­resse ici est la fonc­tion tone(). Très simple d’uti­li­sa­tion, elle peut être uti­li­sée de deux ma­nières dif­fé­rentes – elle existe en deux ver­sions, avec deux si­gna­tures dis­tinctes (le nombre de pa­ra­mètres peut être soit 2, soit 3). L’ar­gu­ment pin, comme vous l’au­rez de­vi­né, re­pré­sente le pin sur le­quel est bran­ché le haut­par­leur. Il faut aus­si spé­ci­fier l’ar­gu­ment fre­quen­cy. Le son est une onde qui se pro­page, cette

onde étant dé­fi­nie par son am­pli­tude – plus elle est grande plus le son est fort – et sa fré­quence. La fré­quence, ex­pri­mée en hertz, est le nombre d’os­cil­la­tion de l’onde par uni­té de temps (ici, en se­conde). C’est à dire le nombre de fois que la forme de l’onde va se ré­pé­ter en une se­conde. Plus la fré­quence est éle­vée plus le son est ai­guë, et vice-ver­sa. L’équipe Ar­dui­no, dans son in­fi­nie bien­veillance, a mis en ligne un fi­chier conte­nant le nom des notes et la fré­quence cor­res­pon­dante : pitches.h. C’est un fi­chier hea­der C dé­fi­nis­sant des ma­cros, c’est-àdire des «es­pèces» de va­riables – es­pèces, car elles n’existent pas vrai­ment en mé­moire, c’est le pré­pro­ces­seur qui les rem­pla­ce­ra dans le code par leur va­leur cor­res­pon­dante avant la com­pi­la­tion. Bref, au­tant en pro­fi­ter au lieu de s’em­bê­ter à re­trou­ver ces cor­res­pon­dances, ce qui se­rait as­sez fas­ti­dieux. Pour l’uti­li­ser, cli­quez sur la pe­tite flèche en haut à droite de l’IDE Ar­dui­no, créez un nou­veau fi­chier que vous nom­me­rez pitches.h et col­lez-y le code en ques­tion – que vous trou­ve­rez à cette adresse : https://www.ar­dui­no.cc/en/ Tu­to­rial/to­neMe­lo­dy. Vous de­vrez en­suite in­clure le fi­chier hea­der pitches.h dans votre pro­gramme prin­ci­pal en ajou­tant au dé­but : #in­clude "pitches.h" Vous pou­vez spé­ci­fier la du­rée pen­dant la­quelle la note se­ra jouée. Si vous ne spé­ci­fiez au­cune du­rée, il fau­dra ap­pe­ler la fonc­tion noTone() pour ar­rê­ter le son sur le pin concer­né. Le nom des notes est sto­cké dans un ta­bleau et leur du­rée dans un autre. Il faut jouer chaque note du ta­bleau dans une boucle, avec la du­rée cor­res­pon­dante et un pe­tit in­ter­valle entre chaque note. Ce­la donne : // Jouer une mé­lo­die #in­clude "pitches.h" // notes de la mé­lo­die : int me­lo­dy[] = {NOTE_C4, NOTE_ G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4}; // du­rées des notes : 4 = quart de note, 8 = hui­tième de note, … int no­teDu­ra­tions[] ={4, 8, 8, 4,4,4,4,4 }; void se­tup() { // par­cours du ta­bleau des notes de la mé­lo­die : for (int thisNote = 0; thisNote < 8; thisNote++) { // pour cal­cu­ler la du­rée d’exé­cu­tion de la note, di­vi­ser une se­conde // par le type de note (4 ou 8 ici). // quart de note = 1000 / 4, hui­tième de note = 1000/8 int no­teDu­ra­tion = 1000/ no­teDu­ra­tions[thisNote]; tone(8, me­lo­dy[thisNote],no­teDu­ra­tion); // pour bien dif­fé­ren­cier les notes, dé­fi­nir un in­ter­valle de // temps mi­ni­mum entre elles. Ici, on ajoute 30% à la du­rée // d’exé­cu­tion, ce qui re­vient à mul­ti­plier par 1,3 : int pau­seBet­weenNotes = no­teDu­ra­tion * 1.30; de­lay(pau­seBet­weenNotes); // ar­rête l’exé­cu­tion des notes via l’ap­pel à la fonc­tion notone() : noTone(8); // in­utile de re­jouer le mor­ceau, la fonc­tion loop reste donc vide. }❍

Newspapers in French

Newspapers from France

© PressReader. All rights reserved.