{"id":515,"date":"2020-03-23T18:08:44","date_gmt":"2020-03-23T17:08:44","guid":{"rendered":"http:\/\/www.ardpylab.fr\/?page_id=515"},"modified":"2020-05-09T19:33:46","modified_gmt":"2020-05-09T17:33:46","slug":"ondes-sonores-activite-4","status":"publish","type":"page","link":"https:\/\/www.ardpylab.fr\/?page_id=515","title":{"rendered":"Ondes sonores &#8211; Activit\u00e9 4"},"content":{"rendered":"\n<h2 style=\"text-align: center;\"><em>\u201d <\/em><span style=\"text-decoration: underline;\"><em>R\u00e9gler la fr\u00e9quence d&rsquo;une onde sonore avec un potentiom\u00e8tre<\/em><\/span> <em>\u201d<br><br><\/em><\/h2>\n\n\n\n<h4>&nbsp;<\/h4>\n<h4><span style=\"color: #3366ff;\"><strong>. <span style=\"text-decoration: underline;\">Objectif<\/span><\/strong><\/span><\/h4>\n\n\n\n<p>Toujours avec <a href=\"https:\/\/www.ardpylab.fr\/?page_id=460\" data-wplink-url-error=\"true\">le m\u00eame circuit<\/a>, dans cette activit\u00e9, l&rsquo;appui sur le bouton-poussoir produit une onde sonore dont la fr\u00e9quence est r\u00e9gl\u00e9e \u00e0 l&rsquo;aide du potentiom\u00e8tre. L&rsquo;\u00e9mission sonore est arr\u00eat\u00e9e en appuyant de nouveau sur le bouton poussoir.<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-461 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/Circuit-ondes-sonores2.jpg\" alt=\"\" width=\"570\" height=\"325\"><\/figure>\n<\/div>\n\n\n\n<p>Le potentiom\u00e8tre est connect\u00e9 sur la broche <strong>A0<\/strong> de l\u2019Arduino. La tension de cette broche varie donc entre <strong>0<\/strong> et <strong>5<\/strong> V (voir le principe de fonctionnement du potentiom\u00e8tre d\u00e9j\u00e0 vu au cours de&nbsp; l&rsquo;activit\u00e9 3 des activit\u00e9s d&rsquo;apprentissage) en fonction de la position du curseur du potentiom\u00e8tre.<\/p>\n<p>La lecture de la valeur de la broche <strong>A0<\/strong> convertie par le convertisseur analogique num\u00e9rique de l\u2019Arduino donne donc un nombre entier entre <strong>0<\/strong> et <strong>1023<\/strong> qui sera utilis\u00e9 pour r\u00e9gler la fr\u00e9quence du son \u00e9mis, en le multipliant par un coefficient pr\u00e9alablement choisi par l\u2019interm\u00e9diaire du moniteur s\u00e9rie.<\/p>\n\n\n\n<h4>&nbsp;<\/h4>\n<h4><span style=\"color: #3366ff;\"><strong>. <u>Envoi de donn\u00e9es du moniteur s\u00e9rie vers l\u2019Arduino<\/u><\/strong><\/span><\/h4>\n\n\n\n<p>Nous avons vu, avec le programme d\u2019apprentissage des entr\u00e9es analogiques, que l\u2019on pouvait envoyer des donn\u00e9es de l\u2019Arduino vers le moniteur s\u00e9rie avec la fonction \u201c<strong>Serial.print()\u201c<\/strong>.<\/p>\n<p>Il est \u00e9galement possible d\u2019envoyer des donn\u00e9es du moniteur s\u00e9rie vers l\u2019Arduino, en r\u00e9ponse \u00e0 une demande d\u2019information par le programme t\u00e9l\u00e9vers\u00e9 dans sa m\u00e9moire.<\/p>\n<p>Pour cela, on va utiliser la fonction \u201c<strong>Serial.available()\u201c<\/strong> qui donne le nombre de caract\u00e8res (octets) disponible pour lecture dans la file d&rsquo;attente (buffer) du port s\u00e9rie et la fonction \u201c<strong>Serial.read()\u201c<\/strong><strong>\u00a0<\/strong>qui lit les donn\u00e9es contenues dans la m\u00e9moire tampon (buffer) du port s\u00e9rie.<\/p>\n<p>Les donn\u00e9es seront envoy\u00e9es sous la forme d\u2019une chaine de caract\u00e8res par le moniteur s\u00e9rie. L\u2019Arduino va lire la chaine, caract\u00e8re par caract\u00e8re, et la reconstituer.<br \/><br \/><\/p>\n<p><a href=\"https:\/\/www.ardpylab.fr\/downloads\/moniteur-serie\/chaines.zip\"><u>Programme pour la r\u00e9ception d\u2019une chaine de caract\u00e8res<\/u><\/a>\u00a0:\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\" style=\"padding-left: 40px;\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/moniteur-serie\/codes\/ino\/Chaines\/Chaines.ino\"><img loading=\"lazy\" decoding=\"async\" width=\"518\" height=\"413\" class=\"wp-image-589\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/chaines.jpg\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/chaines.jpg 518w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/chaines-300x239.jpg 300w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/a><\/figure>\n\n\n\n<p><br>Dans ce programme, il est demand\u00e9 de saisir une chaine de caract\u00e8res. Tant que le nombre de caract\u00e8res disponibles sur le port s\u00e9rie est nul (<strong>Val==0<\/strong>), la m\u00e9moire tampon du port s\u00e9rie est v\u00e9rifi\u00e9e (<strong>Val=Serial.available()<\/strong>), toutes les 200 ms, jusqu\u2019\u00e0 ce que tous les caract\u00e8res de la chaine soient comptabilis\u00e9s. <br>Ceux-ci sont alors lu un par un \u00e0 travers une boucle \u201c<strong>for\u201c <\/strong>(<strong>tampon[i]=Serial.read()<\/strong>) et sont stock\u00e9s dans un tableau de 20 caract\u00e8res au maximum appel\u00e9 \u201c<strong>tampon\u201c<\/strong>&nbsp;qui est ensuite affich\u00e9 dans le moniteur s\u00e9rie. Puis la m\u00e9moire du port s\u00e9rie est vid\u00e9e et il est de nouveau demander de saisir une chaine de caract\u00e8res.<\/p>\n<p>Voici le r\u00e9sultat dans le moniteur s\u00e9rie&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"445\" height=\"196\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-69.png\" alt=\"\" class=\"wp-image-520\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-69.png 445w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-69-300x132.png 300w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/figure><\/div>\n\n\n\n<p><u><br>Remarque<\/u>&nbsp;:<\/p>\n<p>Il est souvent n\u00e9cessaire de convertir des chaines de caract\u00e8res en une variable repr\u00e9sentant un nombre entier ou d\u00e9cimal pour effectuer des calculs.<\/p>\n<p>Il existe, pour cela, trois fonctions \u201c<strong>atoi()\u201c<\/strong>, \u201c<strong>atol()\u201c<\/strong> et \u201c<strong>atof()\u201c<\/strong>, permettant respectivement de transformer une chaine de caract\u00e8res en nombre entier court, en nombre entier long et en nombre d\u00e9cimal.<\/p>\n<p>Si notre chaine de caract\u00e8res \u201c<strong>tampon\u201c<\/strong>&nbsp;repr\u00e9sente un nombre, pour la convertir par exemple en nombre entier, on utilisera l\u2019instruction&nbsp;:<\/p>\n<p><strong>Int nombre = atoi(tampon)<\/strong><\/p>\n<p>Ces fonctions retournent une valeur nulle en cas d&rsquo;erreur (comme par exemple, si on essaye de convertir des lettres en nombre).<br><br><\/p>\n<p>. <u>Rappel&nbsp;sur la programmation d\u2019une boucle <strong>while<\/strong><\/u>:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-70.png\" alt=\"\" class=\"wp-image-522\" width=\"280\" height=\"116\"\/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-71.png\" alt=\"\" class=\"wp-image-523\" width=\"283\" height=\"120\"\/><\/figure><\/div>\n\n\n\n<h4>&nbsp;<\/h4>\n<h4><span style=\"color: #3366ff;\"><strong>. <u>Le programme<\/u><\/strong><\/span><\/h4>\n\n\n\n<p>Voici <a href=\"https:\/\/www.ardpylab.fr\/downloads\/ondes-sonores\/activity4.zip\">le programme de l\u2019activit\u00e9<\/a>\u00a0:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\" style=\"padding-left: 40px;\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/ondes-sonores\/Activity4\/Activity4.ino\"><img loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"752\" class=\"wp-image-594\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-74.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-74.png 584w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-74-233x300.png 233w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\" style=\"padding-left: 40px;\"><img loading=\"lazy\" decoding=\"async\" width=\"579\" height=\"296\" class=\"wp-image-597\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-80.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-80.png 579w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/image-80-300x153.png 300w\" sizes=\"auto, (max-width: 579px) 100vw, 579px\" \/><\/figure>\n\n\n\n<p><strong><u>D\u00e9roulement du programme<\/u><\/strong><strong>&nbsp;:<\/strong><\/p>\n<p>&#8211; D\u00e9claration des constantes et variables&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int PinButton = 12 <\/strong>&nbsp;(constante nombre entier correspondant au n\u00b0 de la broche sur laquelle le bouton poussoir est connect\u00e9)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int PinTone = 8 <\/strong>&nbsp;(constante nombre entier correspondant au n\u00b0 de la broche sur laquelle le buzzer est connect\u00e9)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int PinPot = 0 <\/strong>&nbsp;(constante nombre entier correspondant au n\u00b0 de la broche sur laquelle le potentiom\u00e8tre est connect\u00e9)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int State = 0 <\/strong>&nbsp;(variable nombre entier correspondant \u00e0 l\u2019action \u00e0 effectuer)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int ValButton = 0 <\/strong>&nbsp;(variable nombre entier pour stocker la valeur de la broche du bouton poussoir)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int OldValButton = 0 <\/strong>&nbsp;(variable nombre entier pour stocker la valeur pr\u00e9c\u00e9dente de la broche du bouton poussoir)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int ValPot = 0 <\/strong>&nbsp;(variable nombre entier pour stocker la valeur de la broche du potentiom\u00e8tre)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int Coeff = 0 <\/strong>&nbsp;(variable nombre entier pour stocker la valeur du coefficient multiplicateur)<br><br><\/p>\n<p>&#8211; Initialisation des entr\u00e9es et sorties&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">. La liaison s\u00e9rie est initialis\u00e9e \u00e0 9600 bauds,<\/p>\n<p style=\"padding-left: 40px;\">. La broche du bouton poussoir est initialis\u00e9e comme une entr\u00e9e digitale,<\/p>\n<p style=\"padding-left: 40px;\">. Saisie du coefficient multiplicateur (nombre entier entre 1 et 4) dans le moniteur s\u00e9rie,<\/p>\n<p style=\"padding-left: 40px;\">. Affichage dans le moniteur s\u00e9rie du coefficient choisi.<br><br><\/p>\n<p>&#8211; Fonction principale en boucle&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/ondes-sonores-activity4l.png\" alt=\"\" class=\"wp-image-531\" width=\"667\" height=\"672\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/ondes-sonores-activity4l.png 819w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/ondes-sonores-activity4l-297x300.png 297w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/ondes-sonores-activity4l-150x150.png 150w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/ondes-sonores-activity4l-768x775.png 768w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><\/figure><\/div>\n\n\n\n<p>\u00a0 \u00a0 \u00a0 \u00a0<\/p>\n\n\n<div  class=\"grids-section grids-is-stretch\" style=\"--_gs-gap-desktop:0px 0px;--_gs-m-desktop:0 0 0 0;--_gs-p-desktop:0 0 0 0;--_gs-bg-desktop:transparent none;--_gs-bg-xp-desktop:0px;--_gs-zi-desktop:auto;--_gs-d-desktop:block;--_gs-mw-desktop:calc(100% - 0 - 0);--_gs-gap-tablet:0px 0px;--_gs-m-tablet:0 0 0 0;--_gs-p-tablet:0 0 0 0;--_gs-bg-tablet:transparent none;--_gs-bg-xp-tablet:0px;--_gs-zi-tablet:auto;--_gs-d-tablet:block;--_gs-mw-tablet:calc(100% - 0 - 0);--_gs-gap-mobile:0px 0px;--_gs-m-mobile:0 0 0 0;--_gs-p-mobile:0 0 0 0;--_gs-bg-mobile:transparent none;--_gs-bg-xp-mobile:0px;--_gs-zi-mobile:auto;--_gs-d-mobile:block;--_gs-mw-mobile:calc(100% - 0 - 0);--_gs-columns:2;--_gs-rows:1\"><div class=\"grids-s-w_i\">\n<div class=\"grids-area\" style=\"--_ga-column:1\/2;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=490\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/moins.jpg\" alt=\"\" class=\"wp-image-107\"\/><\/a><\/figure><\/div>\n\n<\/div>\n\n<div class=\"grids-area\" style=\"--_ga-column:2\/3;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=536\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/plus.jpg\" alt=\"\" class=\"wp-image-106\"\/><\/a><\/figure><\/div>\n\n<\/div>\n<\/div><\/div>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>\u201d R\u00e9gler la fr\u00e9quence d&rsquo;une onde sonore avec un potentiom\u00e8tre \u201d &nbsp; . Objectif Toujours avec le m\u00eame circuit, dans cette activit\u00e9, l&rsquo;appui sur le bouton-poussoir produit une onde sonore dont la fr\u00e9quence est r\u00e9gl\u00e9e \u00e0 l&rsquo;aide du potentiom\u00e8tre. L&rsquo;\u00e9mission sonore est arr\u00eat\u00e9e en appuyant de nouveau sur le bouton poussoir. Le potentiom\u00e8tre est connect\u00e9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-515","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=515"}],"version-history":[{"count":0,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/515\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}