Advertisement
fernandezekiel

Untitled

Jan 12th, 2013
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.07 KB | None | 0 0
  1. #include <string.h>
  2. #include "TimerOne.h"
  3. char k;
  4. char lastk;
  5. char *readings;
  6. char command[20];
  7. int timeout = 0;
  8. int timeout2 = 0;
  9. int messageMarker = 3;
  10. // next set are for sending the sms
  11. int hall = 0;
  12. int lasthall = 0;
  13. int total = 0;
  14. int fiftyms = 0;
  15. int fiftymstosend = 600;
  16. int timesToSend = 1;        // Numbers of SMS to send
  17. int count = 0;
  18. int valvestatus = 1;
  19.  // number of combinations of carriage return and line feed
  20.  
  21. void setup()
  22. {
  23.   pinMode(13, OUTPUT);
  24.   pinMode(12, OUTPUT);
  25.   Serial.begin(9600);
  26.  
  27.  
  28.   //Serial.println(".");
  29.  
  30.   // next are for sending data
  31.   Timer1.initialize(50000);  // 50 miliseconds
  32.   Timer1.pwm(9, 512); // IMPORTANT
  33.   Timer1.attachInterrupt(callback);
  34.   Serial.println("AT+CMGR=1");
  35.   delay(1000);
  36.  
  37.   Serial.println("AT+CMGD=1,4");
  38.   delay(1000);
  39.   for (int i=0;i<2;i++){
  40.     delay(5000);                        
  41.   }
  42.  
  43.    Serial.println("AT+CMGF=1");
  44.  
  45. }
  46.  
  47. void callback()
  48. {
  49.   fiftyms++;
  50.  
  51.   hall = analogRead(A0);
  52.   if(hall>512 && lasthall<512)
  53.   {
  54.     total++;
  55.   }
  56.   lasthall = hall;
  57. }
  58. void loop()
  59. {
  60.   /* next are for sending data
  61.  
  62.   */
  63.  
  64.   startloop:
  65.   count=0;
  66.   if(fiftyms >= fiftymstosend)
  67.   {
  68.   while (count < timesToSend){
  69.     delay(1500);
  70.     Serial.print("AT+CMGS=");               // send the SMS the number
  71.     Serial.print(34,BYTE);                  // send the " char
  72.     Serial.print("09109627081");              // send the number change ********* by the actual number
  73.     Serial.println(34,BYTE);                // send the " char
  74.     delay(1500);
  75.     Serial.print("r ");
  76.     Serial.print(total);     // the SMS body
  77.     Serial.print(" ");
  78.     Serial.print(valvestatus);
  79.     delay(500);
  80.     Serial.print(0x1A,BYTE);                // end of message command 1A (hex)
  81.      
  82.     delay(5000);        
  83.  
  84.     count++;    
  85.   }
  86.   fiftyms = 0;
  87.   total=0;  
  88.  }
  89.   //Serial.println(".");
  90.   int gotTheWord = 0;
  91.  
  92.   if(Serial.available())
  93.   {
  94.     //Serial.println("+");
  95.     int comindex = 0;
  96.     int numchar = 0;
  97.     int enters=0;
  98.     int del = 0;
  99.     while(Serial.available()>0)
  100.     {
  101.      //Serial.println("x");
  102.       k = Serial.read(), BYTE;
  103.      
  104.      
  105.      if(k=='C')
  106.       {
  107.        
  108.         k= Serial.read(), BYTE;
  109.         if(k=='M')
  110.         {
  111.           k = Serial.read(), BYTE;
  112.           if(k=='G')
  113.           {
  114.             k= Serial.read(), BYTE;
  115.             if(k=='R')
  116.             {
  117.               //Serial.println("c.m.g.r");
  118.              
  119.               del=1;
  120.             }
  121.           }
  122.          
  123.           else if(k=='T')
  124.           {
  125.             k = Serial.read(), BYTE;
  126.            
  127.             if(k=='I')
  128.             {
  129.               //Serial.flush();
  130.               Serial.println("---------------NEWMSG");
  131.               Serial.end();
  132.               delay(50);
  133.               Serial.begin(9600);
  134.               delay(50);
  135.               Serial.println("AT+CMGR=1");
  136.              
  137.               messageMarker=4;
  138.               del = 0;
  139.               enters = 0;
  140.               comindex = 0;
  141.               timeout=0;
  142.               timeout2=0;
  143.               goto startloop;
  144.              
  145.             }
  146.           }
  147.         }
  148.       }
  149.        
  150.      
  151.      
  152.      
  153.       //Serial.print(k);
  154.       if(lastk==13 && k==10)
  155.       {
  156.         enters++;
  157.       }
  158.       lastk = k;
  159.      
  160.      
  161.      
  162.       if(enters==messageMarker)//pangatlong combo o pangapat, mejo magulo eh
  163.       {
  164.         if (k == 10 || k == 13)
  165.         {
  166.           // bakit kaya hindi gumagana ung not equal? :\
  167.           Serial.print("");
  168.         }
  169.        
  170.         else{
  171.           if(k=='N')
  172.           {
  173.             valvestatus = 1;
  174.             digitalWrite(13,HIGH);
  175.             digitalWrite(12,HIGH);
  176.           }
  177.           if(k=='F')
  178.           {
  179.             valvestatus = 0;
  180.             digitalWrite(13,LOW);
  181.               digitalWrite(12, LOW);
  182.           }
  183.            command[comindex] = k;
  184.            comindex++;
  185.        
  186.         //command[comindex] = '\0';
  187.         //Serial.print(k);
  188.        
  189.         Serial.print(k);
  190.         }
  191.        
  192.       }
  193.       if(enters > messageMarker && del == 1)
  194.       {
  195.         //Serial.flush();
  196.         delay(100);
  197.         Serial.print("<");
  198.         Serial.print(enters);
  199.         Serial.print(":::");
  200.         Serial.print(messageMarker);
  201.         Serial.print(">");
  202.         Serial.println("AT+CMGD=1,4");
  203.         Serial.println(command);
  204.         String commstring = (String)command;
  205.         if(commstring.equals("ON"))
  206.         {
  207.           valvestatus = 1;
  208.           digitalWrite(12,HIGH);
  209.           digitalWrite(13,HIGH);
  210.         }
  211.         if(commstring.equals("OFF"))
  212.         {
  213.           valvestatus = 1;
  214.           digitalWrite(13,LOW);
  215.           digitalWrite(12,LOW);
  216.         }
  217.          
  218.         Serial.flush();
  219.         gotTheWord = 1;
  220.        
  221.       }      
  222.  
  223.       delay(10);
  224.       //goto startloop;
  225.     }
  226.    
  227.   }/* needed
  228.   else
  229.   {
  230.     delay(50);
  231.     timeout++;
  232.     if(timeout==10)
  233.     {
  234.       timeout=0;
  235.      
  236.       Serial.println("AT+CMGR=1");
  237.     }
  238.   }*/
  239.   //Serial.flush();
  240.  
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement