Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #include <Time.h>
- #include <Wire.h>
- #include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
- #include <LiquidCrystal.h>
- #include <SD.h>
- File myFile;
- // software serial #1: TX = digital pin 2, RX = digital pin 3
- SoftwareSerial portOne(2, 3);
- /* * LCD RS pin to digital pin 7
- * LCD Enable pin to digital pin 6
- * LCD D4 pin to digital pin 5
- * LCD D5 pin to digital pin 4
- * LCD D6 pin to digital pin 9
- * LCD D7 pin to digital pin 10
- * LCD R/W pin to ground
- BL+ ==== VDD
- SDA==== A4
- SCL===== A5*/
- LiquidCrystal lcd(7, 6, 5, 4, 9, 10);
- int intFailedTries=0;
- int incomingByte1;
- int incomingByte2;
- int incomingByte3;
- int incomingByte4;
- int buzzer = 15;
- void setup()
- {
- //
- Wire.begin();
- setSyncProvider(RTC.get);
- pinMode(buzzer, OUTPUT);
- pinMode(8, OUTPUT);
- //noTone();
- lcd.begin(20, 4);
- lcd.clear();
- lcd.setCursor(0, 1);
- if (!SD.begin(4)) {
- lcd.print("microSdnoCargado");
- }
- else{
- lcd.print("microSDcargado");}
- delay(2000);
- // Start the hardware serial port
- portOne.begin(57600);
- //portTwo.begin(9600);
- //lcd.setType(6);
- lcd.clear();
- lcd.setCursor(0, 1);
- lcd.print("S1=");
- lcd.setCursor(10, 1);
- lcd.print("S2=");
- lcd.setCursor(0, 2);
- // lcd.print("S3=");
- lcd.print("S3=");
- lcd.setCursor(10, 2);
- // lcd.print("S3=");
- lcd.print("S4=");
- //lcd.print("Hello, world!");
- //lcd.print("This LCD a 4x16 .");
- // Start each software serial port
- myFile = SD.open("datos.txt", FILE_WRITE);
- }
- void loop()
- {
- // By default, the last intialized port is listening.
- // when you want to listen on a port, explicitly select it:
- lectura();
- //lcd.cursor();
- digitalClockDisplay();
- alarma();
- printdigits();
- sd();
- delay(4000);
- }
- void alarma(){
- if(incomingByte1<166 || incomingByte2<166 || incomingByte3<166 || incomingByte4<166){
- tone(buzzer, 3000, 1000);
- lcd.setCursor(0, 3);
- lcd.print("P BAJA:");
- }
- else{
- digitalWrite(buzzer, LOW);
- lcd.setCursor(0, 3);
- lcd.print(" ");
- }
- if(incomingByte1<166){
- lcd.setCursor(7, 3);
- lcd.print("S1");
- }
- else{
- lcd.setCursor(7, 3);
- lcd.print(" ");
- }
- if(incomingByte2<166){
- lcd.setCursor(10, 3);
- lcd.print("S2");
- }
- else{
- lcd.setCursor(10, 3);
- lcd.print(" ");
- }
- if(incomingByte3<166){
- lcd.setCursor(13, 3);
- lcd.print("S3");
- }
- else{
- lcd.setCursor(13, 3);
- lcd.print(" ");
- }
- if(incomingByte4<166){
- lcd.setCursor(16, 3);
- lcd.print("S4");
- }
- else{
- lcd.setCursor(16, 3);
- lcd.print(" ");
- }
- }
- void printdigits(){
- lcd.setCursor(3, 1);
- printDigits2(incomingByte1);
- //lcd.print(incomingByte1,DEC);
- lcd.setCursor(13, 1);
- printDigits2(incomingByte2);
- lcd.setCursor(3, 2);
- printDigits2(incomingByte3);
- lcd.setCursor(13, 2);
- printDigits2(incomingByte4);
- }
- void sd(){
- if (myFile) {
- myFile.print(incomingByte1);
- myFile.print(" ");
- myFile.print(incomingByte2);
- myFile.print(" ");
- myFile.print(incomingByte3);
- myFile.print(" ");
- myFile.print(incomingByte4);
- myFile.print(" ");
- myFile.print(day(),DEC);
- myFile.print(" ");
- myFile.print(month(),DEC);
- myFile.print(" ");
- myFile.print(year(),DEC);
- myFile.print(" ");
- myFile.print(hour(),DEC);
- myFile.print(" ");
- myFile.print(minute());
- myFile.print(" ");
- myFile.print(second());
- }
- myFile.println();
- // close the file:
- myFile.close();
- }
- void lectura(){
- for (int i=0; i <= 3; i++){
- portOne.listen();
- portOne.print('A');
- if (portOne.available()>0){
- incomingByte1 = portOne.read();}
- //Serial.print("S1=");
- //Serial.print(incomingByte);
- // blank line to separate data from the two ports:
- delay(60);
- }
- delay(250);
- for (int i=0; i <= 3; i++){
- portOne.listen();
- portOne.print('B');
- if (portOne.available()>0){
- incomingByte2 = portOne.read();}
- //Serial.print("S1=");
- //Serial.print(incomingByte);
- // blank line to separate data from the two ports:
- delay(60);
- }
- delay(250);
- for (int i=0; i <= 3; i++){
- portOne.listen();
- portOne.print('C');
- if (portOne.available()>0){
- incomingByte3 = portOne.read();}
- //Serial.print("S1=");
- //Serial.print(incomingByte);
- // blank line to separate data from the two ports:
- delay(60);
- }
- delay(250);
- for (int i=0; i <= 3; i++){
- portOne.listen();
- portOne.print('D');
- if (portOne.available()>0){
- incomingByte4 = portOne.read();}
- //Serial.print("S1=");
- //Serial.print(incomingByte);
- // blank line to separate data from the two ports:
- delay(60);
- }
- delay(250);
- }
- byte bcdToDec(byte val) {
- // Convert binary coded decimal to normal decimal numbers
- return ( (val/16*10) + (val%16) );
- }
- void digitalClockDisplay(){
- // digital clock display of the time
- //char days[1],months[2],monthDays[1],years[2],hours[2],minutes[2],seconds[2];
- //int h,d,m,y,mi,se;
- lcd.setCursor(0, 0);
- //lcd.print(day(),DEC);
- if(day() < 10)
- lcd.print('0');
- lcd.print(day(),DEC);
- lcd.setCursor(2, 0);
- lcd.print("/");
- lcd.setCursor(3, 0);
- if(month() < 10)
- lcd.print('0');
- lcd.print(month(),DEC);
- //lcd.print(month(),DEC);
- lcd.setCursor(5, 0);
- lcd.print("/");
- lcd.setCursor(6, 0);
- lcd.print(year(),DEC);
- lcd.setCursor(10, 0);
- lcd.print(" ");
- lcd.setCursor(12, 0);
- lcd.print(hour(),DEC);
- lcd.setCursor(14, 0);
- printDigits(minute());
- lcd.setCursor(17, 0);
- //printDigits(second());
- //lcd.print(" ");
- //lcd.setCursor(1, 21);
- //lcd.print(day(),DEC);
- //if(day() < 10)
- //lcd.print('0');
- //lcd.print(day(),DEC);
- }
- // utility function for digital clock display: prints preceding colon and
- // leading 0.
- //
- void printDigits(int digits){
- lcd.print(":");
- if(digits < 10)
- lcd.print('0');
- lcd.print(digits,DEC);
- }
- void printDigits2(int digits2){
- if(digits2 < 100){
- lcd.print(' ');}
- if(digits2 < 10){
- lcd.print(' ');}
- lcd.print(digits2,DEC);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement