mirror of
https://github.com/KevinMidboe/Arduino.git
synced 2026-01-31 05:15:39 +00:00
Init commit with many years of arduino sketches and projects. I dont know if the esp8266 includes much, but there are also libraries. I hope they dont have crazy automatic versioning through the Arduino IDE.
This commit is contained in:
92
Projects/IR_LightSwitch/IR_LightSwitch.ino
Executable file
92
Projects/IR_LightSwitch/IR_LightSwitch.ino
Executable file
@@ -0,0 +1,92 @@
|
||||
#include <IRremote.h>
|
||||
#include <Servo.h>
|
||||
|
||||
Servo myservo;
|
||||
int pos = 0;
|
||||
int RECV_PIN = 11;
|
||||
IRrecv irrecv(RECV_PIN);
|
||||
decode_results results;
|
||||
unsigned long CurrentValue = 0;
|
||||
unsigned long StoredCode = 0;
|
||||
const int buttonPin = 6; // the number of the pushbutton pin
|
||||
const int ledPin = 4; // the number of the LED pin
|
||||
const int outputPin = 3; // the number of the output LED pin
|
||||
const int relayPin = 2; // the number of the relay pin
|
||||
int buttonState = 0; // variable for reading the pushbutton status
|
||||
int RecordState = 0; //is the reciever in record mode
|
||||
int outputState = 1; //is the output on or off
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
myservo.attach(9);
|
||||
irrecv.enableIRIn(); // Start the receiver
|
||||
|
||||
// initialize the LED pin as an output:
|
||||
pinMode(ledPin, OUTPUT);
|
||||
// initialize the pushbutton pin as an input:
|
||||
pinMode(outputPin, OUTPUT);
|
||||
// initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT);
|
||||
pinMode(relayPin, OUTPUT);
|
||||
// initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
|
||||
// read the state of the pushbutton value:
|
||||
buttonState = digitalRead(buttonPin);
|
||||
|
||||
// if a signal is detected, store the value
|
||||
if (irrecv.decode(&results)) {
|
||||
CurrentValue = (results.value);
|
||||
|
||||
// if the recieved value equals the programed value, then toggle the output state
|
||||
if(CurrentValue == StoredCode) {
|
||||
outputState = 1;
|
||||
}
|
||||
|
||||
// if the record mode is activated store the current value as the programed value
|
||||
if (RecordState == 1) {
|
||||
StoredCode = CurrentValue;
|
||||
RecordState = 0;
|
||||
digitalWrite(ledPin, LOW);
|
||||
Serial.println(StoredCode); //displays stored code for reference
|
||||
}
|
||||
|
||||
// Receive the next value
|
||||
irrecv.resume();
|
||||
}
|
||||
|
||||
else //if no signal is detected, then the current value is 0
|
||||
{
|
||||
CurrentValue = 0;
|
||||
}
|
||||
|
||||
// check if the record button is pressed.
|
||||
// if it is, the buttonState is HIGH:
|
||||
if (buttonState == HIGH) {
|
||||
|
||||
//wait for the button to be released
|
||||
while (buttonState == HIGH) {
|
||||
buttonState = digitalRead(buttonPin);
|
||||
}
|
||||
|
||||
//turn on the LED to indicate that record mode is on
|
||||
digitalWrite(ledPin, HIGH);
|
||||
RecordState = 1;
|
||||
}
|
||||
|
||||
//set the appropriate output state
|
||||
if(outputState == 1) {
|
||||
|
||||
digitalWrite(outputPin, HIGH);
|
||||
myservo.write(180);
|
||||
delay(1000);
|
||||
myservo.write(150);
|
||||
digitalWrite(outputPin, LOW);
|
||||
outputState = 0;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user