Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2014
2,639
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.50 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <SPI.h>
  3. #include <RTClib.h>
  4. #include <Adafruit_GFX.h> // Core graphics library
  5. #include <Adafruit_ST7735.h> // Hardware-specific library
  6.  
  7.  
  8. RTC_DS3231 RTC;
  9.  
  10. //COLOR DEFINITIONS
  11. #define BLACK 0x0000
  12. #define BLUE 0x001F
  13. #define RED 0xF800
  14. #define GREEN 0x07E0
  15. #define CYAN 0x07FF
  16. #define MAGENTA 0xF81F
  17. #define YELLOW 0xFE0
  18. #define WHITE 0xFFFF
  19. #define GREY 0x8410
  20.  
  21. // ARRAY TO REPLACE SINGLE DIGITS WITH LEADING ZEROES
  22. char* leadingZero[]={
  23. "00", "01", "02", "03", "04", "05", "06", "07", "08", "09"};
  24.  
  25. // VARIABLES TO HOLD COLOR VALUES
  26. int redValue = 0;
  27. int grnValue = 0;
  28. int bluValue = 0;
  29.  
  30. //TFT SHIELD STUFF
  31. //Use these pins for the shield!
  32. #define sclk 13
  33. #define mosi 11
  34. #define cs 10
  35. #define dc 8
  36. #define rst 0 // you can also connect this to the Arduino reset
  37.  
  38.  
  39. // MORE SHIELD STUFF
  40. #if defined(__SAM3X8E__)
  41. #undef __FlashStringHelper::F(string_literal)
  42. #define F(string_literal) string_literal
  43. #endif
  44. int position = 0;
  45. int dim = 255;
  46. int bright = 0;
  47. long previousMillis = 0;
  48. int interval = 1000;
  49.  
  50. //THIS LINE MAY VARY - SEE EXAMPLE SKETCHES FROM SHIELD
  51. Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
  52.  
  53. //DEFINITIONS FOR THE JOYSTICK
  54. #define Neutral 0
  55. #define Press 1
  56. #define Up 2
  57. #define Down 3
  58. #define Right 4
  59. #define Left 5
  60.  
  61.  
  62. void setup() {
  63. Wire.begin();
  64. RTC.begin();
  65. if (! RTC.isrunning()) {
  66. Serial.println("RTC is NOT running!");
  67. // following line sets the RTC to the date & time this sketch was compiled
  68. RTC.adjust(DateTime(__DATE__, __TIME__));
  69. }
  70. DateTime now = RTC.now();
  71.  
  72. // MANAUALLY ENTER TIME WITH THIS LINE, COMMENT OUT IF USING RTC
  73. //setTime(16, 56, 0, 16, 9, 2014);
  74.  
  75. // MORE TFT STUFF - SEE EXAMPLE SKETCHES
  76. tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab
  77.  
  78. //ROTATES DISPLAY 90 DEGREES FOR LANDSCAPE VIEW
  79. tft.setRotation(3);
  80.  
  81. // analogWrite(5, 255); //jump "LITE" and Digital pin 5 to dim
  82.  
  83. // BLANKS OUT THE SCREEN AND DRAWS THE BLACK BAR
  84. tft.fillScreen(WHITE);
  85. tft.fillRect(0, 50, 160, 30, BLACK);
  86. }
  87.  
  88. void loop(){
  89. //PERFORMS A TASK EVERY SECOND WITHOUT USING DELAY
  90. unsigned long currentMillis = millis();
  91. if(currentMillis - previousMillis > interval) {
  92. previousMillis = currentMillis;
  93.  
  94. // UPDATES THE SCREEN
  95. drawTime();
  96.  
  97. }
  98. }
  99.  
  100.  
  101. void drawTime(){
  102.  
  103. // SETS THE VARIABLE t TO THE CURRENT TIME - PREVENTS OVERLAPPING
  104. DateTime now = RTC.now();
  105.  
  106. //MAPS THE TIME TO CORRESPOND TO COLOR VALUES
  107. // CONVERTS 24 HOURS TO 0 - 255 STEPS, ETC.
  108. redValue = map(now.hour(), 0, 23, 0, 255);
  109. grnValue = map(now.minute(), 0, 59, 0, 255);
  110. bluValue = map(now.second(), 0, 59, 0, 255);
  111.  
  112. //SETS THE TEXT COLOR AND TEXT BACKGROUND COLOR
  113. //USES THE GFX FUNCTION TO CONVERT THREE INTEGER VALUES TO A HEX COLOR VALUE
  114. // REPLACE TFT.COLOR565 WITH WHITE OR ANOTHER COLOR IF YOU WANT A STATIC TIME COLOR
  115. tft.setTextColor((tft.Color565(redValue, grnValue, bluValue)), BLACK);
  116. // YOU HAVE TO SET THE TEXT SIZE BEFORE YOU START PRINTING
  117. tft.setTextSize(3);
  118.  
  119. //DRAWS RECTANGLES ABOVE AND BELOW THE BLACK BAR IN THE SAME COLOR
  120. tft.fillRect(0, 0, 160, 50, (tft.Color565(redValue, grnValue, bluValue)));
  121. tft.fillRect(0, 80, 160, 50, (tft.Color565(redValue, grnValue, bluValue)));
  122.  
  123. // LINES UP THE CURSOR AND DRAWS THE HOUR
  124. // IF THE HOUR IS LESS THAN 10 IT CALLS A VALUE FROM THE LEADING ZERO ARRAY
  125. tft.setCursor(13, 54);
  126. if (now.hour() >= 0 && now.hour() < 10) {
  127. tft.print(leadingZero[now.hour()]);
  128. }
  129. else{
  130. tft.print(now.hour());
  131. }
  132. // INSERTS THE FIRST DIVIDING COLON
  133. tft.setCursor(48, 54);
  134. tft.print(":");
  135.  
  136. // MOVES THE CURSOR AND DRAWS THE MINUTES, LEADING ZERO, ETC
  137. tft.setCursor(65, 54);
  138. if (now.minute() >= 0 && now.minute() < 10){
  139. tft.print(leadingZero[now.minute()]);
  140. }
  141. else{
  142. tft.print(now.minute());
  143. }
  144.  
  145. // INSERTS THE SECOND COLON
  146. tft.setCursor(99, 54);
  147. tft.print(":");
  148.  
  149. // MOVES THE CURSOR AND DRAWS THE SECONDS, LEADING ZERO, ETC
  150. tft.setCursor(115, 54);
  151. if (now.second() >= 0 && now.second() <10){
  152. tft.print(leadingZero[now.second()]);
  153. }
  154. else{
  155. tft.print(now.second());
  156. }
  157.  
  158. }
  159.  
  160. // Check the joystick position
  161. int CheckJoystick()
  162. {
  163. int joystickState = analogRead(3);
  164.  
  165. if (joystickState < 50) return Left;
  166. if (joystickState < 150) return Down;
  167. if (joystickState < 250) return Press;
  168. if (joystickState < 500) return Right;
  169. if (joystickState < 650) return Up;
  170. return Neutral;
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement