Advertisement
Guest User

Module intérieur

a guest
Sep 18th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Module intérieur du projet Take Out The Trash (TOTT)
  2. // Reçoit les données du module extérieur et les traite
  3. // pour indiquer avec des témoins lumineux quand sortir la poubelle
  4.  
  5. #include <SPI.h>
  6. #include <RH_RF69.h>
  7. #include <Regexp.h>
  8.  
  9. /************ Radio Setup ***************/
  10.  
  11. #define RF69_FREQ 915.0
  12. #define RFM69_INT     3
  13. #define RFM69_CS      4
  14. #define RFM69_RST     2
  15. RH_RF69 rf69(RFM69_CS, RFM69_INT); // Singleton instance of the radio driver
  16.  
  17. /********* LED Display Setup ***********/
  18. #define LED5 5
  19. #define LED6 6
  20. #define LED7 7
  21. #define GREEN_TRASH 8
  22. #define YELLOW_TRASH 9
  23. int greenDay[7] = {0, 1, 0, 0, 0, 1, 0};
  24. int yellowDay[7] = {0, 0, 0, 1, 0, 0, 0};
  25.  
  26. void setup()
  27. {
  28.   Serial.begin(9600);
  29.   pinMode(LED5, OUTPUT);
  30.   pinMode(LED6, OUTPUT);
  31.   pinMode(LED7, OUTPUT);
  32.   pinMode(YELLOW_TRASH, OUTPUT);
  33.   pinMode(GREEN_TRASH, OUTPUT);
  34.   pinMode(RFM69_RST, OUTPUT);
  35.   digitalWrite(RFM69_RST, HIGH); delay(10);
  36.   digitalWrite(RFM69_RST, LOW); delay(10);
  37.  
  38.   Serial.println(F("*** Module intérieur Take Out The Trash ***"));
  39.  
  40.   if (!rf69.init()) {
  41.     Serial.println(F("Impossible d'initialiser le module ..."));
  42.     while (1);
  43.   }
  44.   if (!rf69.setFrequency(RF69_FREQ)) {
  45.     Serial.println(F("Impossible d'établir la bonne fréquence"));
  46.   }
  47.  
  48.   rf69.setTxPower(20, true);
  49.  
  50.   uint8_t key[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
  51.                     0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
  52.   rf69.setEncryptionKey(key);
  53.  
  54.   Serial.println(F("Le module s'est parfaitement initialisé"));
  55.   Serial.print(F("Module réglé @"));  Serial.print((int)RF69_FREQ);  Serial.println(F(" MHz"));
  56.   Serial.println(F("\n************************************\n"));
  57. }
  58.  
  59. MatchState ms;
  60.  
  61. void loop() {
  62.  if (rf69.available()) {
  63.     uint8_t buf[RH_RF69_MAX_MESSAGE_LEN];
  64.     uint8_t len = sizeof(buf);
  65.     if (rf69.recv(buf, &len))
  66.     {
  67.       if (!len) return;
  68.       buf[len] = 0;
  69.       Serial.print(F("Reçu : "));
  70.       Serial.println((char*)buf);
  71.      
  72.       ms.Target ((char*)buf);
  73.       char result = ms.Match ("[0-6]+[0-1]+[0-1]", 0);
  74.  
  75.       if (result == REGEXP_MATCHED)
  76.       {
  77.         uint8_t data[] = "Message reçu !";
  78.         rf69.send(data, sizeof(data));
  79.         rf69.waitPacketSent();
  80.         Serial.println(F("Réponse envoyée"));
  81.       }
  82.       else if (result == REGEXP_NOMATCH)
  83.       {
  84.         Serial.println(F("Erreur dans la réception"));
  85.       }
  86.       else
  87.       {
  88.         Serial.println(F("Erreur"));
  89.       }
  90.     }
  91.   }
  92.   /*String test = "510";
  93.   ledOn(test);
  94.   delay(20000);
  95.   ledOff();
  96.   delay(10000);*/
  97. }
  98.  
  99. void ledOn(String led)
  100. {
  101.   int led0 = int(led[0])-48;
  102.   int led1 = int(led[1])-48;
  103.   int led2 = int(led[2])-48;
  104.  
  105.   switch (led0)
  106.   {
  107.     case 0:
  108.       digitalWrite(LED5, LOW);
  109.       digitalWrite(LED6, LOW);
  110.       digitalWrite(LED7, HIGH);
  111.       Serial.println("Dimanche");
  112.       break;
  113.     case 1:
  114.       digitalWrite(LED5, LOW);
  115.       digitalWrite(LED6, HIGH);
  116.       digitalWrite(LED7, LOW);
  117.       Serial.println("Lundi");
  118.       break;
  119.     case 2:
  120.       digitalWrite(LED5, LOW);
  121.       digitalWrite(LED6, HIGH);
  122.       digitalWrite(LED7, HIGH);
  123.       Serial.println("Mardi");
  124.       break;
  125.     case 3:
  126.       digitalWrite(LED5, HIGH);
  127.       digitalWrite(LED6, LOW);
  128.       digitalWrite(LED7, LOW);
  129.       Serial.println("Mercredi");
  130.       break;
  131.     case 4:
  132.       digitalWrite(LED5, HIGH);
  133.       digitalWrite(LED6, LOW);
  134.       digitalWrite(LED7, HIGH);
  135.       Serial.println("Jeudi");
  136.       break;
  137.     case 5:
  138.       digitalWrite(LED5, HIGH);
  139.       digitalWrite(LED6, HIGH);
  140.       digitalWrite(LED7, LOW);
  141.       Serial.println("Vendredi");
  142.       break;
  143.     case 6:
  144.       digitalWrite(LED5, HIGH);
  145.       digitalWrite(LED6, HIGH);
  146.       digitalWrite(LED7, HIGH);
  147.       Serial.println("Samedi");
  148.       break;
  149.     default:
  150.     Serial.println(F("tu sais pas coder"));
  151.     break;
  152.   }
  153.  
  154.   if ((led1 == 1) && (greenDay[led0] == 1))
  155.   {
  156.     digitalWrite(GREEN_TRASH, HIGH);
  157.     Serial.println("green trash a sortir");
  158.   }
  159.   else
  160.   {
  161.     digitalWrite(GREEN_TRASH, LOW);
  162.     Serial.println("green trash déjà sortie");
  163.   }
  164.  
  165.   if ((led2 == 1) && (greenDay[led0] == 1))
  166.   {
  167.     digitalWrite(YELLOW_TRASH, HIGH);
  168.     Serial.println("yellow trash a sortir");
  169.   }
  170.   else
  171.   {
  172.     digitalWrite(YELLOW_TRASH, LOW);
  173.     Serial.println("yellow déjà sortie");
  174.   }
  175. }
  176.  
  177. void ledOff()
  178. {
  179.   for (int i = 5; i < 10; i++) {
  180.     digitalWrite(i, LOW);
  181.   }
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement