LCDShieldMk5.1.ino
// ***** Don Luc *****
// Software Version Information
// 5.1
// include the library code:
#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>
#include <SPI.h>
#include <RTClib.h>
#include <RTC_DS3231.h>
#include <OneWire.h>
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 0x0
#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7
int yy = 0;
uint8_t momentaryButton = 0;
// Chorno
boolean isChorno = true;
boolean isChor = false;
char datastr[100];
int zz = 0;
// LDR (light dependent resistor)
int LDR_Pin = A0;
int LDRReading = 0;
String LDR = "";
// Temperature chip i/o
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
OneWire ds(DS18S20_Pin); // on digital pin 2
float temperature = 0;
String tempZ = "";
// Potentiometer
int potPin = A2; // select the input pin for the potentiometer
int ledPin = 4; // select the pin for the LED
boolean isVal = false;
int potPot = 0;
String cap = "";
void loop() {
RGBLCDShield.clear();
// ChronoDot
// set the cursor to column 0, line 1
RGBLCDShield.setCursor(0, 1);
timeChrono();
// LDR (light dependent resistor)
timeLDR();
// Temperature chip i/o
temperatu();
// Potentiometer
getPotentio();
momentaryButton = RGBLCDShield.readButtons();
// set the cursor to column 0, line 0
RGBLCDShield.setCursor(0,0);
switch ( yy ) {
case 1:
// LDR (light dependent resistor)
isLDR();
break;
case 2:
// Temperature chip i/o
isTe();
break;
case 3:
// Potentiometer
isCap();
break;
case 4:
// Yellow
RGBLCDShield.print("YELLOW - RIGHT");
break;
case 5:
// OFF
RGBLCDShield.print("OFF");
break;
default:
yy = 0;
RGBLCDShield.print("Don Luc!!!");
}
if ( momentaryButton ) {
if ( momentaryButton & BUTTON_UP ) {
isChorno = true;
yy = 1;
// LDR (light dependent resistor)
RGBLCDShield.setBacklight(GREEN);
}
if ( momentaryButton & BUTTON_DOWN ) {
isChorno = true;
yy = 2;
// Temperature chip i/o
RGBLCDShield.setBacklight(RED);
}
if ( momentaryButton & BUTTON_LEFT ) {
isChorno = true;
yy =3;
// Potentiometer
RGBLCDShield.setBacklight(BLUE);
}
if ( momentaryButton & BUTTON_RIGHT ) {
isChorno = true;
yy = 4;
//RGBLCDShield.print("YELLOW - RIGHT");
RGBLCDShield.setBacklight(YELLOW);
}
if ( momentaryButton & BUTTON_SELECT ) {
isChorno = false;
yy = 5;
//RGBLCDShield.print("OFF");
RGBLCDShield.setBacklight(OFF);
}
}
delay(5000);
}
setup.ino
void setup() {
// set up the LCD's number of columns and rows:
RGBLCDShield.begin(16, 2);
RGBLCDShield.setBacklight(VIOLET);
// ChronoDot
setupChrono();
// Pot
pinMode(ledPin, OUTPUT);
}
ChronoDot.ino
void setupChrono() {
RTC.begin();
DateTime now = RTC.now();
DateTime compiled = DateTime(__DATE__, __TIME__);
RTC.getControlRegisterData( datastr[0] );
}
void timeChrono() {
DateTime now = RTC.now();
DateTime isNow (now.unixtime() + 5572 * 86400L + 26980);
if ( isChorno == true )
{
if ( isChor == false )
{
isChor = true;
RGBLCDShield.print(isNow.year(), DEC);
RGBLCDShield.print('/');
RGBLCDShield.print(isNow.month(), DEC);
RGBLCDShield.print('/');
RGBLCDShield.print(isNow.day(), DEC);
RGBLCDShield.print(' ');
RGBLCDShield.print(' ');
}
else if ( isChor == true )
{
isChor = false;
RGBLCDShield.print(isNow.hour(), DEC);
RGBLCDShield.print(':');
RGBLCDShield.print(isNow.minute(), DEC);
RGBLCDShield.print(':');
RGBLCDShield.print(isNow.second(), DEC);
RGBLCDShield.print(' ');
RGBLCDShield.print(' ');
}
}
}
getLDR.ino
void timeLDR() {
// LDR
LDRReading = analogRead(LDR_Pin);
}
void isLDR() {
LDR = "LDR: ";
LDR.concat(LDRReading);
// LDR (light dependent resistor)
RGBLCDShield.print( LDR );
}
getPot.ino
void getPotentio() {
if ( isVal == false )
{
isVal = true;
digitalWrite(ledPin, HIGH); // turn the ledPin on
}
else if ( isVal == true )
{
isVal = false;
digitalWrite(ledPin, LOW); // turn the ledPin off
}
potPot = analogRead(potPin); // read the value from the sensor
}
void isCap(){
cap = "Pot: ";
cap.concat(potPot);
RGBLCDShield.print( cap );
}
getTemperature.ino
float getTemp() {
//returns the temperature from one DS18S20 in DEG Celsius
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1001;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
return -1002;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
return -1003;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for (int i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB); //using two's compliment
float TemperatureSum = tempRead / 16;
return TemperatureSum;
}
void temperatu(){
temperature = getTemp();
}
void isTe() {
tempZ = "Temp: ";
tempZ.concat(temperature);
tempZ.concat("C");
RGBLCDShield.print( tempZ );
}
Don Luc





