#include <TM1637Display.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
#include <DallasTemperature.h>
#include <OneWire.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int receiver_pin = A1;
bool window1_Open = true;
bool window2_Open = true;
bool both_windows_closed= false;
bool fan_on = true;
OneWire oneWire(A2);
DallasTemperature sensors(&oneWire);
TM1637Display display(10, 11);
int step = 12;
int dir = 13;
int pot = A0;
int delay_time =0;
void setup() {
// put your setup code here, to run once:
servo1.attach(9);
servo2.attach(6);
servo3.attach(5);
servo4.attach(3);
setWindow1Angle(90);
setWindow2Angle(90);
IrReceiver.begin(receiver_pin, ENABLE_LED_FEEDBACK);
sensors.begin();
display.setBrightness(7);
}
void loop() {
delay_time= map(analogRead(pot),0,1023,4000,500);
sensors.requestTemperatures();
int tempC = round(sensors.getTempCByIndex(0));
display.showNumberDec(tempC);
// put your main code here, to run repeatedly:
if (IrReceiver.decode()) {
int key = IrReceiver.decodedIRData.command;
IrReceiver.resume();
if (key == 48 ) {
if(window1_Open){
setWindow1Angle(180);
}
else{
setWindow1Angle(90);
}
window1_Open=!window1_Open;
return;
}
if (key == 24 ) {
if(window2_Open){
setWindow2Angle(180);
}
else{
setWindow2Angle(90);
}
window2_Open=!window2_Open;
return;
}
////
if (key == 122 )
{
setWindow1Angle(180);
setWindow2Angle(180);
window1_Open=false;
window2_Open=false;
both_windows_closed=true;
return;
}
if (key == 16 )
{
setWindow1Angle(90);
setWindow2Angle(90);
window1_Open=true;
window2_Open=true;
return;
}
if(window1_Open==false && window2_Open==false){
both_windows_closed=true;
}
else{
both_windows_closed=false;
}
if (key == 56 && both_windows_closed==true) {
digitalWrite(dir, HIGH);
while(true){
digitalWrite(step, HIGH);
delayMicroseconds(delay_time);
digitalWrite(step, LOW);
delayMicroseconds(delay_time);
if (IrReceiver.decode())
{
key = IrReceiver.decodedIRData.command;
IrReceiver.resume();
if(key==56){
break;
}
}
digitalWrite(step, LOW);
//return;
}
}
}
}
void setWindow1Angle(int angle) {
servo1.write(180-angle);
servo2.write(angle);
}
void setWindow2Angle(int angle) {
servo3.write(180- angle);
servo4.write(angle);
}
servo1
servo2
servo3
servo4