Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- in#include <LiquidCrystal.h>;
- #include "IRremote.h"
- //RC
- int receiver = 13; // Signal Pin of IR receiver to Arduino Digital Pin 13
- IRrecv irrecv(receiver); // create instance of 'irrecv'
- decode_results results; // create instance of 'decode_results'
- //LCD
- const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
- LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
- //insane variables for the fake coroutine
- int powerStatus = 0;
- bool isHIGH = false;
- unsigned long M_HIGH_Counter = 0;
- unsigned long M_LOW_Counter = 0;
- int L_HIGH_Time = 1200;
- int L_LOW_Time = 6800;
- int M_HIGH_Time = 2500;
- int M_LOW_Time = 5500;
- int H_HIGH_Time = 4000;
- int H_LOW_Time = 4000;
- //RELAY
- int RELAY1 = 10;
- void setup() {
- //
- //RELAY
- pinMode(RELAY1, OUTPUT);
- //LCD
- lcd.begin(16, 2);
- //RC
- Serial.begin(9600);
- Serial.println("IR Receiver Button Decode");
- irrecv.enableIRIn(); // Start the receiver
- }
- void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
- {
- switch (powerStatus) {
- case 1: {
- switchOnOff(L_HIGH_Time, L_LOW_Time);
- } break;
- case 2: {
- switchOnOff(M_HIGH_Time, M_LOW_Time);
- } break;
- case 3: {
- switchOnOff(H_HIGH_Time, H_LOW_Time);
- } break;
- default: lcd.clear(); lcd.setCursor(0, 0); lcd.print("nope");
- }
- if (irrecv.decode(&results)) // have we received an IR signal?
- {
- translateIR();
- irrecv.resume(); // receive the next value
- }
- }/* --(end main loop )-- */
- /*-----( Functions )-----*/
- void switchOnOff(int highTime, int lowTime ) {
- //RELAY ON && TIME ON IS UP
- if (digitalRead(RELAY1) == HIGH && (millis() - M_HIGH_Counter >= highTime))
- {
- Serial.println("on");
- digitalWrite(RELAY1, LOW);
- M_HIGH_Counter = 0;
- M_LOW_Counter = millis();
- }
- //RELAY OFF && TIMF OFF IS UP
- if (digitalRead(RELAY1) == LOW && (millis() - M_LOW_Counter >= lowTime))
- {
- digitalWrite(RELAY1, HIGH);
- Serial.println("off");
- M_LOW_Counter = 0;
- M_HIGH_Counter = millis();
- }
- }
- void changeValueBy(int mode, int ammount) {
- if(mode ==1){
- switch (powerStatus)
- { 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;
- 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;
- 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;
- default: break;
- }}
- else
- {
- switch (powerStatus)
- { 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;
- 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;
- 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;
- default: break;
- }}
- }
- void translateIR() // takes action based on IR code received
- {
- switch (results.value)
- {
- case 0xFF629D: Serial.println(" FORWARD"); break;
- case 0xFF22DD: Serial.println(" LEFT"); break;
- case 0xFF02FD: Serial.println(" -OK-"); break;
- case 0xFFC23D: Serial.println(" RIGHT"); break;
- case 0xFFA857: Serial.println(" REVERSE"); break;
- case 0xFF6897: Serial.println(" 1"); break;
- case 0xFF9867: Serial.println(" 2"); break;
- case 0xFFB04F: Serial.println(" 3"); break;
- case 0xFF30CF: Serial.println(" 4"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("LOW"); powerStatus = 1; break;
- case 0xFF18E7: Serial.println(" 5"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("MEDIUM"); powerStatus = 2; break;
- case 0xFF7A85: Serial.println(" 6"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("HIGH"); powerStatus = 3; break;
- case 0xFF10EF: Serial.println(" 7"); changeValueBy(1, 100); break;
- case 0xFF38C7: Serial.println(" 8"); changeValueBy(0, 100); break;
- case 0xFF5AA5: Serial.println(" 9"); break;
- case 0xFF42BD: Serial.println(" *"); changeValueBy(1, -100); break;
- case 0xFF4AB5: Serial.println(" 0"); changeValueBy(0, -100); break;
- case 0xFF52AD: Serial.println(" #"); break;
- case 0xFFFFFFFF: Serial.println(" REPEAT"); break;
- default:
- Serial.println(" other button ");
- }// End Case
- //delay(500); // Do not get immediate repeat
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement