Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <malloc.h>
- #include <stdlib.h>
- #include <stdio.h>
- #define CTE_DUE_SHIELD
- extern char _end;
- extern "C" char *sbrk(int i);
- char *ramstart = (char *)0x20070000;
- char *ramend = (char *)0x20088000;
- #include <Wire.h>
- #include <EasyTransferI2C_NL.h>
- #include <Time.h>
- #include <TimeLib.h>
- #include "Timezone.h"
- TimeChangeRule usEDT = {"EDT", Second, Sun, Mar, 2, -240}; //Eastern Daylight Time = UTC - 4 hours
- TimeChangeRule usEST = {"EST", First, Sun, Nov, 2, -300}; //Eastern Standard Time = UTC - 5 hours
- Timezone usET(usEDT, usEST);
- EasyTransferI2C_NL toESP;
- EasyTransferI2C_NL toDUE;
- #include <UTFT.h>
- //#include <UTFT_CTE.h>
- #include <UTFT_GHL.h>
- #include <UTouch.h>
- #include <UTFT_Geometry.h>
- #include <FastLED.h>
- #define NUM_LEDS 20
- #define DATA_PIN A7
- CRGB leds[NUM_LEDS]
- #include <Encoder.h>
- #include <Button.h>
- #define encoderA 12
- #define encoderB 11
- #define encoderSw 19
- #define encoderRed 8
- #define encoderBlue 9
- #define encoderGreen 10
- Button select(encoderSw, false, true, 20);
- Encoder navigation(encoderA, encoderB);
- #define ENCODER_USE_INTERRUPTS
- extern uint8_t Ubuntu[];
- extern uint8_t timeFont[];
- extern uint8_t arial_normal[];
- UTFT myGLCD(CTE70CPLD, 25, 26, 27, 28);
- UTouch myTouch(6, 5, 32, 3, 2);
- UTFT_GHL CTE_LCD(&myGLCD);
- UTFT_Geometry geo(&myGLCD);
- byte LCDpage;
- byte LCDpageActive;
- bool redraw;
- bool drawFlag;
- bool confirmed;
- byte timerArray[9][7];
- #define onMinutes 0
- #define onHours 1
- #define offMinutes 2
- #define offHours 3
- #define amPMon 4
- #define amPMoff 5
- #define hasBeenSet 6
- //Program Settings Screen
- bool SetColorFlag = 1;
- bool SetSpeedFlag = 1;
- bool SetDimFlag = 1;
- bool ColorInit = 1;
- bool SpeedInit = 1;
- bool DimInit = 1;
- int RGBred;
- int RGBblue;
- int RGBgreen;
- int ProgramSpeed;
- int ProgramDim;
- bool timerOnceOn = 1;
- bool timerOnceOff = 1;
- #define FLASH_CS_PIN 9
- int touchArray[2];
- #define xVal 0
- #define yVal 1
- byte touchDebounceTime = 250;
- unsigned int touchDebounce = 0;
- /*
- Reset 38
- WR 39
- RS 40
- CS 42
- SD_CS 41
- F_CS 43
- t_CS 45
- t_IRQ 46
- */
- unsigned int dayLightsSavings = 3600;
- byte currentTemp;
- char P0weather[25];
- unsigned int P0weatherIcon = 338;
- byte currentFeel;
- char windDirection[10];
- byte windSpeed;
- byte windGust;
- byte todayHigh;
- byte todayLow;
- char P1weather[25];
- unsigned int P1weatherIcon = 338;
- byte tomorrowLow;
- byte tomorrowHigh;
- char P2weather[25];
- unsigned int P2weatherIcon = 338;
- byte ledArray[9];
- #define zoneSelect 0
- #define program 1
- #define colorR 2
- #define colorG 3
- #define colorB 4
- #define value 5
- #define pSpeed 6
- #define isON 7
- #define setupFunction 8
- //screens
- #define zoneScreen 0
- #define catagoryScreen 1
- #define programScreen 2
- byte catagory = 0;
- byte HolidaySelection;
- struct Weather_Icons {
- const unsigned int chanceFlurries = 296;
- const unsigned int chanceRain = 294;
- const unsigned int chanceSleet = 273;
- const unsigned int chanceSnow = 296;
- const unsigned int chanceTstorms = 293;
- const unsigned int clearW = 287;
- const unsigned int cloudy = 281;
- const unsigned int flurries = 268;
- const unsigned int fog = 275;
- const unsigned int hazy = 274;
- const unsigned int mostlyCloudy = 283;
- const unsigned int mostlySunny = 289;
- const unsigned int nightChFlurries = 301;
- const unsigned int nightChRain = 300;
- const unsigned int nightChSleet = 273;
- const unsigned int nightChSnow = 301;
- const unsigned int nightChTstorms = 302;
- const unsigned int nightClear = 286;
- const unsigned int nightCloudy = 281;
- const unsigned int nightFlurry = 268;
- const unsigned int nightFog = 275;
- const unsigned int nightHazy = 276;
- const unsigned int nightMostlyCloudy = 282;
- const unsigned int nightPartlyCloudy = 284;
- const unsigned int nightRain = 295;
- const unsigned int nightSleet = 273;
- const unsigned int nightSnow = 271;
- const unsigned int nightTstorms = 272;
- const unsigned int unknown = 303;
- const unsigned int partlyCloudy = 285;
- const unsigned int partlySunny = 285;
- const unsigned int rain = 295;
- const unsigned int sleet = 273;
- const unsigned int snow = 271;
- const unsigned int tStorms = 290;
- } weatherIcons;
- struct RECEIVE_DATA_STRUCTURE {
- unsigned long unixTime;
- bool ESPreply;
- byte weatherArray[12];
- bool ledsOn[8];
- //byte switchDataReturn[3];
- //byte recieverDataReturn[3];
- };
- //give a name to the group of data
- RECEIVE_DATA_STRUCTURE toDUEData;
- struct SEND_DATA_STRUCTURE {
- byte espProgramArray[9];
- bool ledsOn[8];
- } __attribute__((packed));
- SEND_DATA_STRUCTURE toESPdata;
- //define slave i2c address
- #define I2C_SLAVE_ADDRESS 42
- void setup() {
- for(int i = 0; i < 9; i++){
- for(int j = 0; j < 7; j++){
- timerArray[i][j] = 0;
- }
- }
- LCDpageActive = 1;
- redraw = 1;
- toESPdata.espProgramArray[zoneSelect] = 9;
- myGLCD.InitLCD();
- myGLCD.clrScr();
- myGLCD.setColor(0, 255, 0);
- myGLCD.setBackColor(0, 0, 0);
- myGLCD.setFont(timeFont);
- myGLCD.print("Loading", 0, 0);
- CTE_LCD.SPI_Flash_init(52);
- myTouch.InitTouch();
- myTouch.setPrecision(PREC_HI);
- Serial.begin(115200);
- delay(500);
- Serial.println("Touscreen RX 0.9");
- Wire.begin(I2C_SLAVE_ADDRESS);
- // Wire.setClockStretchLimit(1500);
- Wire.setClock(5000L);
- Wire.onRequest(request);
- toDUE.begin(details(toDUEData), &Wire);
- toESP.begin(details(toESPdata), &Wire);
- //define handler function on receiving data
- Wire.onReceive(receive);
- pinMode(EncoderSw, INPUT);
- FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
- for(int i = 0; i < NUM_LEDS; i++){
- leds[i].setHSV{0, 0, 128);
- }
- FastLED.show();
- }
- void watchdogSetup()
- {
- watchdogEnable(2000);
- }
- void loop() {
- watchdogReset();
- //check and see if a data packet has come in.
- receiveandprint();
- if (drawFlag) {
- drawFlag = 0;
- drawScreen();
- }
- //handleTouches
- touchSense();
- if (millis() > 59999) {
- timerHandler();
- }
- /*char *heapend=sbrk(0);
- register char * stack_ptr asm ("sp");
- struct mallinfo mi=mallinfo();
- printf("\nDynamic ram used: %d\n",mi.uordblks);
- printf("Program static ram used %d\n",&_end - ramstart);
- printf("Stack ram used %d\n\n",ramend - stack_ptr);
- printf("My guess at free mem: %d\n",stack_ptr - heapend + mi.fordblks);
- */
- };
Advertisement
Add Comment
Please, Sign In to add comment