{"id":39288,"date":"2017-10-20T11:48:22","date_gmt":"2017-10-20T09:48:22","guid":{"rendered":"https:\/\/magazinnew.reichelt.de\/magazin\/uncategorized\/how-to-code-a-temperature-log-with-the-arduino-uno\/"},"modified":"2023-04-17T13:23:55","modified_gmt":"2023-04-17T11:23:55","slug":"how-to-code-a-temperature-log-with-the-arduino-uno","status":"publish","type":"post","link":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/","title":{"rendered":"How to code a temperature log with the Arduino Uno"},"content":{"rendered":"<p><strong>In the last Arduino \u2018How-To\u2019, we built a display for temperature and humidity. We\u2019ll now show you how to store this data on a <a href=\"https:\/\/www.reichelt.com\/sdhc-speicherkarte-32gb-intenso-class-10-uhs-1-intenso-3421480-p144195.html?&amp;trstct=pol_2&amp;nbc=1\">SD memory card<\/a> and record a time for each measurement. Thus, a <a href=\"https:\/\/www.reichelt.com\/Weiteres-Zubehoer\/ARD-SENSOR-KIT-2\/3\/index.html?ACTION=3;ARTICLE=191233;SEARCH=grove%20sd\">shield for an SD memory card<\/a> and a real time clock are added. The display can remain attached to the Grove shield. If you want to use the data logger without the display, you can simply unplug it.<\/strong><\/p>\n<p><!--more--><\/p>\n[themen_sprungmarken]\n<h2>The SD shield<\/h2>\n<h3>Description and installation<\/h3>\n<p>The data logger saves data to a customary SD, SDHC or micro SD card (with adapter). For this, a shield that comes between the Arduino and the base shield is used \u2013 the base shield remains on top due to the sockets.<\/p>\n<p>The libraries needed for the SD shield are already included in the Arduino studio and don\u2019t need to be installed separately. The documentation can be found in the Arduino reference:<\/p>\n<p><a href=\"https:\/\/www.arduino.cc\/en\/Reference\/SD\">https:\/\/www.arduino.cc\/en\/Reference\/SD<\/a><\/p>\n<h3>Writing data \u2013 hello world<\/h3>\n<p>The first data is written onto the card with the following code:<\/p>\n<pre>#include &lt;SPI.h&gt;\n\n#include &lt;SD.h&gt;\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(\"Hallo Welt #\") + 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); \/\/ Write onto SD card\n\ndataFile.close(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Close file\n\nSerial.println(line);\n\n} else {\n\nSerial.println(\"Error opening datafile\");\n\n}\n\n}<\/pre>\n<p>Firstly, two variables are defined: SELECTED_CHIP shows which hardware is used with the SD shield. The value is taken from the manufacturer of the SD shield. The variable count simply counts the consecutive writing processes to write the number onto the card.<\/p>\n<p>In setup(), an initial serial connection is established to debug, followed by a connection to the SD card. The method SD.begin() feeds back if the connection was successfully established.<\/p>\n<p>In loop() a line is built, which is subsequently written on the SD card by using writeToSD(). For this, we use a string class, which enables flexible working with strings of characters. The operator + connects two strings; thus, the variable count is firstly transformed into a string by using String(count). The value of count is raised by one, and waits for one second.<\/p>\n<p>The writing happens in writeToSD(). Firstly, a file is opened or created (if not yet existing) by using SD.open() (important: the file name can be no longer than 8 characters). FILE_WRITE shows that a file should be opened as writeable. If the opening was successful, file then contains an object of the category file, with which we write the compounded line. Subsequently, be sure to close the file again. This ensures that the file doesn\u2019t get damaged when the card is removed between two writing processes or in case of a power cut. To debug, enter the value from line also onto the serial interface.<\/p>\n<p>If the opening process wasn\u2019t successful (for example because the SC card was missing), then file remains empty and an error message is entered onto the serial interface.<\/p>\n<h2>The real time clock<\/h2>\n<h3>Description and installation<\/h3>\n<p>Unlike a computer, the Arduino doesn\u2019t contain an integrated clock as, for many applications, this isn\u2019t required. For the data logger, we use the <a href=\"https:\/\/www.reichelt.com\/Weiteres-Zubehoer\/GRV-RTC\/3\/index.html?ACTION=3&amp;LA=446&amp;ARTICLE=191187\">Grove-RTC_module<\/a>, which contains a DS1307 impulse generator.<\/p>\n<p>The real time clock requires an additional voltage source in the form of a 3V button cell (CR1225), to ensure that the set time remains even if the Arduino doesn\u2019t have power. This means that the real time clock doesn\u2019t function correctly without a <a href=\"https:\/\/www.reichelt.com\/Knopfzellen-Lithium\/CR-1225\/3\/index.html?ACTION=3&amp;LA=446&amp;ARTICLE=75583&amp;GROUPID=4241&amp;artnr=CR+1225&amp;SEARCH=CR1225\">battery<\/a>, so it cannot be left out, even if the Ardunio is steadily connected to a power source. Communication happens over the I\u00b2C bus system, for which an arbitrary I\u00b2C connection can be used.<\/p>\n<p>As with the display, a separate library needs to be installed for the real time clock:<\/p>\n<p>Download: <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: <a href=\"http:\/\/wiki.seeed.cc\/Grove-RTC\/\">http:\/\/wiki.seeed.cc\/Grove-RTC\/<\/a><\/p>\n<p>Download the libraries and subsequently choose the following menus to install: \u201cSketch\u201d \u2192 \u201cintegrate library\u201d \u2192 \u201cadd ZIP libraries \u2026\u201d.<\/p>\n<p>For all libraries, sample codes can be found in \u201cfile\u201d \u2192 \u201cexamples\u201d.<\/p>\n<h3>Set and read time<\/h3>\n<p>To set the time, a separate sketch instead of the setup() method is used in the final code as otherwise, the time would be reset with every new start of the Arduino.<\/p>\n<p>&nbsp;<\/p>\n<pre>#include &lt;Wire.h&gt;\n\n#include &lt;DS1307.h&gt;\n\n\n\nDS1307 clock; \/\/ create clock object\n\n\n\nvoid setup() {\n\nSerial.begin(9600);\n\n\n\n\/\/ Establish connection to clock\n\nclock.begin();\n\n\/\/ Die Zeit einstellen\n\nclock.fillByYMD(2017, 9, 24);\n\nclock.fillByHMS(18, 53, 15);\n\nclock.fillDayOfWeek(SAT);\n\nclock.setTime();\n\n}\n\n\n\nvoid loop() {\n\nprintTime();\n\ndelay(1000);\n\n}\n\n\n\nvoid printTime() {\n\nclock.getTime(); \/\/ Ask time from chip\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}<\/pre>\n<p>&nbsp;<\/p>\n<p>Firstly, the connection to the serial port is opened in setup(), so the time is sent to the computer for controlling purposes. With clock.begin(), a connection to the clock is then opened, date, time and day are prepared and subsequently sent to the real time clock with&nbsp; &nbsp;clock.setTime() (be sure to enter the actual time!)<\/p>\n<p>In loop() the time is firstly issued and then waits for a second. In the Arduino studio, these values are shown in \u201cTools\u201d \u2192 \u201cSerial monitor\u201d.<\/p>\n<p><strong>Important:<\/strong> Sending the code to the Arduino takes a few seconds, so it is tricky to set the exact time. For this usage, this doesn\u2019t pose a big problem \u2013 a slight deviation of a few seconds doesn\u2019t affect the course of the measured values when a value is tracked every few minutes.<\/p>\n<h3>The final code<\/h3>\n<p>After we\u2019ve tested all parts again, the code from the last programme can be extended as follows:<\/p>\n<pre>#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\n\nDS1307 clock;\n\nDHT dht(A0, DHT22);\n\nrgb_lcd lcd;\n\n\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\n\nunsigned long DISPLAY_UPDATE_INTERVAL = 200; \/\/ 200 milli seconds\n\nunsigned long WRITE_INTERVAL = 60000; \/\/ 1 minutes\n\n\n\nunsigned long lastDisplayUpdate = DISPLAY_UPDATE_INTERVAL;\n\nunsigned long lastWrite = WRITE_INTERVAL;\n\n\n\nvoid setup() {\n\nSerial.begin(9600); \/\/ Initialise serial interface\n\n\n\n\/\/ Initialise SD card\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\n\ndht.begin(); \/\/ Establish connection to sensor\n\n\n\nclock.begin(); \/\/ Establish connection to real time clock\n\n\n\nlcd.begin(16, 2); \/\/ Establish connection to display and initialise display - 2 lines with 16 characters respectively\n\nlcd.createChar(DEGREE_SYMBOL, degree); \/\/ Register the new \"\u00b0\" symbol with the display\n\n}\n\n\n\nvoid loop() {\n\nfloat humidity = dht.readHumidity();\n\nfloat temperature = dht.readTemperature();\n\n\n\nif (isnan(temperature) || isnan(humidity)) {\n\nSerial.println(\"Failed to read from DHT\");\n\nreturn; \/\/ No data --&gt; leave loop() at this point\n\n}\n\n\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\/\/ Farben von blau \u00fcber lila nach rot\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\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\n\nString getTime() {\n\nclock.getTime(); \/\/ Ask time from chip\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\n\nvoid writeToSD(String line) {\n\nFile dataFile = SD.open(\"datalog.csv\", FILE_WRITE);\n\nif (dataFile) {\n\ndataFile.println(line); \/\/ Write onto the SD card\n\ndataFile.close();\n\nSerial.println(line); \/\/ Additionally, write onto serial interface to debug\n\n}\n\nelse {\n\nSerial.println(\"Error opening datafile\");\n\n}\n\n}\n\n\n\nvoid updateDisplay(int red, int green, int blue, float temperature, float humidity) {\n\nlcd.setRGB(red, green, blue);\n\n\n\nlcd.setCursor(0, 0);\n\nlcd.print(\"T: \");\n\nlcd.print(temperature);\n\nlcd.write(DEGREE_SYMBOL);\n\nlcd.print(\"C\");\n\n\n\nlcd.setCursor(0, 1);\n\nlcd.print(\"H: \");\n\nlcd.print(humidity);\n\nlcd.print(\"%\");\n\n}\n\n\n\nfloat limit(float color) { \/\/ colour values need to be in the area between 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}<\/pre>\n<p>New with this code is that there are two processes with different clock rates. The display should be updated several times in a second for a current display and flowing colour transitions. For the writing of the measured values onto the card, a minute interval is sufficient. Simple breaks with delay() are thus no longer possible. The solution: with the operation millis(), past milliseconds since the start of the Arduino can be shown. In lastDisplayUpdate and lastWrite, the time of the last display refresh or writing onto the SD card are recorded. With every run through of loop(), it is evaluated whether the difference between these values to millis() is bigger than the one from DISPLAY_UPDATE_INTERVAL or WRITE_INTERVAL. Only if so, the respective actions are performed. The variables lastWrite and lastDisplayUpdate are initialised with the length of the respective interval, so both actions are immediately carried out with the start of the programme.<\/p>\n<p>Finally, the values are taken from the sensor and tested in loop(). If a problem comes up during this process, an error message is displayed and the execution of loop() is stopped at this point and newly started (i.e. values are again taken from the sensor).<\/p>\n<p>Subsequently, it is tested if a refresh of the display is necessary. This is the case if the difference from the current time and lastDisplayUpdate is bigger than DISPLAY_UPDATE_INTERVAL. Then, the colour is determined and the data is sent to the display. For reasons of legibility, we now have the method updateDisplay(). Lastly, lastDisplayUpdate is set to the current time.<\/p>\n<p>A similar process happens for writing data onto the SD card. If the time of the last writing process is further in the past than WRITE_INTERVAL, the current time is taken from the real time clock, the data is written onto the SC card and lastWrite is set to the current time.<\/p>\n<p>The time is determined in the method getTime(), which takes the time from the real time clock and creates a string with date and time. The operator += adds the value of the right string to the left one.<\/p>\n<h3>Analysis of data<\/h3>\n<p>Data is written in a file with the name datalog.csv and can be imported to Excel, LibreOffice Calc or Google Spreadsheets for analysis.<\/p>\n<p>Simply remove the SD card from the Arduino and read out from the computer.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Have fun!<\/strong><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last Arduino \u2018How-To\u2019, we built a display for temperature and humidity. We\u2019ll now show you how to store this data on a SD memory card and record a time for each measurement. Thus, a shield for an SD memory card and a real time clock are added. The display can remain attached to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":39092,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6037],"tags":[5419,4655,5432],"class_list":["post-39288","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projects","tag-arduino-uno","tag-code","tag-temperature-log"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.1 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Code a temperature log with the Arduino Uno | reichelt.com|Code a temperature log with the Arduino Uno | reichelt.com<\/title>\n<meta name=\"description\" content=\"Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno.|Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno.\" \/>\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\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Code a temperature log with the Arduino Uno | reichelt.com|Code a temperature log with the Arduino Uno | reichelt.com\" \/>\n<meta property=\"og:description\" content=\"Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno|Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/\" \/>\n<meta property=\"og:site_name\" content=\"reichelt Magazin\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-20T09:48:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-17T11:23:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/212.184.1.90\/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:title\" content=\"How to code a temperature log with the Arduino Uno\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/#\/schema\/person\/54edf009d7730dbe36a83d3e9948e08f\"},\"headline\":\"How to code a temperature log with the Arduino Uno\",\"datePublished\":\"2017-10-20T09:48:22+00:00\",\"dateModified\":\"2023-04-17T11:23:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/\"},\"wordCount\":1242,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg\",\"keywords\":[\"Arduino Uno\",\"code\",\"temperature log\"],\"articleSection\":[\"Projects\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/\",\"url\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/\",\"name\":\"Code a temperature log with the Arduino Uno | reichelt.com|Code a temperature log with the Arduino Uno | reichelt.com\",\"isPartOf\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg\",\"datePublished\":\"2017-10-20T09:48:22+00:00\",\"dateModified\":\"2023-04-17T11:23:55+00:00\",\"description\":\"Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno.|Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#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\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.reichelt.com\/magazin\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to code a temperature log with the Arduino Uno\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/#website\",\"url\":\"https:\/\/www.reichelt.com\/magazin\/en\/\",\"name\":\"reichelt Magazin\",\"description\":\"Das Technik Magazin\",\"publisher\":{\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.reichelt.com\/magazin\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/#organization\",\"name\":\"reichelt Magazin\",\"url\":\"https:\/\/www.reichelt.com\/magazin\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/#\/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\/en\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.reichelt.com\/magazin\/en\/#\/schema\/person\/54edf009d7730dbe36a83d3e9948e08f\",\"name\":\"admin\",\"sameAs\":[\"https:\/\/magazin.reichelt.de\/magazin\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Code a temperature log with the Arduino Uno | reichelt.com|Code a temperature log with the Arduino Uno | reichelt.com","description":"Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno.|Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno.","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\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/","og_locale":"en_US","og_type":"article","og_title":"Code a temperature log with the Arduino Uno | reichelt.com|Code a temperature log with the Arduino Uno | reichelt.com","og_description":"Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno|Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno","og_url":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/","og_site_name":"reichelt Magazin","article_published_time":"2017-10-20T09:48:22+00:00","article_modified_time":"2023-04-17T11:23:55+00:00","og_image":[{"width":640,"height":385,"url":"https:\/\/212.184.1.90\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_title":"How to code a temperature log with the Arduino Uno","twitter_misc":{"Written by":"admin","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#article","isPartOf":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/"},"author":{"name":"admin","@id":"https:\/\/www.reichelt.com\/magazin\/en\/#\/schema\/person\/54edf009d7730dbe36a83d3e9948e08f"},"headline":"How to code a temperature log with the Arduino Uno","datePublished":"2017-10-20T09:48:22+00:00","dateModified":"2023-04-17T11:23:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/"},"wordCount":1242,"commentCount":0,"publisher":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/#organization"},"image":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#primaryimage"},"thumbnailUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","keywords":["Arduino Uno","code","temperature log"],"articleSection":["Projects"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/","url":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/","name":"Code a temperature log with the Arduino Uno | reichelt.com|Code a temperature log with the Arduino Uno | reichelt.com","isPartOf":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#primaryimage"},"image":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#primaryimage"},"thumbnailUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","datePublished":"2017-10-20T09:48:22+00:00","dateModified":"2023-04-17T11:23:55+00:00","description":"Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno.|Continuing from our last \u2018How-To\u2019, now we show you how to code a temperature log with the Arduino Uno.","breadcrumb":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.reichelt.com\/magazin\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#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\/en\/projects\/how-to-code-a-temperature-log-with-the-arduino-uno\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.reichelt.com\/magazin\/en\/"},{"@type":"ListItem","position":2,"name":"How to code a temperature log with the Arduino Uno"}]},{"@type":"WebSite","@id":"https:\/\/www.reichelt.com\/magazin\/en\/#website","url":"https:\/\/www.reichelt.com\/magazin\/en\/","name":"reichelt Magazin","description":"Das Technik Magazin","publisher":{"@id":"https:\/\/www.reichelt.com\/magazin\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.reichelt.com\/magazin\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.reichelt.com\/magazin\/en\/#organization","name":"reichelt Magazin","url":"https:\/\/www.reichelt.com\/magazin\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.reichelt.com\/magazin\/en\/#\/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\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.reichelt.com\/magazin\/en\/#\/schema\/person\/54edf009d7730dbe36a83d3e9948e08f","name":"admin","sameAs":["https:\/\/magazin.reichelt.de\/magazin"]}]}},"_links":{"self":[{"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/posts\/39288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/comments?post=39288"}],"version-history":[{"count":6,"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/posts\/39288\/revisions"}],"predecessor-version":[{"id":77116,"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/posts\/39288\/revisions\/77116"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/media\/39092"}],"wp:attachment":[{"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/media?parent=39288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/categories?post=39288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/en\/wp-json\/wp\/v2\/tags?post=39288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}