Arduino Powered Home (7 / 10 steg)

Steg 7: Programmera Arduino



Bifogat nedan är den Arduino skissen för min senaste versionen av detta projekt. För din bekvämlighet är det blixtlås i en mapp med samma namn som skissen. Detta är nödvändigt för dig att använda den med Arduino IDE programvara. *** skiss kan ses med någon text redaktör ***

Vara noga med placeringen av öppning och stängning klammerparenteser {och} eftersom för koden att arbeta klamrarna har balanseras. Om du går vilse försöker hänga med klamrarna, bör du märka att använda Arduino IDE (jag har använt IDE 1.0 på Linux och tidigare 1.0.5 på Windows) om du placerar markören bara efter en öppna eller stänga stag, IDE kommer att omge dess matchande stag i en rektangel. Du kan behöva rulla uppåt eller nedåt inom din kod för att hitta den matchande stag, som stora delar av din kod kan innehålla hängslen med många andra par hängslen refuger. IDE-funktionen kan du hitta den stag som är ur balans eller extra, eller kanske ska matchas med en saknad stag.

Gå över koden på en hög nivå, vill främst jag påpeka del av koden som gör webbsidan. Det börjar med client.println(""); Detta säger Arduino att skriva ut en linje till webbläsaren ansluter till servern via etablerade anslutningen. Om du är lite bekant med HTML, kan du ändra sidans innehåll och länkar efter det som passar dina behov. Tänk bara på det behöver dessa client.print uttalanden i början av varje rad med innehållet på själva webbsidan; antingen client.println som en linje med effekten av en vagnretur radmatning i slutet, eller en client.print som skriver ut vad som följer, men kommer att behöva sluta med HTML-koden
för radbrytning att få samma effekt. Om du vill skriva ut flera saker på samma rad, använda något lik:

client.Print ("I");

client.Print ("liknande");

client.Print ("Arduino");

client.println ("home automationsprojekt");

Ovanstående kommer att skrivas ut

Jag gillar Arduino hemautomation projekt

till webbsidan med en vagnretur radmatning efteråt.

Jag la en twist till Cdcosmas webbsida när jag bestämde mig på att lägga till PC och MV växla kontroll, så du ' ll se en liten mängd kod mellan delar av HTML som används bara av Arduino för att besluta vad HTML visas i webbläsaren. Till exempel:

om (digitalRead(8) > 0) {

client.Print ("MV är ON");

client.println("");

client.println ("stänga MV");

} annat {

client.Print ("MV är OFF");

client.println("");

client.println ("vända MV på");

}

Längst ner på webbsidan, jag lade till några rader för att påminna mig själv som skiss lästes, när jag laddade upp den och från vilken dator. Jag nyligen flyttat en bärbar dator och en dator från Windows till Linux och var inte säker på om jag skulle ha skillnader i beteendet hos mina uppladdade skisser utifrån OS jag brukade köra IDE. Det enda jag märkte på grund av min OS flytta är att med Linux, när du öppnar den seriella monitorn i IDE, det återställer din skiss. Så i mitt fall växla alla min hög effekt reläer till off. Har man ingen skillnad i beteendet hos mina skisser om min OS flytta.

Uppdatera augusti 2014:

Tillsammans med att lägga till kretskortet med tact-omkopplare, La jag några knep som jag plockade upp från dyk djupare in i amandaghassaei's mellanliggande Arduino: in- och utgångar. För att skriva ut till den seriella porten tillståndet för varje stift när jag vill, jag lagt till ett avsnitt till min skiss innan den setup() som deklarerar en variabel för varje stift stat, som:

int pinState1 = digitalRead(4); Jag gjorde detta för varje stift i mitt projekt, stift 4-9, 11 och 22-25, alla ingångar och utgångar.

och använda hennes exempel för debouncing en växel innan bestämma sitt tillstånd, förklarade booleska variabler för currentState, lastState, debouncedState för varje knapp (som currentState1, currentState2), osignerade långa timeOfLastButtonEvent för varje knapp, och en standard debounceInterval som ska användas för alla så här:

boolean currentState1 = låg, lagring för nuvarande uppmätta Knapp1 tillstånd,... etc för 2, 3 och 4

boolean lastState1 = låg, lagring för senast mätt Knapp1 stat,... etc för 2, 3 och 4

boolean debouncedState1 = låg, debounced Knapp1 stat,... etc för 2, 3 och 4

int debounceInterval = 20; vänta 20ms för knappar att bosätta sig

osignerade långa timeOfLastButtonEvent1 = 0; Store den senast tid Knapp1 tillståndet förändrats... etc för 2, 3 och 4

På slutet av min skiss utanför min setup() loop lagt jag följande funktion som jag döpt till "Stater":

void States() {

pinState1 = digitalRead(4);

pinState2 = digitalRead(5);

pinState3 = digitalRead(6);

pinState4 = digitalRead(7);

pinState5 = digitalRead(8);

pinState6 = digitalRead(9);

pinState7 = digitalRead(11);

pinState8 = digitalRead(22);

pinState9 = digitalRead(23);

pinState10 = digitalRead(24);

pinState11 = digitalRead(25);

Serial.Print ("aktiva låg lr fan krets-utgångsstiftet 4: s tillstånd:");

Serial.println(pinState1);

Serial.Print ("aktiva låg br ljus krets-utgångsstiftet 5 är staten:");

Serial.println(pinState2);

Serial.Print ("aktiva låg br fan krets-utgångsstiftet 6 är staten:");

Serial.println(pinState3);

Serial.Print ("MV switch utgångsstiftet 7 är staten:");

Serial.println(pinState4);

Serial.Print ("MV power status ingångsstift 8's state:");

Serial.println(pinState5); Serial.Print ("PC switch utgångsstiftet 9: s tillstånd:");

Serial.println(pinState6);

Serial.Print ("PC power status ingångsstift 11's state:"); Serial.println(pinState7);

Serial.Print ("LR fan knappen ingångsstift 22's state:");

Serial.println(pinState8); Serial.Print ("BR LYS-knappen ingångsstift 23's state:");

Serial.println(pinState9);

Serial.Print ("BR fan knappen ingångsstift 24's state:"); Serial.println(pinState10);

Serial.Print ("MV switch knappen ingångsstift 25 delstaten:");

Serial.println(pinState11); }


Och I Dämpningstid varje switch, avgöra dess status, besluta om det ändrade och ringa min States() funktion från varje avsnitt inom min loop() så här:

Master sovrum ljus
currentState2 = digitalRead(buttonPin2);

osignerade långa currentTime2 = millis();

om (currentState2! = lastState2) {

timeOfLastButtonEvent2 = currentTime2;

}

om (currentTime2 - timeOfLastButtonEvent2 > debounceInterval) { //if tillräckligt med tid har gått

om (currentState2! = debouncedState2) { //if aktuella tillstånd är ändå annorlunda än vårt senaste lagrade debounced staten

debouncedState2 = currentState2; uppdatera debounced staten

Aktivera en händelse för sovrummet ljus

om (debouncedState2 == hög) {

States();

Serial.println ("Button2 tryckte");

digitalWrite (5,! digitalRead(5)); Invertera tillstånd av stift 5 av första behandlingen dess digitala värde, sedan skriva motsatsen

Serial.println("---");

Serial.println();

}

annat {

States();

Serial.println ("Button2 släppt");

Serial.println("---");

Serial.println();

}

}

}

lastState2 = currentState2;

Jag kräver också States() varje gång en åtgärd vidtas baserat på input från webbsidan, vilket gör för en allvarligt stor mängd seriell utgång. Det var mestadels felsökning av några udda beteende som visade sig bero på en något ledande yta (överst på färgade antika bröstet) där låg min Arduino och byta kretskort, fortfarande utan ett projekt fall. Jag behöver fixa det snart men för nu, jag har placerat ett pappersark under allt. Innan jag kunde lägga min hand på bröstet och ett relä vill invertera stater. Inte precis önskvärt resultat! Jag ska skära ner på tunga användning av States() och/eller whiddle ner dess innehåll snart. Också nära toppen av min "att göra-lista" är att avsluta min plexi inhägnad för Arduino Mega och ethernet shield och göra något liknande för kretskortet switch.

De sista tre bilderna ovan är skärmdumpar av seriell monitorutgången med anteckningar.

-Slutet av update-

Se Steg
Relaterade Ämnen

Hur man bygger en Arduino Powered Chess spela Robot

att döma av det stora antalet schack relaterade Instructables, jag tycker det är säkert att säga gemenskapen åtnjuter spelet. Det kan dock vara svårt, att hitta någon som spelar på samma nivå som du gör. Att lösa detta dilemma, och att öka min spela...

Ett trådlöst kontrollerade, Arduino-Powered anslagstavla

bygga själv en trådlöst styrd, Arduino-powered anslagstavla!Här är ett enkelt projekt som skapar en trådlöst programmerbart anslagstavla. XBee moduler använder för att ge en trådlös seriell länk mellan datorn och enheten. Du interagerar med den via e...

Arduino-Powered binära termometer

jag nyligen förvärvat en Arduino Uno och letade efter en cool "komma igång" projekt. Jag beslöt att göra en termometer, som satsen har jag haft alla nödvändiga delar (termistor, sladdar, motstånd, lysdioder). Genom ett par iterationer, jag äntli...

Arduino Powered infraröd sak

Hej, detta är min första instructible. Jag kommer att visa dig hur man gör en arduino powered analog sensor läsare (jag kommer att använda en infraröd fotodiod).Steg 1: delar Du behöver flera saker att göra detta:1. någon form av fallet eller låda2....

Arduino Powered uppvärmd handske Liners

Arduino Powered uppvärmda handskarDetta projekt är om hur att göra världens smartaste uppvärmd handske liners för extremt kalla förhållanden som de i Minnesota eller människor som har Raynauds syndrome(like me). Dessa handskar kommer förses du med ti...

Arduino-powered LED klocka

En rolig, enkel LED-klocka, som ger dig tiden till den närmaste halvtimmen med hjälp av enfärgade lysdioder. Delar som behövs är följande:Arduino Nano400 tie-punkt skärbrädaBandkabelDS1307 RTC IC32.768 kHz Crystal(12) 10mm lysdioder(12) 180 Ohm motst...

Arduino powered Halloween pumpa med rörelsedetektor

Hejdetta Instructable visar dig hur man gör några Halloween dekorationer inklusive arduino powered Halloween pumpa med rörelsedetektor.Steg 1: Göra Halloween pumpa Material:Rund ballongGamla tidningarSmidig mjölVattenTemperaModellering leraSuperlimVe...

Acrylic fisk Tank med Arduino-Powered mataren

Har du någonsin velat ett mer händer på känsla när får en fisk? Eller ville ha något annat än de genomsnittliga akvarier finns i butiker? Denna fisk tank är helt anpassad och kan ändras för att passa din storlek behov och har en Arduino powered feede...

Arduino Powered RGB LED Vodka hylla

detta instructable kommer du igång att göra ditt eget arduino powered röd grön och blå LED-projekt. Det behöver inte ens vara en hylla! Vodka flaskor råkar bara lysa upp fint så det är vad jag valde att göra.I detta projekt använder vi varje stift på...

Att göra en Arduino Powered gardin Automation

I den här videon börja jag arbeta på visar dig hur man gör en Arduino Powered enhet som kommer att öppna och stänga gardiner!Med hjälp av några rep och en kontinuerlig rotation servo jag kan skapa en trissa system som fungerar som stamnät till rörels...

3 kanal arduino Powered Christmas Light Controller!

För julen i år, jag ville göra ett riktigt häftigt projekt men inte riktigt vet vad man ska göra. Som jag fick julen ljus ut att dekorera, var det en gammal trasig Christmas light timer. Jag tog isär och tittade på lågspänning kretsen. Innan detta ha...

Solar-orienterade, Arduino-Powered klockan

detta är en klocka för att hålla exakt tid (oberoende av atom eller GPS), Visa lokala soluppgång, solnedgång och solar, och även justera sig för sommartid.Jag ville ha klockan för att vara lätt att använda och vara flexibel. Funktionerna som inställn...

Arduino Powered raket styrsystemet

detta är min första Instructable så bär med mig.Detta är en Arduino Powered raket vägledning System. Jag skickade in detta för Google Global Science Fair. Min science projekt är på https://sites.google.com/site/arduinorocket/ . Det tog mig tre månade...

Arduino Powered Gainclone (förstärkare)

för er som inte vet (och jag inte förrän nyligen), en Gainclone är en förstärkare som är en klon av den ursprungliga utformningen av en förstärkare av 47 Labs kallas en Gaincard och är baserade på enkel flisa förstärkare av National Semiconductor - n...

Arduino powered RC tank

detta är min första instructable så snälla ha tålamod med mig. Mitt namn är Stanley Deakins och jag har spelat med elektronik ganska länge, men det var år sedan. På grund av min senaste anställning har jag återuppväcka denna passion. Jag har fått min...

Nattliga utsläpp: Min Arduino Powered Internet aktiverat dröm Generator

måste vi alla drömmer mer så jag har skapat denna Arduino Powered "dream generator" för att plantera frön för några stora tänkande galenskap. När du närmar dig generatorn en Maxbotix ultrasonic sensor utlöser ljus och musik som drar du i så du k...

Arduino Powered RGB humör lampa plus Simon

detta är grunden en arduino powered RGB humör lampa plus simon says spel, två i ett.Hur man använder: Enheten börjar med RGB humör lampa standardprogram, när du trycker på någon av de fyra knapparna längst ner, säger Simon spelet startar. När du tryc...

Arduino-Powered fyra bokstäver Word Generator

bygga en Arduino-drivna versionen av de "fyra bokstäver Word Generator" (FLW). Denna version genererar "ord" i farten - det använder inte en lista. Den "ursprungliga" versionen från 1970-talet använde B7971 nixie alfanumerisk...

Mushroom miljö kontroll - Arduino Powered

detta är min första Arduino projekt syftar till att hjälpa mig med min andra hobby som växer ostron och shiitake svampar inomhus.I ett nötskal, registeransvarige tar i två temperaturavläsningar, 1 fuktighet läsning och 1 Co2 läsning och utlöser en av...