{"id":6608,"date":"2023-09-18T16:30:28","date_gmt":"2023-09-18T14:30:28","guid":{"rendered":"https:\/\/www.ardpylab.fr\/?page_id=6608"},"modified":"2023-09-18T17:30:37","modified_gmt":"2023-09-18T15:30:37","slug":"des-sketchs-a-ajouter-a-ardpylog-suite-14","status":"publish","type":"page","link":"https:\/\/www.ardpylab.fr\/?page_id=6608","title":{"rendered":"Des sketchs \u00e0 ajouter \u00e0 ArdPyLog (suite)"},"content":{"rendered":"\n<h4><strong style=\"color: inherit; font-size: 1.25em;\"><br>14. <a href=\"https:\/\/www.ardpylab.fr\/downloads\/ardpylog\/Force_Sensor.zip\"><span style=\"text-decoration: underline;\"><span style=\"color: #3366ff; text-decoration: underline;\">Capteur de Force<\/span><\/span><\/a><\/strong> <span style=\"color: inherit; font-size: 1.25em; font-weight: 600;\">&nbsp;(<i>Mesurer des forces \u00e0 l\u2019aide d\u2019un capteur &nbsp;<\/i>&#8211; Cat\u00e9gorie: <span style=\"color: #3366ff;\">M\u00e9canique<\/span><\/span><span style=\"color: inherit; font-size: 1.25em; font-weight: 600;\">)<br><br><\/span><\/h4>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"935\" height=\"565\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor.jpg\" alt=\"\" class=\"wp-image-6612\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor.jpg 935w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor-300x181.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor-768x464.jpg 768w\" sizes=\"auto, (max-width: 935px) 100vw, 935px\" \/><\/figure><\/div>\n\n\n\n<p>\u00a0<\/p>\n<p>L&rsquo;objectif de cette activit\u00e9 est de mesurer une force \u00e0 l\u2019aide d\u2019un capteur FSR402 Grove puis d\u2019afficher la valeur mesur\u00e9e sur un \u00e9cran LCD.<br \/>Le module capteur de force compatible Grove bas\u00e9 sur un FSR402 permet la mesure d&rsquo;une pression de 0,2 \u00e0 20 N. Ce capteur communique avec un microcontr\u00f4leur type Arduino via une liaison analogique :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-6613\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_1-300x137.jpg\" alt=\"\" width=\"585\" height=\"267\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_1-300x137.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_1-768x352.jpg 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_1.jpg 838w\" sizes=\"auto, (max-width: 585px) 100vw, 585px\" \/><\/p>\n<p>Pour convertir les forces exerc\u00e9es sur le capteur en tension, le module FSR 402 est li\u00e9 \u00e0 un syst\u00e8me de mesure de r\u00e9sistance dans un diviseur de tension :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-6614\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_2-300x205.jpg\" alt=\"\" width=\"651\" height=\"445\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_2-300x205.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_2-768x526.jpg 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_2.jpg 792w\" sizes=\"auto, (max-width: 651px) 100vw, 651px\" \/><\/p>\n<p>Le sch\u00e9ma \u00e9lectrique du capteur de force Grove est le suivant :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-6615\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_3-300x114.jpg\" alt=\"\" width=\"579\" height=\"220\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_3-300x114.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Force_Sensor_3.jpg 747w\" sizes=\"auto, (max-width: 579px) 100vw, 579px\" \/><\/p>\n<p>\u00a0<\/p>\n<p>L\u2019\u00e9cran \u00e0 cristaux liquides utilis\u00e9 comporte deux rang\u00e9es de 16 caract\u00e8res, d\u2019o\u00f9 son nom de LCD 1602 et le potentiom\u00e8tre du montage permet de r\u00e9gler sa luminosit\u00e9.<br \/>Le code de l&rsquo;activit\u00e9 n\u00e9cessite l&rsquo;installation au pr\u00e9alable de la librairie \u00a0\u00bb LiquidCrystal \u00a0\u00bb d\u2019Adafruit.<br \/>Afin d\u2019ajouter une librairie \u00e0 l\u2019IDE Arduino, il faut aller dans le menu \u00ab Outils -&gt;G\u00e9rer les biblioth\u00e8ques \u00bb :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-6490\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/EcranLCD_1-300x213.jpg\" alt=\"\" width=\"603\" height=\"428\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/EcranLCD_1-300x213.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/EcranLCD_1-768x546.jpg 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/EcranLCD_1.jpg 985w\" sizes=\"auto, (max-width: 603px) 100vw, 603px\" \/><\/p>\n<p>Il suffit ensuite de rechercher et d\u2019ajouter la librairie \u00a0\u00bb LiquidCrystal \u00a0\u00bb d\u2019Adafruit:<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-6491\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/EcranLCD_2-300x170.jpg\" alt=\"\" width=\"560\" height=\"317\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/EcranLCD_2-300x170.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/EcranLCD_2-768x434.jpg 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/EcranLCD_2.jpg 782w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/p>\n<p>\u00a0<\/p>\n<p><span style=\"text-decoration: underline;\">Le programme<\/span><\/p>\n<p>Voici le code de l\u2019activit\u00e9 :<\/p>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%; padding-left: 40px;\">\n<p>#include &lt;LiquidCrystal.h&gt;<\/p>\n<p>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);<\/p>\n<p>\/\/Constants:<br \/>const int sensorPin = A0; \/\/pin A0 to read analog input<\/p>\n<p>const int onOffSwitchStateSwitchPin = 7;<br \/>const int PinLED = 6;<\/p>\n<p>int onOffSwitchState = 0; <br \/>int previousOnOffSwitchState = 0; <br \/>int state=0;<br \/><br \/>\/\/Variables:<br \/>int value = 0; \/\/save analog value<br \/>int previousvalue = 0;<br \/><br \/>void setup(){<br \/><br \/>Serial.begin(9600); \/\/Begin serial communication<br \/>pinMode(onOffSwitchStateSwitchPin, INPUT);<br \/>pinMode(PinLED,OUTPUT);<\/p>\n<p>lcd.begin(16, 2);<br \/>lcd.clear();<br \/>lcd.setCursor(0, 0);<br \/>lcd.print (\u00ab\u00a0ARDUINO -\u00ab\u00a0);<br \/>lcd.setCursor(0, 1);<br \/>lcd.print (\u00ab\u00a0CAPTEUR FORCE\u00a0\u00bb);<br \/><br \/>}<br \/><br \/>void loop(){<\/p>\n<p>onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);<br \/>delay(1);<br \/>if ((onOffSwitchState == HIGH)&amp;&amp;(previousOnOffSwitchState == LOW)) <br \/>{<br \/>state=1-state;<br \/>delay(10);<br \/>}<br \/>else <br \/>{<br \/>if ((onOffSwitchState == LOW)&amp;&amp;(previousOnOffSwitchState == HIGH)) <br \/>{<br \/>delay(10);<br \/>}<br \/>}<br \/>previousOnOffSwitchState = onOffSwitchState;<\/p>\n<p>if (state==1) <br \/>{ <br \/>digitalWrite(PinLED, HIGH);<br \/>value = analogRead(sensorPin); \/\/Read and save analog value from sensor<br \/>Serial.println(value); \/\/Print value<\/p>\n<p>if (value!=previousvalue and value&gt;1) {<br \/>lcd.clear();<br \/>lcd.setCursor(0, 0);<br \/>lcd.print(\u00ab\u00a0Valeur capteur:\u00a0\u00bb);<br \/>lcd.setCursor(0, 1);<br \/>lcd.print (value);<br \/>previousvalue = value;<br \/>}<br \/><br \/>delay(100); \/\/Small delay<br \/>}<br \/>else <br \/>{<br \/>digitalWrite(PinLED, LOW);<br \/>lcd.clear();<br \/>lcd.setCursor(0, 0);<br \/>lcd.print (\u00ab\u00a0ARDUINO -\u00ab\u00a0);<br \/>lcd.setCursor(0, 1);<br \/>lcd.print (\u00ab\u00a0CAPTEUR FORCE\u00a0\u00bb);<br \/><br \/>delay(100);<br \/>} <br \/>}<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u00a0<\/p>\n<p><span style=\"text-decoration: underline;\">D\u00e9roulement du programme<\/span> :<\/p>\n<p>\u2013 1. Insertion des biblioth\u00e8ques :<\/p>\n<p style=\"padding-left: 40px;\"><strong>. Insertion de la librairie \u00a0\u00bb LiquidCrystal \u00a0\u00bb d\u2019Adafruit,<\/strong><br \/><strong>. Initialisation de la librairie avec les broches utilis\u00e9es pour l\u2019\u00e9cran LCD.<\/strong><\/p>\n<p>\u00a0<\/p>\n<p>\u2013 2. D\u00e9claration des constantes et variables :<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int sensorPin = A0<\/strong> (constante nombre entier correspondant \u00e0 la broche de l\u2019arduino reli\u00e9e \u00e0 la sortie \u00ab signal \u00bb du capteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int onOffSwitchStateSwitchPin = 7<\/strong> (constante nombre entier correspondant \u00e0 la broche du bouton poussoir)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int PinLED = 6<\/strong> (constante nombre entier correspondant \u00e0 la broche de la DEL)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int onOffSwitchState = 0<\/strong> (variable nombre entier pour stocker la valeur du potentiel de la broche du bouton poussoir)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int previousOnOffSwitchState = 0<\/strong> (variable nombre entier pour stocker la pr\u00e9c\u00e9dente valeur du potentiel de la broche du bouton poussoir)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int state=0<\/strong> (variable nombre entier correspondant \u00e0 l\u2019action \u00e0 effectuer)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int value = 0<\/strong> (variable nombre entier correspondant \u00e0 la valeur de la broche du capteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int previousvalue = 0<\/strong> (variable nombre entier correspondant \u00e0 la valeur pr\u00e9c\u00e9dente de la broche du capteur)<\/p>\n<p>\u00a0<\/p>\n<p>\u2013 3. Initialisation des entr\u00e9es et sorties :<\/p>\n<p style=\"padding-left: 40px;\"><strong>. Initialisation de la liaison s\u00e9rie<\/strong><br \/><strong>. Initialisation du nombre de lignes et de colonnes de l\u2019\u00e9cran LCD,<\/strong><br \/><strong>. Initialisation de la broche du bouton poussoir en entr\u00e9e,<\/strong><br \/><strong>. Initialisation de la broche de la DEL en sortie,<\/strong><br \/><strong>. Affichage du titre de l\u2019activit\u00e9 \u00ab ARDUINO \u2013 CAPTEUR FORCE \u00bb sur l\u2019\u00e9cran LCD.<\/strong><\/p>\n<p>\u00a0<\/p>\n<p>\u2013 4. Fonction principale en boucle :<\/p>\n<p style=\"padding-left: 40px;\"><strong>\u2013&gt; Lecture de la valeur de la broche du bouton poussoir,<\/strong><br \/><strong>\u2013&gt; Si le bouton poussoir est appuy\u00e9, les mesures de force commencent (la DEL est allum\u00e9e),<\/strong><br \/><strong>\u2013&gt; Affichage des valeurs mesur\u00e9es sur l\u2019\u00e9cran LCD et le moniteur s\u00e9rie,<\/strong><br \/><strong>\u2013&gt; Si le bouton poussoir est de nouveau appuy\u00e9, les mesures sont arr\u00eat\u00e9es (la DEL est \u00e9teinte).<\/strong><\/p>\n<p>\u00a0<\/p>\n\n\n<div  class=\"grids-section grids-is-advanced\" 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:12;--_gs-rows:6\"><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<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=6592\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/moins.jpg\" alt=\"\" class=\"wp-image-107\" width=\"44\" height=\"24\"\/><\/a><\/figure>\n\n<\/div>\n\n<div class=\"grids-area\" style=\"--_ga-column:12\/13;--_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<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=6622\"><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>\n\n<\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>14. Capteur de Force &nbsp;(Mesurer des forces \u00e0 l\u2019aide d\u2019un capteur &nbsp;&#8211; Cat\u00e9gorie: M\u00e9canique) \u00a0 L&rsquo;objectif de cette activit\u00e9 est de mesurer une force \u00e0 l\u2019aide d\u2019un capteur FSR402 Grove puis d\u2019afficher la valeur mesur\u00e9e sur un \u00e9cran LCD.Le module capteur de force compatible Grove bas\u00e9 sur un FSR402 permet la mesure d&rsquo;une pression de [&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-6608","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/6608","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=6608"}],"version-history":[{"count":6,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/6608\/revisions"}],"predecessor-version":[{"id":6639,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/6608\/revisions\/6639"}],"wp:attachment":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}