Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*******************************************************
  2. Dil 6 - Infra dálkový ovladač - rozšířený
  3. Tento program testuje INFRA přijímač a dálkový ovladač KEYES
  4. úprava © Aleš Müller, Březen 2014,
  5. Verze 2
  6. ********************************************************/
  7.  
  8. //použité knihovny
  9. #include "IRremote.h"
  10. #include
  11.  
  12. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  //piny pro displej
  13. int receiver = 19; // pin 1 na IR přijímači na Arduino digital pin 19 (Arduino MEGA), pro UNO musíte upravit.
  14.  
  15. int sekundy  = 0; // řádek, kde se mají vypisovat sekundy
  16. int tlacitka = 1; // řádek, kde se mají vypisovat tlacitka
  17.  
  18. IRrecv irrecv(receiver);           // vytvoříme instanci 'irrecv'
  19. decode_results results;            // vytvoříme instanci 'decode_results'
  20.  
  21. void setup()
  22. {
  23.   Serial.begin(9600);
  24.   Serial.println("www.santy.cz");
  25.   Serial.println("Dil 6 - Infra cidlo dalkovy ovladac");  
  26.   irrecv.enableIRIn(); // Start přijímače
  27.  
  28.    lcd.begin(16, 2);              // start knihovny pro LCD
  29.    lcd.setCursor(0,0);            // sloupec 0 , řádek 0
  30.    lcd.print("  www.santy.cz  "); // jednoduchý výpis na LCD
  31.    lcd.setCursor(0,1);            // sloupec 0 , řádek 1
  32.    lcd.print(" Infra + 8xrele ");
  33.    delay(5000);                   // pauza 5 sec
  34.    lcd.clear();                   // vymažeme displej
  35.  
  36.   pinMode(23, OUTPUT);  //relé číslo jedna, připojeno na pin 23
  37.   pinMode(25, OUTPUT);  //a analogicky dále
  38.   pinMode(27, OUTPUT);  
  39.   pinMode(29, OUTPUT);  
  40.   pinMode(31, OUTPUT);  
  41.   pinMode(33, OUTPUT);  
  42.   pinMode(35, OUTPUT);  
  43.   pinMode(37, OUTPUT);  
  44. }
  45.  
  46.  
  47. void loop()
  48. {
  49.   lcd.setCursor(0,sekundy);            // sloupec 0 , řádek
  50.   lcd.print("Od startu - ");
  51.   lcd.print(millis()/1000);
  52.   lcd.setCursor(0,tlacitka);            // sloupec 0 , řádek
  53.   lcd.print(" stisknete neco ");
  54.  
  55.   if (irrecv.decode(&results)) // přijmul přijímač nějaký IR signál?
  56.  
  57.   {
  58. //    Serial.println(results.value, HEX);  // odkomentujte, chcete li vidět přímo přijatý signál, vhodné pro neznámé vysílače, TV apod.
  59.     translateIR();
  60.     irrecv.resume(); // a přijímáme další hodnoty
  61.   }  
  62. }
  63.  
  64.  
  65.  
  66. /*-----( Deklarace uživatelských funkcí )-----*/
  67. void translateIR()
  68. // popis pro KEYES dálkový ovladač - IR kódy
  69. {
  70.   switch(results.value)
  71.   {
  72.   case 0xFF629D: Serial.println(" NAHORU"); break;
  73.   case 0xFF22DD: Serial.println(" LEVA");    break;
  74.   case 0xFF02FD: Serial.println(" -OK-");  prepniLCD();  break; //když tohle stisknuto voláme proceduru "prepniLCD"
  75.   case 0xFFC23D: Serial.println(" PRAVA");   break;
  76.   case 0xFFA857: Serial.println(" DOLU"); break;
  77.   case 0xFF6897: Serial.println(" 1");  prepniRele(23);    break;
  78.   case 0xFF9867: Serial.println(" 2");  prepniRele(25);    break;
  79.   case 0xFFB04F: Serial.println(" 3");  prepniRele(27);    break;
  80.   case 0xFF30CF: Serial.println(" 4");  prepniRele(29);    break;
  81.   case 0xFF18E7: Serial.println(" 5");  prepniRele(31);    break;
  82.   case 0xFF7A85: Serial.println(" 6");  prepniRele(33);    break;
  83.   case 0xFF10EF: Serial.println(" 7");  prepniRele(35);    break;
  84.   case 0xFF38C7: Serial.println(" 8");  prepniRele(37);    break;
  85.   case 0xFF5AA5: Serial.println(" 9");  VsechnaRele(true);  break;
  86.   case 0xFF42BD: Serial.println(" * (HVEZDA)");    break;
  87.   case 0xFF4AB5: Serial.println(" 0");  VsechnaRele(false);  break;
  88.   case 0xFF52AD: Serial.println(" # (KRIZEK)");    break;
  89.   case 0xFFFFFFFF: Serial.println(" OPAKOVANI PREDCHOZIHO ");break;  
  90.   default:
  91.     Serial.println(" nezname tlacitko   ");
  92.   }
  93.   delay(500); // NEDÁVEJTE MENŠÍ PAUZU !!
  94. }
  95.  
  96. void prepniLCD () {
  97.   if(sekundy == 0){ //pokud je radek pro sekundy 0, změníme to na opačně
  98.     sekundy  = 1;
  99.     tlacitka = 0;
  100.     lcd.clear();                   // vymažeme displej
  101.   }else{
  102.     sekundy  = 0;
  103.     tlacitka = 1;
  104.     lcd.clear();                   // vymažeme displej
  105.   }  
  106. }
  107.  
  108. void prepniRele (int Cislo) { // přepni relé na pinu, který posíláme v proměnné Cislo
  109.   if(digitalRead(Cislo)){
  110.     digitalWrite(Cislo, LOW);
  111.   }else{
  112.     digitalWrite(Cislo, HIGH);
  113.   }  
  114. }
  115.  
  116. void VsechnaRele (boolean STAV) {  //dle potreby vypneme anebo zapneme všechna relé
  117.   for (int i=23; i <= 37; i = i + 2){    
  118.       if(STAV) digitalWrite(i, LOW);
  119.       if(!STAV) digitalWrite(i, HIGH);
  120.       delay(10);
  121.  }
  122. }
  123.  
  124. /* ( THE END ) */