Advertisement
Guest User

Untitled

a guest
Feb 17th, 2014
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.19 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2. #include <Time.h>
  3. #include <Wire.h>
  4. #include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
  5. #include <LiquidCrystal.h>
  6. #include <SD.h>
  7.  
  8. File myFile;
  9.  
  10. // software serial #1: TX = digital pin 2, RX = digital pin 3
  11. SoftwareSerial portOne(2, 3);
  12. /* * LCD RS pin to digital pin 7
  13. * LCD Enable pin to digital pin 6
  14. * LCD D4 pin to digital pin 5
  15. * LCD D5 pin to digital pin 4
  16. * LCD D6 pin to digital pin 9
  17. * LCD D7 pin to digital pin 10
  18. * LCD R/W pin to ground
  19. BL+ ==== VDD
  20. SDA==== A4
  21. SCL===== A5*/
  22.  
  23.  
  24. LiquidCrystal lcd(7, 6, 5, 4, 9, 10);
  25. int intFailedTries=0;
  26. int incomingByte1;
  27. int incomingByte2;
  28. int incomingByte3;
  29. int incomingByte4;
  30. int buzzer = 15;
  31.  
  32. void setup()
  33. {
  34. //
  35.  
  36. Wire.begin();
  37. setSyncProvider(RTC.get);
  38. pinMode(buzzer, OUTPUT);
  39. pinMode(8, OUTPUT);
  40. //noTone();
  41. lcd.begin(20, 4);
  42. lcd.clear();
  43. lcd.setCursor(0, 1);
  44. if (!SD.begin(4)) {
  45. lcd.print("microSdnoCargado");
  46.  
  47. }
  48. else{
  49. lcd.print("microSDcargado");}
  50. delay(2000);
  51. // Start the hardware serial port
  52. portOne.begin(57600);
  53. //portTwo.begin(9600);
  54. //lcd.setType(6);
  55. lcd.clear();
  56. lcd.setCursor(0, 1);
  57. lcd.print("S1=");
  58. lcd.setCursor(10, 1);
  59. lcd.print("S2=");
  60. lcd.setCursor(0, 2);
  61. // lcd.print("S3=");
  62. lcd.print("S3=");
  63. lcd.setCursor(10, 2);
  64. // lcd.print("S3=");
  65. lcd.print("S4=");
  66. //lcd.print("Hello, world!");
  67. //lcd.print("This LCD a 4x16 .");
  68. // Start each software serial port
  69. myFile = SD.open("datos.txt", FILE_WRITE);
  70.  
  71.  
  72. }
  73.  
  74. void loop()
  75. {
  76. // By default, the last intialized port is listening.
  77. // when you want to listen on a port, explicitly select it:
  78. lectura();
  79. //lcd.cursor();
  80. digitalClockDisplay();
  81. alarma();
  82. printdigits();
  83. sd();
  84. delay(4000);
  85. }
  86. void alarma(){
  87. if(incomingByte1<166 || incomingByte2<166 || incomingByte3<166 || incomingByte4<166){
  88. tone(buzzer, 3000, 1000);
  89. lcd.setCursor(0, 3);
  90. lcd.print("P BAJA:");
  91. }
  92. else{
  93. digitalWrite(buzzer, LOW);
  94. lcd.setCursor(0, 3);
  95. lcd.print(" ");
  96. }
  97. if(incomingByte1<166){
  98. lcd.setCursor(7, 3);
  99. lcd.print("S1");
  100. }
  101. else{
  102. lcd.setCursor(7, 3);
  103. lcd.print(" ");
  104. }
  105. if(incomingByte2<166){
  106. lcd.setCursor(10, 3);
  107. lcd.print("S2");
  108. }
  109. else{
  110. lcd.setCursor(10, 3);
  111. lcd.print(" ");
  112. }
  113. if(incomingByte3<166){
  114. lcd.setCursor(13, 3);
  115. lcd.print("S3");
  116. }
  117. else{
  118. lcd.setCursor(13, 3);
  119. lcd.print(" ");
  120. }
  121. if(incomingByte4<166){
  122. lcd.setCursor(16, 3);
  123. lcd.print("S4");
  124. }
  125. else{
  126. lcd.setCursor(16, 3);
  127. lcd.print(" ");
  128. }
  129.  
  130. }
  131. void printdigits(){
  132. lcd.setCursor(3, 1);
  133. printDigits2(incomingByte1);
  134. //lcd.print(incomingByte1,DEC);
  135. lcd.setCursor(13, 1);
  136. printDigits2(incomingByte2);
  137. lcd.setCursor(3, 2);
  138. printDigits2(incomingByte3);
  139. lcd.setCursor(13, 2);
  140. printDigits2(incomingByte4);
  141. }
  142.  
  143. void sd(){
  144. if (myFile) {
  145. myFile.print(incomingByte1);
  146. myFile.print(" ");
  147. myFile.print(incomingByte2);
  148. myFile.print(" ");
  149. myFile.print(incomingByte3);
  150. myFile.print(" ");
  151. myFile.print(incomingByte4);
  152. myFile.print(" ");
  153. myFile.print(day(),DEC);
  154. myFile.print(" ");
  155. myFile.print(month(),DEC);
  156. myFile.print(" ");
  157. myFile.print(year(),DEC);
  158. myFile.print(" ");
  159. myFile.print(hour(),DEC);
  160. myFile.print(" ");
  161. myFile.print(minute());
  162. myFile.print(" ");
  163. myFile.print(second());
  164. }
  165. myFile.println();
  166. // close the file:
  167. myFile.close();
  168. }
  169.  
  170. void lectura(){
  171. for (int i=0; i <= 3; i++){
  172. portOne.listen();
  173. portOne.print('A');
  174. if (portOne.available()>0){
  175. incomingByte1 = portOne.read();}
  176. //Serial.print("S1=");
  177. //Serial.print(incomingByte);
  178. // blank line to separate data from the two ports:
  179. delay(60);
  180. }
  181. delay(250);
  182. for (int i=0; i <= 3; i++){
  183. portOne.listen();
  184. portOne.print('B');
  185. if (portOne.available()>0){
  186. incomingByte2 = portOne.read();}
  187. //Serial.print("S1=");
  188. //Serial.print(incomingByte);
  189. // blank line to separate data from the two ports:
  190. delay(60);
  191. }
  192. delay(250);
  193. for (int i=0; i <= 3; i++){
  194. portOne.listen();
  195. portOne.print('C');
  196. if (portOne.available()>0){
  197. incomingByte3 = portOne.read();}
  198. //Serial.print("S1=");
  199. //Serial.print(incomingByte);
  200. // blank line to separate data from the two ports:
  201. delay(60);
  202. }
  203. delay(250);
  204. for (int i=0; i <= 3; i++){
  205. portOne.listen();
  206. portOne.print('D');
  207. if (portOne.available()>0){
  208. incomingByte4 = portOne.read();}
  209. //Serial.print("S1=");
  210. //Serial.print(incomingByte);
  211. // blank line to separate data from the two ports:
  212. delay(60);
  213. }
  214. delay(250);
  215. }
  216.  
  217. byte bcdToDec(byte val) {
  218. // Convert binary coded decimal to normal decimal numbers
  219. return ( (val/16*10) + (val%16) );
  220. }
  221.  
  222.  
  223. void digitalClockDisplay(){
  224. // digital clock display of the time
  225. //char days[1],months[2],monthDays[1],years[2],hours[2],minutes[2],seconds[2];
  226. //int h,d,m,y,mi,se;
  227. lcd.setCursor(0, 0);
  228. //lcd.print(day(),DEC);
  229. if(day() < 10)
  230. lcd.print('0');
  231. lcd.print(day(),DEC);
  232. lcd.setCursor(2, 0);
  233. lcd.print("/");
  234. lcd.setCursor(3, 0);
  235. if(month() < 10)
  236. lcd.print('0');
  237. lcd.print(month(),DEC);
  238. //lcd.print(month(),DEC);
  239. lcd.setCursor(5, 0);
  240. lcd.print("/");
  241. lcd.setCursor(6, 0);
  242. lcd.print(year(),DEC);
  243. lcd.setCursor(10, 0);
  244. lcd.print(" ");
  245. lcd.setCursor(12, 0);
  246. lcd.print(hour(),DEC);
  247. lcd.setCursor(14, 0);
  248. printDigits(minute());
  249. lcd.setCursor(17, 0);
  250. //printDigits(second());
  251. //lcd.print(" ");
  252.  
  253. //lcd.setCursor(1, 21);
  254. //lcd.print(day(),DEC);
  255. //if(day() < 10)
  256. //lcd.print('0');
  257. //lcd.print(day(),DEC);
  258.  
  259. }
  260.  
  261. // utility function for digital clock display: prints preceding colon and
  262. // leading 0.
  263. //
  264. void printDigits(int digits){
  265. lcd.print(":");
  266. if(digits < 10)
  267. lcd.print('0');
  268. lcd.print(digits,DEC);
  269. }
  270. void printDigits2(int digits2){
  271. if(digits2 < 100){
  272. lcd.print(' ');}
  273. if(digits2 < 10){
  274. lcd.print(' ');}
  275. lcd.print(digits2,DEC);
  276.  
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement