Advertisement
Szerelo

433 RCSwitc.h demo

Sep 24th, 2020 (edited)
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.98 KB | None | 0 0
  1. /*
  2.   Simple example for receiving
  3.  
  4.   https://github.com/sui77/rc-switch/
  5. */
  6.  
  7. #define gomb1 A0
  8. #define gomb2 A1
  9.  
  10. #include <RCSwitch.h>
  11. #include <LiquidCrystal_I2C.h>
  12. #include <EEPROM.h>
  13.  
  14. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
  15. RCSwitch mySwitch = RCSwitch();
  16.  
  17. long value;
  18. byte ECount;   // EEPROM tárhely hossza
  19. byte CCount=0;   // kódok száma
  20. long codes[150];
  21. bool save=false;
  22. byte tmp;
  23.  
  24. void setup() {
  25.   pinMode(gomb1,INPUT_PULLUP);
  26.   pinMode(gomb2,INPUT_PULLUP);
  27.   pinMode(13,OUTPUT);
  28.   Serial.begin(115200);
  29.   Serial.println("Start ...");
  30.   Serial.println("Gomb1 - Save mode");
  31.   Serial.println("Gomb2 - EEPROM törlés, (kód darabszám nullázás)");
  32.   mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
  33.   lcd.begin(16,2);   // lcd init
  34.   lcd.clear();
  35.   lcd.print("   Hello");
  36.   ECount=EEPROM.read(0);
  37.   CCount=ECount/4;
  38.   Serial.print("CCount: ");
  39.   Serial.println(CCount);
  40.   if (CCount>=1) {  // ha nem üres a tárhely
  41.     for (byte i=1;i<=CCount;i++) {
  42.       Serial.print(i);
  43.       Serial.print(". ");
  44.       value=EEPROM.read((i-1)*4+4)*16777216+EEPROM.read((i-1)*4+3)*65536+EEPROM.read((i-1)*4+2)*256+EEPROM.read((i-1)*4+1);
  45.       codes[i]=value;
  46.       Serial.println(value);
  47.     }
  48.   }
  49.   lcd.setCursor(0,1);
  50.   lcd.print(ECount);
  51.   //digitalWrite(13,HIGH);
  52. }
  53.  
  54. void loop() {
  55. //  digitalWrite(13,!digitalRead(gomb2));
  56.   if (digitalRead(gomb2)==LOW) {
  57.     EEPROM.write(0,1);
  58.     CCount=0;
  59.   }
  60.   if (digitalRead(gomb1)==LOW) {
  61.     Serial.println("Save mode ON");    
  62.     save=true;
  63.     delay(500);
  64.   }
  65.   if (mySwitch.available()) {
  66.     value=mySwitch.getReceivedValue();
  67.     Serial.print("Received ");
  68. //    lcd.clear();
  69. //    lcd.print(value);
  70.     //Serial.print( mySwitch.getReceivedValue() );
  71.     Serial.print(value);
  72.     Serial.print(" / ");
  73.     Serial.print( mySwitch.getReceivedBitlength() );
  74.     Serial.print("bit. Delay:");
  75.     Serial.print( mySwitch.getReceivedDelay() );
  76.     Serial.print(" Protocol: ");
  77. //    lcd.setCursor(0,1);
  78. //    lcd.print(mySwitch.getReceivedProtocol());
  79.     Serial.print( mySwitch.getReceivedProtocol() );
  80.     //tmp=value & 0xFF;
  81.     Serial.print(" Byte: ");
  82.     Serial.print(value & 0xFF);
  83.     Serial.print(" - ");
  84.     Serial.print((value >> 8) & 0xFF);
  85.     Serial.print(" - ");
  86.     Serial.print((value >> 16) & 0xFF);
  87.     Serial.print(" - ");
  88.     Serial.println((value >> 24) & 0xFF);
  89.  
  90.     mySwitch.resetAvailable();
  91.     switch (value) {
  92.       case 11864792:
  93.         kiir(1);
  94.         break;
  95.       case 11864788:
  96.         kiir(2);
  97.         break;
  98.       case 11864796:
  99.         kiir(3);
  100.         break;
  101.       case 11864786:
  102.         kiir(4);
  103.         break;
  104.       case 11864794:
  105.         kiir(5);
  106.         break;
  107.       case 11864790:
  108.         kiir(6);
  109.         break;
  110.       case 11864798:
  111.         kiir(7);
  112.         break;
  113.       case 11864785:
  114.         kiir(8);
  115.         break;
  116.       case 11864793:
  117.         kiir(9);
  118.         break;
  119.       case 11864789:
  120.         kiir(10);
  121.         break;
  122.       default:
  123.         kiir(0);
  124.         break;
  125.     }
  126.    
  127.     lcd.setCursor(9,1);
  128.     lcd.print("       ");
  129.     for (byte i=1;i<=CCount;i++) {
  130.       if (value==codes[i]) {
  131.         lcd.setCursor(9,1);
  132.         lcd.print(i);
  133.         lcd.print(". pos");
  134.       }
  135.     }
  136.  
  137.   }
  138. }
  139.  
  140. void kiir(byte code) {
  141.   tone(A2,600,200);
  142.  
  143.   lcd.setCursor(0,1);
  144.   if (code<=9) lcd.print(" ");
  145.   lcd.print(code);
  146.   lcd.print(". gomb");
  147.   tone(A2,600,200);
  148.   if (save==true) {
  149.     save=false;
  150.     Serial.print("ASD ");
  151.     Serial.println(value);
  152.     tmp=value & 0xFF;
  153.     EEPROM.write(ECount,tmp);
  154.     tmp=(value >> 8) & 0xFF;
  155.     EEPROM.write(ECount+1,tmp);
  156.     tmp=(value >> 16) & 0xFF;
  157.     EEPROM.write(ECount+2,tmp);
  158.     tmp=(value >> 24) & 0xFF;
  159.     EEPROM.write(ECount+3,tmp);
  160.     ECount=ECount+4;
  161.     EEPROM.write(0,ECount);
  162.     codes[CCount]=value;
  163.     Serial.print("CCount: ");
  164.     Serial.println(CCount);
  165.     CCount++;
  166.   }
  167.  
  168. }
  169.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement