{"id":39380,"date":"2017-10-12T15:01:28","date_gmt":"2017-10-12T13:01:28","guid":{"rendered":"https:\/\/magazinnew.reichelt.de\/magazin\/non-classifiee\/mesure-de-la-temperature-et-de-lhumidite-avec-la-carte-arduino-uno-partie-2\/"},"modified":"2023-04-12T11:23:52","modified_gmt":"2023-04-12T09:23:52","slug":"mesure-de-la-temperature-carte-arduino-uno-partie-2","status":"publish","type":"post","link":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/","title":{"rendered":"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2]"},"content":{"rendered":"<p>Pour faire suite \u00e0 la premi\u00e8re partie de\u00a0notre tutoriel sur la mesure de la temp\u00e9rature et de l&#8217;humidit\u00e9 avec la carte Arduino Uno, retrouvez la deuxi\u00e8me partie de l&#8217;exp\u00e9rience dans cet article.<\/p>\n<p><!--more--><\/p>\n[themen_sprungmarken]\n<h2><strong>Le projet<\/strong><\/h2>\n<p>Niveau : Avanc\u00e9.<br \/>\nTemps requis : environ 1,5 heures.<br \/>\nBudget : environ 30 euros.<br \/>\nCe dont vous avez besoin : <a href=\"https:\/\/www.reichelt.com\/fr\/fr\/arduino-horloge-temps-r-el-grove-rtc-grv-rtc-p191187.html?r=1\" target=\"_blank\" rel=\"noopener\">1x Arduino &#8211; Grove real time clock &#8211; RTC<\/a>, <a href=\"https:\/\/www.reichelt.com\/fr\/fr\/shield-arduino-carte-sd-v4-ard-shd-sd-v4-p191233.html?&amp;nbc=1\" target=\"_blank\" rel=\"noopener\">1x Arduino Shield &#8211; SD card V4<\/a>, <a href=\"https:\/\/www.reichelt.com\/fr\/fr\/pile-bouton-au-lithium-3-v-38-mah-12-5-x-2-5-mm-cr-1225-p75583.html?&amp;nbc=1\" target=\"_blank\" rel=\"noopener\">1x batterie pour Grove real time clock<\/a>, 1x carte SD .<\/p>\n<p>El\u00e9ments additionnels : Connexion Internet, alimentation \u00e9lectrique pour l&#8217;Arduino.<\/p>\n<p>Dans les derniers conseils pratiques concernant <em>Arduino<\/em>, nous avons mis en place un affichage de la temp\u00e9rature et de l\u2019humidit\u00e9 de l\u2019air. Une extension est cette fois pr\u00e9vue pour enregistrer ces donn\u00e9es sur une carte <em>SD<\/em>. Lors de chaque mesure, le moment correspondant est \u00e9galement conserv\u00e9. On ajoute dans ce but une carte <em>SD<\/em> ainsi qu\u2019une horloge temps r\u00e9el. L\u2019affichage peut cependant \u00eatre conserv\u00e9 au niveau du module <em>Grove-Shield<\/em>, mais si l\u2019on souhaite utiliser un suivi des donn\u00e9es sans affichage, il est possible simplement de le retirer.<\/p>\n<h2>Le module <em>SD-Shield<\/em><\/h2>\n<h3><strong>Description et mise en place<\/strong><\/h3>\n<p>L\u2019enregistreur des donn\u00e9es conserve ses donn\u00e9es sur une carte <em>SD<\/em>, <em>SDHC<\/em>\u00a0 ou sur une carte micro <em>SD<\/em> (dans ce cas avec un adaptateur), disponibles dans le commerce. Pour cela, un module <em>Shield<\/em> est plac\u00e9 entre la carte <em>Arduino<\/em> et le module <em>Base-Shield<\/em> \u2013 et pour une question de branchement, le module <em>Base-Shield<\/em> reste en haut.<\/p>\n<p>Les biblioth\u00e8ques indispensables au module <em>SD-Shield<\/em> sont d\u00e9j\u00e0 int\u00e9gr\u00e9es \u00e0 <em>Arduino Studio<\/em>, et ne doivent donc pas \u00eatre install\u00e9es s\u00e9par\u00e9ment. La documentation est disponible dans la section des r\u00e9f\u00e9rences <em>Arduino<\/em>, \u00e0 l\u2019adresse suivante\u00a0: <a href=\"https:\/\/www.arduino.cc\/en\/Reference\/SD\">https:\/\/www.arduino.cc\/en\/Reference\/SD<\/a>.<\/p>\n<h3><strong>Enregistrement des donn\u00e9es \u2013 Bonjour tout le monde<\/strong><\/h3>\n<p>Les premi\u00e8res donn\u00e9es sont \u00e9crites sur la carte gr\u00e2ce au programme suivant\u00a0:<\/p>\n<pre class=\"lang:html decode:true \">#include \n\n#include \n\n\n\nint SELECTED_CHIP = 4;\n\nint count = 0;\n\n\n\nvoid setup() {\n\nSerial.begin(9600);\n\nif (SD.begin(SELECTED_CHIP)) {\n\nSerial.println(\"SD-Card initialized.\");\n\n} else {\n\nSerial.println(\"SD-Card failed or is missing\");\n\n}\n\n}\n\n\n\nvoid loop() {\n\nString line = String(\"Bonjour le monde #\") + String(count);\n\nwriteToSD(line);\n\ncount = count + 1;\n\ndelay(1000);\n\n}\n\n\n\nvoid writeToSD(String line) {\n\nFile dataFile = SD.open(\"test.csv\", FILE_WRITE);\n\nif (dataFile) {\n\ndataFile.println(line); \/\/ Enregistrer sur la carte\n\ndataFile.close(); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Fermer le fichier\n\nSerial.println(line);\n\n} else {\n\nSerial.println(\"Error opening datafile\");\n\n}\n\n}\n\n<\/pre>\n<p>Deux variables sont d\u2019abord d\u00e9finies\u00a0: SELECTED_CHIP indique quel mat\u00e9riel est utilis\u00e9 au niveau du module <em>SD-Shield<\/em>, la valeur \u00e9tant fournie par le fabricant. La variable count sert uniquement \u00e0 comptabiliser en parall\u00e8le les proc\u00e9dures d\u2019enregistrement en cours, de mani\u00e8re \u00e0 enregistrer le nombre sur la carte.<\/p>\n<p>Dans setup(), un lien s\u00e9quentiel de r\u00e9solution des anomalies est d\u2019abord mis en place, puis un lien avec la carte <em>SD<\/em>. La m\u00e9thode SD.begin() indique si le lien a pu \u00eatre \u00e9tabli avec succ\u00e8s.<\/p>\n<p>La ligne est int\u00e9gr\u00e9e dans loop(), pour \u00eatre ensuite enregistr\u00e9e avec writeToSD() sur la carte <em>SD<\/em>. Nous utilisons par ailleurs la classe String qui permet de travailler de fa\u00e7on souple avec les cha\u00eenes de caract\u00e8res. L\u2019op\u00e9rateur + associe deux Strings, la variable count est donc tout d\u2019abord convertie en un String unique par l\u2019interm\u00e9diaire de String(count). La valeur de count est par ailleurs augment\u00e9e d\u2019une unit\u00e9, et il convient pour finir d\u2019attendre une seconde.<\/p>\n<p>L\u2019enregistrement intervient au niveau de writeToSD(). \u00c0 ce niveau, un fichier est d\u2019abord ouvert avec SD.open() ou cr\u00e9\u00e9 s\u2019il n\u2019existe pas d\u00e9j\u00e0 (important\u00a0: le nom de fichier doit comprendre au maximum 8 caract\u00e8res). FILE_WRITE indique que le fichier doit \u00eatre ouvert en mode \u00e9criture. Si l\u2019ouverture s\u2019est bien d\u00e9roul\u00e9e, file contient un objet de la classe <em>File<\/em>, avec lequel nous \u00e9crivons les lignes associ\u00e9es dans loop(). Nous fermons ensuite \u00e0 nouveau le fichier. Cette proc\u00e9dure permet de veiller \u00e0 ce que le fichier ne soit pas endommag\u00e9 au cas o\u00f9 la carte est retir\u00e9e entre deux proc\u00e9dures d\u2019enregistrement ou en cas de coupure de courant. Afin de r\u00e9soudre les anomalies, nous r\u00e9introduisons \u00e9galement \u00e0 nouveau la valeur de line au niveau de l\u2019interface s\u00e9quentielle.<\/p>\n<p>Si toutefois l\u2019ouverture ne s\u2019est pas bien d\u00e9roul\u00e9e (par exemple, en raison de \u00a0l\u2019absence de carte <em>SD<\/em>), file est vide et un message d\u2019erreur est \u00e9mis au niveau de l\u2019interface s\u00e9quentielle.<\/p>\n<h2>L\u2019horloge temps r\u00e9el<\/h2>\n<h3><strong>Description et mise en place<\/strong><\/h3>\n<p>Contrairement \u00e0 un ordinateur de bureau, <em>Arduino<\/em> ne dispose pas d\u2019une horloge int\u00e9gr\u00e9e, celle-ci n\u2019\u00e9tant pas n\u00e9cessaire pour de nombreuses applications. Pour l\u2019enregistreur de donn\u00e9es, nous utilisons par cons\u00e9quent le module <em>Grove-RTC<\/em>, qui contient un microprocesseur de cadencement <em>DS1307<\/em>.<\/p>\n<p>L\u2019horloge temps r\u00e9el n\u00e9cessite une source de tension suppl\u00e9mentaire sous la forme d\u2019une pile bouton <em>3V (CR1225)<\/em>, afin que le temps r\u00e9gl\u00e9 soit conserv\u00e9, y compris lorsque l\u2019<em>Arduino<\/em> n\u2019a plus de courant. \u00c0 l\u2019inverse, cela a pour cons\u00e9quence que l\u2019horloge temps r\u00e9el ne fonctionne pas correctement sans pile, on ne peut donc pas s\u2019en passer, m\u00eame lorsque l\u2019<em>Arduino<\/em> dispose d\u2019un raccordement \u00e0 une source d\u2019alimentation \u00e9lectrique. La communication circule par l\u2019interm\u00e9diaire d\u2019un syst\u00e8me de bus <em>I\u00b2C<\/em>. Il est possible d\u2019utiliser n\u2019importe quel type de raccordement I\u00b2C.<\/p>\n<p>L\u2019horloge temps r\u00e9el a besoin, comme pour l\u2019affichage, de l\u2019installation d\u2019une biblioth\u00e8que\u00a0:<\/p>\n<p>T\u00e9l\u00e9chargement\u00a0: <a href=\"https:\/\/github.com\/Seeed-Studio\/RTC_DS1307\/archive\/master.zip\">https:\/\/github.com\/Seeed-Studio\/RTC_DS1307\/archive\/master.zip<\/a><\/p>\n<p>Documentation\u00a0: <a href=\"http:\/\/wiki.seeed.cc\/Grove-RTC\/\">http:\/\/wiki.seeed.cc\/Grove-RTC\/<\/a><\/p>\n<p>T\u00e9l\u00e9charger les biblioth\u00e8ques, puis par l\u2019interm\u00e9diaire du menu \u00ab\u00a0Sketch\u00a0\u00bb \u2192 installer \u00ab\u00a0Lier la biblioth\u00e8que\u00a0\u00bb \u2192 \u00ab\u00a0Ajouter les biblioth\u00e8ques .ZIP\u2026\u00a0\u00bb.<\/p>\n<p>Pour l\u2019ensemble des biblioth\u00e8ques il existe des exemples de programmes sous \u00ab\u00a0Fichier\u00a0\u00bb \u2192 \u00ab\u00a0Exemples\u00a0\u00bb.<\/p>\n<h3><strong>R\u00e9glage et lecture du temps<\/strong><\/h3>\n<p>Pour r\u00e9gler le temps au niveau du programme final, nous utilisons un Sketch au lieu de la m\u00e9thode setup(). Si cela n\u2019\u00e9tait pas le cas, le temps serait \u00e9tabli \u00e0 nouveau \u00e0 chaque d\u00e9marrage de l\u2019Arduino\u00a0:<\/p>\n<pre class=\"lang:html decode:true \">#include &lt;Wire.h&gt;\n\n#include &lt;DS1307.h&gt;\n\n\u00a0\n\nDS1307 clock; \/\/ cr\u00e9ation d\u2019un objet temps\n\n\u00a0\n\nvoid setup() {\n\nSerial.begin(9600);\n\n\u00a0\n\n\/\/ \u00e9tablir le lien avec le temps\n\nclock.begin();\n\n\/\/ r\u00e9gler le temps\n\nclock.fillByYMD(2017, 9, 24);\n\nclock.fillByHMS(18, 53, 15);\n\nclock.fillDayOfWeek(SAT);\n\nclock.setTime();\n\n}\n\n\u00a0\n\nvoid loop() {\n\nprintTime();\n\ndelay(1000);\n\n}\n\n\u00a0\n\nvoid printTime() {\n\nclock.getTime(); \/\/ rappeler le temps au niveau microprocesseur\n\nSerial.print(clock.hour, DEC);\n\nSerial.print(\":\");\n\nSerial.print(clock.minute, DEC);\n\nSerial.print(\":\");\n\nSerial.print(clock.second, DEC);\n\nSerial.print(\" | \");\n\nSerial.print(clock.dayOfMonth, DEC);\n\nSerial.print(\".\");\n\nSerial.print(clock.month, DEC);\n\nSerial.print(\".\");\n\nSerial.print(clock.year, DEC);\n\nSerial.println();\n\n}\n\n<\/pre>\n<p>Dans setup(), nous ouvrons tout d\u2019abord le lien avec le port s\u00e9quentiel, de mani\u00e8re \u00e0 transmettre l\u2019heure \u00e0 l\u2019ordinateur de bureau pour permettre une v\u00e9rification. Par l\u2019interm\u00e9diaire de clock.begin(), le lien avec l\u2019horloge est ensuite ouvert. La date, l\u2019heure et le jour de la semaine sont ainsi pr\u00e9par\u00e9s pour \u00eatre finalement transmis \u00e0 l\u2019horloge temps r\u00e9el par l\u2019interm\u00e9diaire de clock.setTime() (remplacer au pr\u00e9alable les valeurs avec l\u2019heure actuelle ;-)).<\/p>\n<p>Dans loop(), le temps est tout d\u2019abord indiqu\u00e9, puis on laisse une seconde s\u2019\u00e9couler. Avec <em>Arduino Studio <\/em>l\u2019\u00e9mission appara\u00eet dans \u00ab\u00a0Outils\u00a0\u00bb \u2192 \u00ab\u00a0Contr\u00f4le s\u00e9quentiel\u00a0\u00bb.<\/p>\n<p><strong>Important\u00a0:<\/strong> la transmission du programme \u00e0 l\u2019Arduino dure quelques secondes. Il est donc difficile de r\u00e9gler pr\u00e9cis\u00e9ment le temps. Pour cette application, cela ne pose pas de probl\u00e8me. En effet, lorsqu\u2019une valeur mesur\u00e9e appara\u00eet toutes les quelques minutes pour indiquer l\u2019\u00e9volution des valeurs mesur\u00e9es pendant la journ\u00e9e, un \u00e9cart de quelques secondes ne fait aucune diff\u00e9rence.<\/p>\n<h3><strong>Le programme final<\/strong><\/h3>\n<p>Apr\u00e8s avoir test\u00e9 l\u2019ensemble des parties une fois, nous pouvons \u00e9tendre le programme \u00e0 partir du dernier tutoriel :<\/p>\n<pre class=\"lang:html decode:true \">#include &lt;SPI.h&gt;\n\n#include &lt;SD.h&gt;\n\n#include &lt;Wire.h&gt;\n\n#include &lt;DS1307.h&gt;\n\n#include &lt;DHT.h&gt;\n\n#include &lt;rgb_lcd.h&gt;\n\n\u00a0\n\nDS1307 clock;\n\nDHT dht(A0, DHT22);\n\nrgb_lcd lcd;\n\n\u00a0\n\nbyte DEGREE_SYMBOL = 0;\n\nbyte degree[8] = {\n\n0b00000,\n\n0b00010,\n\n0b00101,\n\n0b00010,\n\n0b00000,\n\n0b00000,\n\n0b00000,\n\n0b00000\n\n};\n\n\u00a0\n\nunsigned long DISPLAY_UPDATE_INTERVAL = 200; \/\/ 200 Millisecondes\n\nunsigned long WRITE_INTERVAL = 60000; \/\/ 1 Minute\n\n\u00a0\n\nunsigned long lastDisplayUpdate = DISPLAY_UPDATE_INTERVAL;\n\nunsigned long lastWrite = WRITE_INTERVAL;\n\n\u00a0\n\nvoid setup() {\n\nSerial.begin(9600); \/\/ Initialiser l\u2019interface s\u00e9quentielle\n\n\u00a0\n\n\/\/ Initialiser la carte SD\n\nint selectedChip = 4;\n\nif (!SD.begin(selectedChip)) {\n\nSerial.println(\"SD-Card failed or is missing\");\n\n} else {\n\nSerial.println(\"SD-Card initialized.\");\n\n}\n\n\u00a0\n\ndht.begin(); \/\/ \u00c9tablir le lien avec le capteur\n\n\u00a0\n\nclock.begin(); \/\/ \u00c9tablir le lien avec l\u2019horloge temps r\u00e9el\n\n\u00a0\n\nlcd.begin(16, 2); \/\/ \u00c9tablir le lien avec l\u2019affichage et initialiser l\u2019affichage - 2 lignes avec chacune 16 caract\u00e8res\n\nlcd.createChar(DEGREE_SYMBOL, degree); \/\/ Enregistrer le nouveau symbole \"\u00b0\" au niveau de l\u2019affichage\n\n}\n\n\u00a0\n\nvoid loop() {\n\nfloat humidity = dht.readHumidity();\n\nfloat temperature = dht.readTemperature();\n\n\u00a0\n\nif (isnan(temperature) || isnan(humidity)) {\n\nSerial.println(\"Failed to read from DHT\");\n\nreturn; \/\/ Aucune donn\u00e9e --&gt; loop() quitter \u00e0 nouveau \u00e0 ce stade\n\n}\n\n\u00a0\n\nif (millis() - lastDisplayUpdate &gt; DISPLAY_UPDATE_INTERVAL) {\n\nconst float coldest = 18;\n\nconst float hottest = 30;\n\nint red = limit(255 * (temperature - coldest) \/ (hottest - coldest));\n\n\/\/ Couleurs de bleu \u00e0 rouge, en passant par le violet\n\nint green = 0;\n\nint blue = limit(255 * (hottest - temperature) \/ (hottest - coldest));\n\nupdateDisplay(red, green, blue, temperature, humidity);\n\nlastDisplayUpdate = millis();\n\n}\n\n\u00a0\n\nif (millis() - lastWrite &gt; WRITE_INTERVAL) {\n\nString line = String(getTime()) + \";\" + String(temperature) + \";\" + String(humidity);\n\nwriteToSD(line);\n\nlastWrite = millis();\n\n}\n\n}\n\n\u00a0\n\nString getTime() {\n\nclock.getTime(); \/\/ Interroger le temps \u00e0 partir du microprocesseur\n\nString t = String(clock.dayOfMonth, DEC);\n\nt += String(\".\");\n\nt += String(clock.month);\n\nt += String(\".\");\n\nt += String(clock.year);\n\nt += String(\" \");\n\nt += String(clock.hour);\n\nt += \":\";\n\nt += String(clock.minute);\n\nt += \":\";\n\nt += String(clock.second);\n\nreturn t;\n\n}\n\n\u00a0\n\nvoid writeToSD(String line) {\n\nFile dataFile = SD.open(\"datalog.csv\", FILE_WRITE);\n\nif (dataFile) {\n\ndataFile.println(line); \/\/ Enregistrer sur la carte SD\n\ndataFile.close();\n\nSerial.println(line); \/\/ Enregistrer \u00e9galement au niveau de l\u2019interface s\u00e9quentielle pour r\u00e9soudre les anomalies\n\n}\n\nelse {\n\nSerial.println(\"Error opening datafile\");\n\n}\n\n}\n\n\u00a0\n\nvoid updateDisplay(int red, int green, int blue, float temperature, float humidity) {\n\nlcd.setRGB(red, green, blue);\n\n\u00a0\n\nlcd.setCursor(0, 0);\n\nlcd.print(\"T: \");\n\nlcd.print(temperature);\n\nlcd.write(DEGREE_SYMBOL);\n\nlcd.print(\"C\");\n\n\u00a0\n\nlcd.setCursor(0, 1);\n\nlcd.print(\"H: \");\n\nlcd.print(humidity);\n\nlcd.print(\"%\");\n\n}\n\n\u00a0\n\nfloat limit(float color) { \/\/ les valeurs de couleurs doivent \u00eatre situ\u00e9es dans l\u2019intervalle 0..255\n\nif (color &lt; 0) {\n\nreturn 0;\n\n}\n\nelse if (color &gt; 255) {\n\nreturn 255;\n\n}\n\nelse {\n\nreturn color;\n\n}\n\n}\n<\/pre>\n<h3>Deux fr\u00e9quences d&#8217;horloge diff\u00e9rentes<\/h3>\n<p>Une nouveaut\u00e9 de ce programme est la mise en \u0153uvre de deux processus pr\u00e9sentant deux fr\u00e9quences d\u2019horloge diff\u00e9rentes. L\u2019affichage doit \u00eatre actualis\u00e9 plusieurs fois par seconde, de mani\u00e8re \u00e0 donner des informations actualis\u00e9es et \u00e0 assurer une \u00e9volution fluide des couleurs. Pour l\u2019enregistrement des valeurs mesur\u00e9es sur la carte, une fr\u00e9quence d\u2019une minute est cependant suffisante. Des pauses simples avec delay() ne sont pour cette raison plus possibles. La solution\u00a0: gr\u00e2ce \u00e0 la fonction millis(), il est possible de r\u00e9cup\u00e9rer les millisecondes pass\u00e9es depuis le d\u00e9marrage de l\u2019<em>Arduino<\/em>. Au niveau de lastDisplayUpdate et de lastWrite, le dernier \u00e9tat de l\u2019actualisation de l\u2019affichage ou de l\u2019enregistrement est ensuite enregistr\u00e9 sur la carte <em>SD<\/em> . \u00c0 chaque ex\u00e9cution de loop(), une comparaison est alors effectu\u00e9e pour v\u00e9rifier que l\u2019\u00e9cart de ces valeurs avec millis() est plus important que les valeurs de DISPLAY_UPDATE_INTERVAL ou de WRITE_INTERVAL. Les actions correspondantes ne sont men\u00e9es que si cette condition est v\u00e9rifi\u00e9e. Les variables lastWrite et lastDisplayUpdate sont initialis\u00e9es \u00e0 partir de la longueur des intervalles correspondants, de telle fa\u00e7on que les deux actions interviennent directement au moment du d\u00e9marrage du programme.<\/p>\n<p>Dans loop() les valeurs sont dans un premier temps r\u00e9cup\u00e9r\u00e9es et analys\u00e9es par un capteur. Si un probl\u00e8me est survenu lors de la r\u00e9cup\u00e9ration des donn\u00e9es, une erreur est signal\u00e9e et l\u2019ex\u00e9cution de loop() est interrompue \u00e0 ce stade pour repartir du d\u00e9but (c\u2019est-\u00e0-dire la r\u00e9cup\u00e9ration des valeurs par le capteur).<\/p>\n<h3>V\u00e9rification<\/h3>\n<p>Enfin, une v\u00e9rification est men\u00e9e pour savoir s\u2019il est \u00e0 nouveau temps d\u2019actualiser l\u2019affichage. C&#8217;est le cas lorsque la diff\u00e9rence entre le moment correspondant et lastDisplayUpdate est sup\u00e9rieure \u00e0 DISPLAY_UPDATE_INTERVAL. La couleur est ensuite de nouveau d\u00e9termin\u00e9e et les donn\u00e9es sont transmises \u00e0 l\u2019affichage. Pour des raisons de lisibilit\u00e9, la m\u00e9thode updateDisplay() est maintenant utilis\u00e9e. lastDisplayUpdate est ensuite r\u00e9gl\u00e9 sur le moment correspondant.<\/p>\n<p>La m\u00eame chose intervient pour l\u2019enregistrement des donn\u00e9es sur la carte SD. Lorsque le moment de la derni\u00e8re proc\u00e9dure d\u2019enregistrement est plus ancien que WRITE_INTERVAL, le moment correspondant est r\u00e9cup\u00e9r\u00e9 au niveau de l\u2019horloge temps r\u00e9el, les donn\u00e9es sont enregistr\u00e9es sur la carte SD, et lastWrite prend la valeur du moment correspondant.<\/p>\n<p>Le moment est identifi\u00e9 par la m\u00e9thode getTime(), qui rapatrie le moment de l\u2019horloge temps r\u00e9el, et qui \u00e9tablit un String comprenant la date et l\u2019heure. L\u2019op\u00e9rateur += associe la valeur des s\u00e9ries de droite \u00e0 celles de gauche.<\/p>\n<h3><strong>Analyse des donn\u00e9es<\/strong><\/h3>\n<p>Les donn\u00e9es sont transcrites dans un fichier portant le nom datalog.csv, et peuvent \u00eatre import\u00e9es dans des feuilles de travail Excel, LibreOffice Calc ou Google pour \u00eatre analys\u00e9es.<\/p>\n<p>Il convient simplement de retirer la carte <em>SD<\/em> de l\u2019<em>Arduino<\/em> et de la lire sur un ordinateur de bureau.<\/p>\n<p>Amusez-vous bien\u00a0!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour faire suite \u00e0 la premi\u00e8re partie de\u00a0notre tutoriel sur la mesure de la temp\u00e9rature et de l&#8217;humidit\u00e9 avec la carte Arduino Uno, retrouvez la deuxi\u00e8me partie de l&#8217;exp\u00e9rience dans cet article.<\/p>\n","protected":false},"author":1,"featured_media":39093,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6045],"tags":[3170,5419,5599,4424,4479],"class_list":["post-39380","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projets","tag-arduino","tag-arduino-uno","tag-humidite","tag-temperature","tag-tutoriel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2] - reichelt Magazin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2]\" \/>\n<meta property=\"og:description\" content=\"Pour faire suite \u00e0 la premi\u00e8re partie de\u00a0notre tutoriel sur la mesure de la temp\u00e9rature et de l&#8217;humidit\u00e9 avec la carte Arduino Uno, retrouvez la deuxi\u00e8me partie de l&#8217;exp\u00e9rience dans cet article.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/\" \/>\n<meta property=\"og:site_name\" content=\"reichelt Magazin\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-12T13:01:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-12T09:23:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"385\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#\\\/schema\\\/person\\\/54edf009d7730dbe36a83d3e9948e08f\"},\"headline\":\"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2]\",\"datePublished\":\"2017-10-12T13:01:28+00:00\",\"dateModified\":\"2023-04-12T09:23:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/\"},\"wordCount\":1719,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/Arduino-Uno_part-2-1.jpg\",\"keywords\":[\"Arduino\",\"Arduino Uno\",\"humidit\u00e9\",\"temp\u00e9rature\",\"tutoriel\"],\"articleSection\":[\"Projets\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/\",\"name\":\"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2] - reichelt Magazin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/Arduino-Uno_part-2-1.jpg\",\"datePublished\":\"2017-10-12T13:01:28+00:00\",\"dateModified\":\"2023-04-12T09:23:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/Arduino-Uno_part-2-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/Arduino-Uno_part-2-1.jpg\",\"width\":640,\"height\":385,\"caption\":\"In der Fortsetzung des letzten How-Tos programmieren wir dieses Mal einen Temperatur-Log mit dem Arduino Uno\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/projets\\\/mesure-de-la-temperature-carte-arduino-uno-partie-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/\",\"name\":\"reichelt Magazin\",\"description\":\"Das Technik Magazin\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#organization\",\"name\":\"reichelt Magazin\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/reichelt_magazin_logo_de_nl-1.svg\",\"contentUrl\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/reichelt_magazin_logo_de_nl-1.svg\",\"width\":456,\"height\":149,\"caption\":\"reichelt Magazin\"},\"image\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/fr\\\/#\\\/schema\\\/person\\\/54edf009d7730dbe36a83d3e9948e08f\",\"name\":\"admin\",\"sameAs\":[\"https:\\\/\\\/magazin.reichelt.de\\\/magazin\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2] - reichelt Magazin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/","og_locale":"fr_FR","og_type":"article","og_title":"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2]","og_description":"Pour faire suite \u00e0 la premi\u00e8re partie de\u00a0notre tutoriel sur la mesure de la temp\u00e9rature et de l&#8217;humidit\u00e9 avec la carte Arduino Uno, retrouvez la deuxi\u00e8me partie de l&#8217;exp\u00e9rience dans cet article.","og_url":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/","og_site_name":"reichelt Magazin","article_published_time":"2017-10-12T13:01:28+00:00","article_modified_time":"2023-04-12T09:23:52+00:00","og_image":[{"width":640,"height":385,"url":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/#article","isPartOf":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/"},"author":{"name":"admin","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#\/schema\/person\/54edf009d7730dbe36a83d3e9948e08f"},"headline":"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2]","datePublished":"2017-10-12T13:01:28+00:00","dateModified":"2023-04-12T09:23:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/"},"wordCount":1719,"commentCount":0,"publisher":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#organization"},"image":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","keywords":["Arduino","Arduino Uno","humidit\u00e9","temp\u00e9rature","tutoriel"],"articleSection":["Projets"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/","url":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/","name":"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2] - reichelt Magazin","isPartOf":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/#primaryimage"},"image":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","datePublished":"2017-10-12T13:01:28+00:00","dateModified":"2023-04-12T09:23:52+00:00","breadcrumb":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/#primaryimage","url":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","contentUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","width":640,"height":385,"caption":"In der Fortsetzung des letzten How-Tos programmieren wir dieses Mal einen Temperatur-Log mit dem Arduino Uno"},{"@type":"BreadcrumbList","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/projets\/mesure-de-la-temperature-carte-arduino-uno-partie-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.reichelt.com\/magazin\/fr\/"},{"@type":"ListItem","position":2,"name":"Mesure de la temp\u00e9rature et de l\u2019humidit\u00e9 avec la carte Arduino Uno [Partie 2]"}]},{"@type":"WebSite","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#website","url":"https:\/\/www.reichelt.com\/magazin\/fr\/","name":"reichelt Magazin","description":"Das Technik Magazin","publisher":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.reichelt.com\/magazin\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#organization","name":"reichelt Magazin","url":"https:\/\/www.reichelt.com\/magazin\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2021\/11\/reichelt_magazin_logo_de_nl-1.svg","contentUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2021\/11\/reichelt_magazin_logo_de_nl-1.svg","width":456,"height":149,"caption":"reichelt Magazin"},"image":{"@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.reichelt.com\/magazin\/fr\/#\/schema\/person\/54edf009d7730dbe36a83d3e9948e08f","name":"admin","sameAs":["https:\/\/magazin.reichelt.de\/magazin"]}]}},"_links":{"self":[{"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/posts\/39380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/comments?post=39380"}],"version-history":[{"count":4,"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/posts\/39380\/revisions"}],"predecessor-version":[{"id":74984,"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/posts\/39380\/revisions\/74984"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/media\/39093"}],"wp:attachment":[{"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/media?parent=39380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/categories?post=39380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/fr\/wp-json\/wp\/v2\/tags?post=39380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}