{"id":254,"date":"2015-04-12T15:52:26","date_gmt":"2015-04-12T15:52:26","guid":{"rendered":"http:\/\/www.donluc.com\/?p=254"},"modified":"2015-04-12T15:52:53","modified_gmt":"2015-04-12T15:52:53","slug":"project-3-lcd-shield-mk5","status":"publish","type":"post","link":"https:\/\/www.donluc.com\/?p=254","title":{"rendered":"Project #3 &#8211; LCD Shield &#8211; Mk5"},"content":{"rendered":"<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.01.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.01.jpg\" alt=\"LCD Shield Mk5.01\" width=\"640\" height=\"480\" class=\"alignnone size-full wp-image-255\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.01.jpg 640w, https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.01-300x225.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.02.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.02.jpg\" alt=\"LCD Shield Mk5.02\" width=\"640\" height=\"480\" class=\"alignnone size-full wp-image-256\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.02.jpg 640w, https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.02-300x225.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.03.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.03.jpg\" alt=\"LCD Shield Mk5.03\" width=\"640\" height=\"480\" class=\"alignnone size-full wp-image-257\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.03.jpg 640w, https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.03-300x225.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.04.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.04.jpg\" alt=\"LCD Shield Mk5.04\" width=\"640\" height=\"480\" class=\"alignnone size-full wp-image-258\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.04.jpg 640w, https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.04-300x225.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.05.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.05.jpg\" alt=\"LCD Shield Mk5.05\" width=\"640\" height=\"480\" class=\"alignnone size-full wp-image-259\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.05.jpg 640w, https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.05-300x225.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.06.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.06.jpg\" alt=\"LCD Shield Mk5.06\" width=\"640\" height=\"480\" class=\"alignnone size-full wp-image-260\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.06.jpg 640w, https:\/\/www.donluc.com\/wp-content\/uploads\/2015\/04\/LCDShieldMk5.06-300x225.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>LCDShieldMk5.1.ino<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"default\" data-enlighter-title=\"\">\r\n\/\/ ***** Don Luc *****\r\n\/\/ Software Version Information\r\n\/\/ 5.1\r\n\r\n\/\/ include the library code:\r\n#include &lt;Wire.h&gt;\r\n#include &lt;Adafruit_MCP23017.h&gt;\r\n#include &lt;Adafruit_RGBLCDShield.h&gt;\r\n#include &lt;SPI.h&gt;\r\n#include &lt;RTClib.h&gt;\r\n#include &lt;RTC_DS3231.h&gt;\r\n#include &lt;OneWire.h&gt; \r\n\r\nRTC_DS3231 RTC;\r\n\r\n#define SQW_FREQ DS3231_SQW_FREQ_1024     \/\/0b00001000   1024Hz\r\n\r\nAdafruit_RGBLCDShield RGBLCDShield = Adafruit_RGBLCDShield();\r\n\r\n\/\/ These #defines make it easy to set the backlight color\r\n#define OFF 0x0\r\n#define RED 0x1\r\n#define YELLOW 0x3\r\n#define GREEN 0x2\r\n#define TEAL 0x6\r\n#define BLUE 0x4\r\n#define VIOLET 0x5\r\n#define WHITE 0x7\r\n\r\nint yy = 0;\r\nuint8_t momentaryButton = 0;\r\n\r\n\/\/ Chorno\r\nboolean isChorno = true;\r\nboolean isChor = false;\r\nchar datastr[100];\r\nint zz = 0;\r\n\/\/ LDR (light dependent resistor)\r\nint LDR_Pin = A0;\r\nint LDRReading = 0;\r\nString LDR = &quot;&quot;;\r\n\/\/ Temperature chip i\/o\r\nint DS18S20_Pin = 2; \/\/DS18S20 Signal pin on digital 2\r\nOneWire ds(DS18S20_Pin);  \/\/ on digital pin 2\r\nfloat temperature = 0;\r\nString tempZ = &quot;&quot;;\r\n\/\/ Potentiometer\r\nint potPin = A2;    \/\/ select the input pin for the potentiometer\r\nint ledPin = 4;   \/\/ select the pin for the LED\r\nboolean isVal = false;\r\nint potPot = 0;\r\nString cap = &quot;&quot;;\r\n\r\nvoid loop() {\r\n\r\n  RGBLCDShield.clear();\r\n    \r\n  \/\/ ChronoDot\r\n  \/\/ set the cursor to column 0, line 1\r\n  RGBLCDShield.setCursor(0, 1);\r\n  timeChrono();\r\n  \/\/ LDR (light dependent resistor)\r\n  timeLDR();\r\n  \/\/ Temperature chip i\/o\r\n  temperatu();\r\n  \/\/ Potentiometer\r\n  getPotentio();\r\n    \r\n  momentaryButton = RGBLCDShield.readButtons();\r\n\r\n  \/\/ set the cursor to column 0, line 0\r\n  RGBLCDShield.setCursor(0,0);\r\n\r\n  switch ( yy ) {\r\n    case 1:\r\n      \/\/ LDR (light dependent resistor)\r\n      isLDR();\r\n      break;\r\n    case 2:\r\n      \/\/ Temperature chip i\/o\r\n      isTe();\r\n      break;\r\n    case 3:\r\n      \/\/ Potentiometer\r\n      isCap();\r\n      break;\r\n    case 4:\r\n      \/\/ Yellow\r\n      RGBLCDShield.print(&quot;YELLOW - RIGHT&quot;);\r\n      break;\r\n    case 5:\r\n      \/\/ OFF\r\n      RGBLCDShield.print(&quot;OFF&quot;);\r\n      break;\r\n    default: \r\n      yy = 0;\r\n      RGBLCDShield.print(&quot;Don Luc!!!&quot;);\r\n   }\r\n   \r\n  if ( momentaryButton ) {\r\n    \r\n    if ( momentaryButton &amp; BUTTON_UP ) {\r\n      isChorno = true;\r\n      yy = 1;\r\n      \/\/ LDR (light dependent resistor)\r\n      RGBLCDShield.setBacklight(GREEN);\r\n    }\r\n    \r\n    if ( momentaryButton &amp; BUTTON_DOWN ) {\r\n      isChorno = true;\r\n      yy = 2;\r\n      \/\/ Temperature chip i\/o\r\n      RGBLCDShield.setBacklight(RED);\r\n    }\r\n    \r\n    if ( momentaryButton &amp; BUTTON_LEFT ) {\r\n      isChorno = true;\r\n      yy =3;\r\n      \/\/ Potentiometer\r\n      RGBLCDShield.setBacklight(BLUE);\r\n    }\r\n    \r\n    if ( momentaryButton &amp; BUTTON_RIGHT ) {\r\n      isChorno = true;\r\n      yy = 4;\r\n      \/\/RGBLCDShield.print(&quot;YELLOW - RIGHT&quot;);\r\n      RGBLCDShield.setBacklight(YELLOW);\r\n    }\r\n    \r\n    if ( momentaryButton &amp; BUTTON_SELECT ) {\r\n      isChorno = false;\r\n      yy = 5;\r\n      \/\/RGBLCDShield.print(&quot;OFF&quot;);\r\n      RGBLCDShield.setBacklight(OFF);\r\n    }\r\n    \r\n  }\r\n  \r\n  delay(5000);\r\n  \r\n}\r\n<\/pre>\n<p>setup.ino<\/p>\n<pre class=\"\">\r\nvoid setup() {    \r\n   \r\n  \/\/ set up the LCD's number of columns and rows: \r\n  RGBLCDShield.begin(16, 2);\r\n  RGBLCDShield.setBacklight(VIOLET);\r\n  \r\n  \/\/ ChronoDot\r\n  setupChrono();\r\n  \r\n  \/\/ Pot\r\n  pinMode(ledPin, OUTPUT);\r\n    \r\n}\r\n<\/pre>\n<p>ChronoDot.ino<\/p>\n<pre class=\"\">\r\nvoid setupChrono() {\r\n\r\n  RTC.begin();\r\n  \r\n  DateTime now = RTC.now();\r\n  DateTime compiled = DateTime(__DATE__, __TIME__);\r\n  RTC.getControlRegisterData( datastr[0] );  \r\n   \r\n}\r\n\r\nvoid timeChrono() {\r\n \r\n    DateTime now = RTC.now();\r\n    DateTime isNow (now.unixtime() + 5572 * 86400L + 26980);\r\n\r\n    if ( isChorno == true )\r\n    {\r\n      if ( isChor == false ) \r\n        {          \r\n          isChor = true;\r\n          RGBLCDShield.print(isNow.year(), DEC);\r\n          RGBLCDShield.print('\/');\r\n          RGBLCDShield.print(isNow.month(), DEC);\r\n          RGBLCDShield.print('\/');\r\n          RGBLCDShield.print(isNow.day(), DEC);\r\n          RGBLCDShield.print(' ');\r\n          RGBLCDShield.print(' ');\r\n        }\r\n        else if ( isChor == true )\r\n        {\r\n          isChor = false;\r\n          RGBLCDShield.print(isNow.hour(), DEC);\r\n          RGBLCDShield.print(':');\r\n          RGBLCDShield.print(isNow.minute(), DEC);\r\n          RGBLCDShield.print(':');\r\n          RGBLCDShield.print(isNow.second(), DEC);\r\n          RGBLCDShield.print(' ');\r\n          RGBLCDShield.print(' ');\r\n        }\r\n    }\r\n    \r\n}\r\n<\/pre>\n<p>getLDR.ino<\/p>\n<pre class=\"\">\r\nvoid timeLDR() {\r\n  \r\n  \/\/ LDR\r\n  LDRReading = analogRead(LDR_Pin);\r\n \r\n}\r\n\r\nvoid isLDR() {\r\n  \r\n  LDR = \"LDR: \";\r\n  LDR.concat(LDRReading); \r\n  \/\/ LDR (light dependent resistor)\r\n  RGBLCDShield.print( LDR ); \r\n  \r\n} \r\n<\/pre>\n<p>getPot.ino<\/p>\n<pre class=\"\">\r\nvoid getPotentio() {\r\n  \r\n    if ( isVal == false ) \r\n    {\r\n       isVal = true;\r\n       digitalWrite(ledPin, HIGH);  \/\/ turn the ledPin on\r\n    }\r\n    else if ( isVal == true )\r\n    {\r\n       isVal = false;\r\n       digitalWrite(ledPin, LOW);  \/\/ turn the ledPin off\r\n    }       \r\n    potPot = analogRead(potPin);    \/\/ read the value from the sensor\r\n  \r\n}\r\n\r\nvoid isCap(){\r\n  \r\n    cap = \"Pot: \";\r\n    cap.concat(potPot);\r\n    RGBLCDShield.print( cap );\r\n\r\n}\r\n<\/pre>\n<p>getTemperature.ino<\/p>\n<pre class=\"\">\r\nfloat getTemp() {\r\n  \r\n  \/\/returns the temperature from one DS18S20 in DEG Celsius\r\n  byte data[12];\r\n  byte addr[8];\r\n\r\n  if ( !ds.search(addr)) {\r\n      \/\/no more sensors on chain, reset search\r\n      ds.reset_search();\r\n      return -1001;\r\n  }\r\n\r\n  if ( OneWire::crc8( addr, 7) != addr[7]) {\r\n      return -1002;\r\n  }\r\n\r\n  if ( addr[0] != 0x10 && addr[0] != 0x28) {\r\n      return -1003;\r\n  }\r\n\r\n  ds.reset();\r\n  ds.select(addr);\r\n  ds.write(0x44,1); \/\/ start conversion, with parasite power on at the end\r\n\r\n  byte present = ds.reset();\r\n  ds.select(addr);    \r\n  ds.write(0xBE); \/\/ Read Scratchpad\r\n\r\n  \r\n  for (int i = 0; i < 9; i++) { \/\/ we need 9 bytes\r\n    data[i] = ds.read();\r\n  }\r\n  \r\n  ds.reset_search();\r\n  \r\n  byte MSB = data[1];\r\n  byte LSB = data[0];\r\n\r\n  float tempRead = ((MSB << 8) | LSB); \/\/using two's compliment\r\n  float TemperatureSum = tempRead \/ 16;\r\n  \r\n  return TemperatureSum;\r\n\r\n}\r\n\r\nvoid temperatu(){\r\n  \r\n  temperature = getTemp();\r\n \r\n}\r\n\r\nvoid isTe() {\r\n  \r\n  tempZ = \"Temp: \";\r\n  tempZ.concat(temperature);\r\n  tempZ.concat(\"C\");\r\n  RGBLCDShield.print( tempZ );\r\n  \r\n}\r\n<\/pre>\n<p><strong>Don Luc<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>LCDShieldMk5.1.ino \/\/ ***** Don Luc ***** \/\/ Software Version Information \/\/ 5.1 \/\/ include the library code: #include &lt;Wire.h&gt; #include &lt;Adafruit_MCP23017.h&gt; #include &lt;Adafruit_RGBLCDShield.h&gt; #include &lt;SPI.h&gt; #include &lt;RTClib.h&gt; #include &lt;RTC_DS3231.h&gt; #include &lt;OneWire.h&gt; RTC_DS3231 RTC; #define SQW_FREQ DS3231_SQW_FREQ_1024 \/\/0b00001000 1024Hz Adafruit_RGBLCDShield RGBLCDShield = Adafruit_RGBLCDShield(); \/\/ These #defines make it easy to set the backlight color #define OFF &#8230; <a title=\"Project #3 &#8211; LCD Shield &#8211; Mk5\" class=\"read-more\" href=\"https:\/\/www.donluc.com\/?p=254\" aria-label=\"Read more about Project #3 &#8211; LCD Shield &#8211; Mk5\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,50,5,10],"tags":[],"class_list":["post-254","post","type-post","status-publish","format-standard","hentry","category-lcdshield","category-arduino","category-microcontrollers","category-projects"],"_links":{"self":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=254"}],"version-history":[{"count":2,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/254\/revisions"}],"predecessor-version":[{"id":4466,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/254\/revisions\/4466"}],"wp:attachment":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}