Rum ljus & temperatur Regulator (6 / 6 steg)

Steg 6: Final koden

Temperature1 och Light1 bör placeras mellan mörkarna och fönster, temperature2 någonstans i skuggan en undersökningen2 direkt utanför mörkarna. Mörkarna bör också redan vara öppen när du kör detta program. Glöm inte att fylla i alla variabler från tidigare kalibreringar. Koden verkar lite hackade upp här, tyvärr. Det är autoformatet på Instructables.

#define RELAY1 3
#define RELAY2 4
#define RELAY3 5
#define RELAY4 6

#define TEMP1 54 //A0
#define TEMP2 55 //A1

#define LIGHT1 56 //A2
#define undersökningen2 57 //A3
#define LIGHT3 58 //A4
#define LIGHT4 59 //A5

#define öppen sant
#define nära falskt

#define SVALARE 12

float ersättning.
float temperature1, temperature2;
flyta upper_temp_threshold = 30.
flyta lower_temp_threshold = 20;

float light1, undersökningen2;
flyta lower_light_threshold = 50;
flyta upper_light_threshold = 700;

int adjustBlindsBy = 2500;

booleska blindsAreOpen = sant;
booleska isCooling = false;

int tempDegrees = 0;
String tempString = "";

int amountToOpenBlind1;
int amountToCloseBlind1;
int amountToOpenBlind2;
int amountToCloseBlind2;
int amountToOpenBlind3;
int amountToCloseBlind3;
int amountToOpenBlind4;
int amountToCloseBlind4;

/**
Motor
*/
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int steg = 0;
booleska riktning = sant; / / gre
osignerade långa last_time;
osignerade långa currentMillis;
int steps_left = 4095;
lång tid;

void setup() {
Serial.BEGIN(9600);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);

pinMode (RELAY1, OUTPUT);
pinMode (RELAY2, OUTPUT);
pinMode (RELAY3, OUTPUT);

pinMode (TEMP1, indata);
pinMode (TEMP2, indata);

pinMode (LIGHT1, indata);
pinMode (undersökningen2, indata);
pinMode (LIGHT3, indata);
pinMode (LIGHT4, indata);

pinMode (SVALARE, OUTPUT);

ersättning = 23,5 / 90;

}

void loop() {

temperature1 = getTemp(TEMP1);
temperature2 = getTemp(TEMP2);

light1 = analogRead(LIGHT1);
undersökningen2 = analogRead(LIGHT2);

om ((temperature1 > = upper_temp_threshold & & blindsAreOpen) ||
light1 > upper_light_threshold) {
adjustBlinds(OPEN);
om (! isCooling) {
coolDown(true);
}
}

om (temperature2 > = temperature1 & &! blindsAreOpen) {
adjustBlinds(CLOSE);
om (isCooling) {
coolDown(false);
}
}

om (temperature1 < = lower_temp_threshold & & isCooling) {
coolDown(false);
}

Serial.println(temperature1);
Delay(1000);

}

flyta getTemp(int nr) {

flyta tmp = 0;

för (sväva jag = 0; jag < 5; i ++) {
tmp += analogRead(nr) * ersättning.
Delay(100);
}

returnera tmp / = 5.0;

}

void adjustBlinds(boolean openIt) {
closeRelays();

fördröjning (200);
digitalWrite (RELAY1, öppen);
turnDegrees (openIt? amountToOpenBlind1: amountToCloseBlind1);
digitalWrite (RELAY1, nära);

Delay(1000);
digitalWrite (RELAY2, öppen);
turnDegrees (openIt? amountToOpenBlind2: amountToCloseBlind2);
digitalWrite (RELAY2, nära);

Delay(1000);
digitalWrite (RELAY3, öppen);
turnDegrees (openIt? amountToOpenBlind3: amountToCloseBlind3);
digitalWrite (RELAY3, nära);

blindsAreOpen =! blindsAreOpen;

closeRelays();
}

void coolDown(boolean cool) {
digitalWrite (SVALARE, cool);
}

void turnDegrees (int grader) {

flyta tmpDegree = (float) grader;
grader = (int)(tmpDegree * 11.38);

Riktning = grader > 0? falska: sant;

om (grader < 0)
grader * = -1;

medan (grader > 0) {

currentMillis = micros();
om (currentMillis - last_time > = 1000) {
stepper(1);
tid = tid + micros() - last_time;
last_time = micros();
grader--;
}
}

Delay(2000);

}

Annullera stepper (int xw) {
för (int x = 0; x < xw; x ++) {
Switch (steg) {
fall 0:
digitalWrite (IN1, låg);
digitalWrite (IN2, låg);
digitalWrite (IN3, låg);
digitalWrite (IN4, hög);
bryta;
fall 1:
digitalWrite (IN1, låg);
digitalWrite (IN2, låg);
digitalWrite (IN3, hög);
digitalWrite (IN4, hög);
bryta;
fall 2:
digitalWrite (IN1, låg);
digitalWrite (IN2, låg);
digitalWrite (IN3, hög);
digitalWrite (IN4, låg);
bryta;
fall 3:
digitalWrite (IN1, låg);
digitalWrite (IN2, hög);
digitalWrite (IN3, hög);
digitalWrite (IN4, låg);
bryta;
fall 4:
digitalWrite (IN1, låg);
digitalWrite (IN2, hög);
digitalWrite (IN3, låg);
digitalWrite (IN4, låg);
bryta;
fall 5:
digitalWrite (IN1, hög);
digitalWrite (IN2, hög);
digitalWrite (IN3, låg);
digitalWrite (IN4, låg);
bryta;
fall 6:
digitalWrite (IN1, hög);
digitalWrite (IN2, låg);
digitalWrite (IN3, låg);
digitalWrite (IN4, låg);
bryta;
fall 7:
digitalWrite (IN1, hög);
digitalWrite (IN2, låg);
digitalWrite (IN3, låg);
digitalWrite (IN4, hög);
bryta;
standard:
digitalWrite (IN1, låg);
digitalWrite (IN2, låg);
digitalWrite (IN3, låg);
digitalWrite (IN4, låg);
bryta;
}
SetDirection();
}
}

void SetDirection() {
om (riktning == 1) {
Steg ++;
}
om (riktning == 0) {
Steg--;
}
om (steg > 7) {
Steg = 0;
}
om (steg < 0) {
Steg = 7.
}
}

Annullera utskrift (strängen str) {
Serial.println(Str);
}

void closeRelays() {
digitalWrite (RELAY1, nära);
digitalWrite (RELAY2, nära);
digitalWrite (RELAY3, nära);
digitalWrite (RELAY4, nära);
}

void openRelays() {
digitalWrite (RELAY1, låg);
digitalWrite(RELAY2,LOW);
}

Se Steg
Relaterade Ämnen

Farkosten en futuristiska rum ljus upcycled ur en gammal hårddisk enhet

Så du bygga Beamboarder från min andra instruktion och du vet inte vad jag ska göra med det hård avkasta driva fallet?! Eller vill du bara ha en trevlig ljus på ditt skrivbord eller vägg? Här en liten instruktion hur man återanvänder en gammal hårddi...

Rum ljus med din ficklampa

vårt vardagsrum var ganska mörkt eftersom det inte hade en taklampa. Vi hade bara en liten lampa bredvid soffan. Vi ville ha mer ljus. Dock hade vi en tutande stora kraftfulla LED-ficklampa med uppladdningsbara batterier designad av Google, så vi bes...

Kontrollera ditt rum ljus med din mobil

Detta instructable visar dig hur du ansluter din lampa till din mobiltelefon, och styra den via IR-sensorn.Du kan styra någon elektrisk sak hemma efter detta instructable, om du förstår de viktigaste begreppen.Den maskinvara du behöver för detta proj...

Cocktail parasoll ljus skugga

Parasoll skuggar du från solen som är stor ljusstyrka. Så varför inte använda mycket liten cocktail parasoller för att skugga du från ditt rum ljus som är liten?Denna cocktail parasoll ljus skugga är så enkel att göra. Det i princip bara sticka cockt...

En mycket enkel fjärrkontroll blinkande LED-ljus

Tanken på detta Instructable är att visa dig hur man gör en mycket enkel och liten, underhållande, förtrollande, egendomligt blinkande LED-ljus under dekoration av ditt val, det blinkar av någon infraröd fjärrkontroll signal tas emot!Oavsett om det ä...

Tester av LED och olika ljus sensorer

Två kretsar jag gjorde, en rörelsesensor och en sol tracker, var inte fungerar som den ska, och så jag bestämde mig att testa känsligheten av ljussensorer dessa kretsar som används. Forska i ämnet, jag var förvånad över att lysdioder kan användas som...

LED ljus för närbild bilder

Hi, gott folk!Det var 0ctober, 2008. Fran bara få en ny E410. Och han ville ta extrema nära ups.Tja, utan ordentlig ljus det bara slösar tid. Och efter samlande kommersiella erbjudanden - twin utlöses, O-ring utlöses, etc., hundra spänn minst, tar ja...

Arduino ljus efter Robot

ÖversiktDetta instructable kommer att använda tre photoresistors (ljus beroende motstånd) och en Arduino att förflyttningar av en robot. Någon gemensam robot chassi kan användas för robot. Ljussensorer kommer att monteras på vänster sida, höger sida...

Ljus intensitet läsare

Samtidigt försöker tänka på något som kan relatera till visualisera dagliga fenomen, avkänning det och analysera det på en skärm, hamnade vi slutligen landa på idén att visualisera ljusintensiteten på en skärm.För detta använde vi ljus beroende Resis...

DIY Smart Home Automation med Android

Smart Home Automation Låt användaren för att styra hem från hans eller hennes telefon och tilldela åtgärder som bör hända beroende på tid eller andra sensormätningar som ljus, temperatur eller ljudet från alla enheter i nätverket hemautomation.VAD KA...

Bygga din egen Kegerator för Homebrew

om titeln på detta instructable toppar ditt intresse, då du förmodligen brygga eller har bryggt en egen öl. Om så är fallet, då tröttnat du förmodligen på påfyllning och rengöring alla dessa flaskor. Bygga en kegerator är det bästa sättet att öka din...

Atmel start 4: Blinky två-växlar, Pull-Up motstånd och Bit Ops

Figur 1: Exempel växlar som kan använda MCU pull-up resisters, främre: Foto-motstånd, Foto-transistor, knapp; Bakre: exempel knappsatser.M. A. Parker c2015Blinky två visar hur MCU kan lätt läsa delstaten externa switchar, vilket inkluderar tryckknapp...

Anslutna Studio varningslampa

I detta Instructable, vi kommer att bygga en mycket modern ta på en ikonisk bit studioutrustning: en smart on-air varningslampa som svarar på Robin room bokningssystemet.Detta projekt startade livet som en praktisk lösning till vårt tillfälliga behov...

Behandlingen sensorer med en mikroprocessor.

I min tidigare Instructable jag visade hur enkla kommandon kan användas för att aktivera en mikroprocessor utmatning och ljus en LED.Jag måste betona jag inte är ansluten med Picaxe och dessa projekt är sådana jag använde i skolan för att lära progra...

Blommig akvarell franska Macarons

Hej Momoluvers, det är Momo och smilfink jag kommer att visa dig hur du gör dessa vackra lite fester. Som ni vet, är jag macaron besatt. Jag står för mitt uttalande att de är de största snacks genom tiderna, och även om tidskrävande, de är definitivt...

SMART POWER OUTLET

Hej, Välkommen till min nya Instructable på Home Automation.Detta projekt startades för att lösa några vanliga problem som alla står inför. Antar att det är en kall vinternatt, du läser en roman på sängen, innan du somnar. Efter att ha läst några sid...

Multipurpose Hydroponics och jord trädgårdsskötsel lösning

Jag har redan publicerat en liknande instructable och här är en reducerad version av samma eftersom det kändes lite för komplicerat för vissa. Här går vi...IntroduktionMånga människor tycker om start trädgårdsarbete som hobby och några föreställa sig...

IR-fjärrkontrollen posterar för Android - Sänk TV

Obs: denna GUIDE kan också hittas på TECHBITAR.COMUPPDATERING28 nov 2013: Med på farliga prototyper http://goo.gl/FjwNoQINTRODUKTIONI denna guide kommer jag förklara att skapa och drift av en enkel Arduino-baserad IR-fjärrkontrollen posterar (IR-post...

Scanning hinna negativ med en DSLR

Tja, kan bara säga jag har fått bättre på detta under de senaste åren. Den vänstra bilden var en av de första som jag har "scannat" med min DSLR, och den till höger har jag bara omsökas med de tekniker som beskrivs nedan (högre upplösning finns...