Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.54 KB | None | 0 0
  1. in#include <LiquidCrystal.h>;
  2. #include "IRremote.h"
  3.  
  4. //RC
  5. int receiver = 13; // Signal Pin of IR receiver to Arduino Digital Pin 13
  6. IRrecv irrecv(receiver);     // create instance of 'irrecv'
  7. decode_results results;      // create instance of 'decode_results'
  8.  
  9. //LCD
  10. const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
  11. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  12.  
  13. //insane variables for the fake coroutine
  14. int powerStatus = 0;
  15. bool isHIGH = false;
  16. unsigned long M_HIGH_Counter = 0;
  17.  
  18. unsigned long M_LOW_Counter = 0;
  19. int L_HIGH_Time = 1200;
  20. int L_LOW_Time = 6800;
  21.  
  22. int M_HIGH_Time = 2500;
  23. int M_LOW_Time = 5500;
  24.  
  25. int H_HIGH_Time = 4000;
  26. int H_LOW_Time = 4000;
  27.  
  28.  
  29. //RELAY
  30. int RELAY1 = 10;
  31.  
  32. void setup() {
  33.  
  34.   //
  35.   //RELAY
  36.   pinMode(RELAY1, OUTPUT);
  37.  
  38.   //LCD
  39.   lcd.begin(16, 2);
  40.  
  41.   //RC
  42.   Serial.begin(9600);
  43.   Serial.println("IR Receiver Button Decode");
  44.   irrecv.enableIRIn(); // Start the receiver
  45.  
  46. }
  47.  
  48. void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
  49. {
  50.  
  51.   switch (powerStatus) {
  52.     case 1: {
  53.         switchOnOff(L_HIGH_Time, L_LOW_Time);
  54.       } break;
  55.     case 2: {
  56.         switchOnOff(M_HIGH_Time, M_LOW_Time);
  57.       } break;
  58.     case 3: {
  59.         switchOnOff(H_HIGH_Time, H_LOW_Time);
  60.       } break;
  61.  
  62.     default: lcd.clear(); lcd.setCursor(0, 0); lcd.print("nope");
  63.  
  64.   }
  65.   if (irrecv.decode(&results)) // have we received an IR signal?
  66.  
  67.   {
  68.     translateIR();
  69.     irrecv.resume(); // receive the next value
  70.   }
  71. }/* --(end main loop )-- */
  72.  
  73. /*-----( Functions )-----*/
  74.  
  75. void switchOnOff(int highTime, int lowTime ) {
  76.  
  77.   //RELAY ON && TIME ON IS UP
  78.   if (digitalRead(RELAY1) == HIGH && (millis() - M_HIGH_Counter >= highTime))
  79.   {
  80.     Serial.println("on");
  81.     digitalWrite(RELAY1, LOW);
  82.     M_HIGH_Counter = 0;
  83.     M_LOW_Counter = millis();
  84.  
  85.   }
  86.   //RELAY OFF && TIMF OFF IS UP
  87.   if (digitalRead(RELAY1) == LOW && (millis() - M_LOW_Counter >= lowTime))
  88.   {
  89.     digitalWrite(RELAY1, HIGH);
  90.     Serial.println("off");
  91.     M_LOW_Counter = 0;
  92.     M_HIGH_Counter = millis();
  93.   }
  94.  
  95. }
  96.  
  97. void changeValueBy(int mode, int ammount) {
  98.   if(mode ==1){
  99.   switch (powerStatus)
  100.   { case 1 : L_HIGH_Time += ammount; lcd.clear(); lcd.setCursor(0, 0); lcd.print("L higTime " ); lcd.setCursor(0, 1); lcd.print(L_HIGH_Time); break;
  101.     case 2 : M_HIGH_Time += ammount; lcd.clear(); lcd.setCursor(0, 0); lcd.print("M higTime " ); lcd.setCursor(0, 1); lcd.print(M_HIGH_Time); break;
  102.     case 3 : H_HIGH_Time += ammount; lcd.clear(); lcd.setCursor(0, 0); lcd.print("H higTime " ); lcd.setCursor(0, 1); lcd.print(H_HIGH_Time); break;
  103.     default: break;
  104.   }}
  105.   else
  106.   {
  107.   switch (powerStatus)
  108.   { case 1 : L_LOW_Time += ammount; lcd.clear(); lcd.setCursor(0, 0); lcd.print("L lowTime "); lcd.setCursor(0, 1); lcd.print(L_LOW_Time); break;
  109.     case 2 : M_LOW_Time += ammount; lcd.clear(); lcd.setCursor(0, 0); lcd.print("M lowTime "); lcd.setCursor(0, 1); lcd.print(M_LOW_Time); break;
  110.     case 3 : H_LOW_Time += ammount; lcd.clear(); lcd.setCursor(0, 0); lcd.print("H lowTime "); lcd.setCursor(0, 1); lcd.print(H_LOW_Time); break;
  111.     default: break;
  112.   }}
  113. }
  114.  
  115. void translateIR() // takes action based on IR code received
  116. {
  117.   switch (results.value)
  118.   {
  119.  
  120.     case 0xFF629D: Serial.println(" FORWARD"); break;
  121.     case 0xFF22DD: Serial.println(" LEFT");    break;
  122.     case 0xFF02FD: Serial.println(" -OK-");    break;
  123.     case 0xFFC23D: Serial.println(" RIGHT");   break;
  124.     case 0xFFA857: Serial.println(" REVERSE"); break;
  125.     case 0xFF6897: Serial.println(" 1");    break;
  126.     case 0xFF9867: Serial.println(" 2");    break;
  127.     case 0xFFB04F: Serial.println(" 3");    break;
  128.     case 0xFF30CF: Serial.println(" 4");   lcd.clear(); lcd.setCursor(0, 0); lcd.print("LOW");    powerStatus = 1;  break;
  129.     case 0xFF18E7: Serial.println(" 5");   lcd.clear(); lcd.setCursor(0, 0); lcd.print("MEDIUM"); powerStatus = 2;  break;
  130.     case 0xFF7A85: Serial.println(" 6");   lcd.clear(); lcd.setCursor(0, 0); lcd.print("HIGH");   powerStatus = 3; break;
  131.     case 0xFF10EF: Serial.println(" 7"); changeValueBy(1, 100);   break;
  132.     case 0xFF38C7: Serial.println(" 8"); changeValueBy(0, 100);   break;
  133.     case 0xFF5AA5: Serial.println(" 9");      break;
  134.     case 0xFF42BD: Serial.println(" *"); changeValueBy(1, -100);     break;
  135.     case 0xFF4AB5: Serial.println(" 0");  changeValueBy(0, -100);  break;
  136.     case 0xFF52AD: Serial.println(" #");    break;
  137.     case 0xFFFFFFFF: Serial.println(" REPEAT"); break;
  138.  
  139.     default:
  140.       Serial.println(" other button   ");
  141.  
  142.   }// End Case
  143.  
  144.   //delay(500); // Do not get immediate repeat
  145.  
  146.  
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement