IButton garage-dörröppnare (Arduino) (7 / 10 steg)

Steg 7: Den sista skissen



Nu behöver jag att sammanställa alla tre skisser till en fungerande skiss!
Jag använde klocka-sketch som bas att lägga till de andra två skisserna till. Jag lagt till funktioner för att blockera iButtons och Arduino loggar de senaste 10 posterna.
Av bugg som var i min första skiss är fast nu. Om du använt koden som var postat här före den 2 oktober 2011, än att ändra denna kod. Om du redan mixtrar med den, så låt mig veta och jag kommer att förklara ett enkelt sätt att sätta fast vägglusen.

Skiss:

#include //adding tid-biblioteket
#include //adding LCD-skärmen bibliotek
#include //adding iButton biblioteket

LiquidCrystal lcd (11, 10, 5, 4, 3, 2); stiften som LCD-skärmen är ansluten på

int knoptijd = 400. ställa in alla variabler för klocka delen (ledsen för de holländska namn)
int uur = 12.
int minuut = 15.
int seconde = 0;
int dag = 10;
int maand = 9.
int Johansson = 2011.
int knopset = 9;
int knopmode = 8;
int setwaarde = 0;
int modewaarde = 0;

OneWire ds(12); ange variablerna för iButton delen
byte addr [8].
int but1 [6] = {0,149,107,48,13,0}. koden för iButtton ***
Sträng namn1 = "Burton"; namnet bör alltid 6 siffror
byte uit1 = 1;
int but2 [6] = {0,65,177,47,13,0}.
Sträng name2 = "Aca";
byte uit2 = 1;
int but3 [6] = {0,235,75,138,9,0}.
Sträng name3 = "Peter";
byte uit3 = 1;
int but4 [6] = {0,3,0,0,0,0}.
String name4 = "Men 4";
byte uit4 = 1;
int but5 [6] = {0,87,171,46,13,0}.
String name5 = "Jelle";
byte uit5 = 1;

String keyStatus = "";
byte welkeBut = 0;
String namn = "";
Sträng geheugen [10] = {"leeg10", "leeg 9", "leeg 8", "leeg 7", "leeg 6", "leeg 5", "leeg 4", "leeg 3", "leeg 2", "leeg 1"};
int memHour [10] = {99,99,99,99,99,99,99,99,99,99}.
int memMinute [10] = {99,99,99,99,99,99,99,99,99,99}.
int memDay [10] = {99,99,99,99,99,99,99,99,99,99}.
int memMonth [10] = {99,99,99,99,99,99,99,99,99,99}.
int jag = 0;

void setup() {
pinMode (knopset, ingång);
pinMode (knopmode, ingång);
pinMode (7, OUTPUT); öppna dörren
LCD.BEGIN (20, 2); ställa in storleken på LCD-skärmen
setTime(uur,minuut,seconde,dag,maand,jaar); Ange starttid för klockan när den startar

}

void loop() {
setklok(); testning för tider som måste ändras
digitalClockDisplay(); Visa klockan
Delay(1000);
getKeyCode(); att få iButton koden
testKeyCode(); testa iButton koden
modeklok();
}

void setklok() {//setting klockan
modewaarde = digitalRead(knopmode);
om (modewaarde == låg) {//if [mode]-knappen är pusched
LCD.Clear();
LCD.Print ("tijd instellen");
lcd.setCursor (0, 1); ställa in timmarna
LCD.Print ("uur:");
lcd.setCursor (9, 1);
LCD.Print(uur);
LCD.Print("");
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
medan (modewaarde == hög) {
Delay(knoptijd);
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {
uur ++;
om (uur > 24) uur = 1;
lcd.setCursor(9,1);
LCD.Print(uur);
LCD.Print("");
}
modewaarde = digitalRead(knopmode);
}

miljö i minuter
lcd.setCursor (0, 1);
LCD.Print("minuut");
lcd.setCursor (9, 1);
LCD.Print(minuut);
LCD.Print("");
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
medan (modewaarde == hög) {
Delay(knoptijd);
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {
minuut ++;
om (minuut > 59) minuut = 0;
lcd.setCursor (9, 1);
LCD.Print(minuut);
LCD.Print("");
}
modewaarde = digitalRead(knopmode);
}

ställa in månad
lcd.setCursor (0, 1);
LCD.Print ("maand");
lcd.setCursor (9, 1);
LCD.Print(maand);
LCD.Print("");
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
medan (modewaarde == hög) {
Delay(knoptijd);
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {
maand ++;
om (maand > 12) maand = 1;
lcd.setCursor (9, 1);
LCD.Print(maand);
LCD.Print("");
}
modewaarde = digitalRead(knopmode);
}

att dag
lcd.setCursor (0, 1);
LCD.Print ("dag");
lcd.setCursor (9, 1);
LCD.Print(dag);
LCD.Print("");
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
medan (modewaarde == hög) {
Delay(knoptijd);
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {
dag ++;
om (maand == 1 || maand == 3 || maand == 5 || maand == 7 || maand == 8 || maand == 10 || maand == 12) {
om (dag > 31) dag = 1;
}
om (maand == 4 || maand == 6 || maand == 9 || maand == 11) {
om (dag > 30) dag = 1;
}
om (maand == 2) {
om (dag > 28) dag = 1;
}
lcd.setCursor (9, 1);
LCD.Print(dag);
LCD.Print("");
}
modewaarde = digitalRead(knopmode);
}

setTime(uur,minuut,seconde,dag,maand,jaar);
LCD.Clear();
}
}

void digitalClockDisplay() {//printing tid och datum
lcd.setCursor(0,0);
LCD.Print("");
lcd.setCursor(0,0);
LCD.Print(Hour());
printDigits(minute());
LCD.Print("");
LCD.Print(Day());
LCD.Print("/");
LCD.Print(Month());
LCD.Print("");
}

void printDigits (int siffror) {
verktyget funktion för digital klocka: utskrifter före kolon och ledande 0
LCD.Print(":");
IF(digits < 10)
LCD.Print('0');
LCD.Print(digits);
}

void getKeyCode() {//getting koden från Nyckelringsfäste
byte närvarande = 0;
byte data [12].
keyStatus = "";

om (! ds.search(addr)) {
DS.reset_search();
hemkomst.
}

om (OneWire::crc8 (addr, 7)! = addr[7]) {
keyStatus = "Ogiltig CRC";
hemkomst.
}

om (addr [0]! = 0x01) {
keyStatus = "inte DS1990A";
hemkomst.
}
keyStatus = "ok";
DS.Reset();
}

void modeklok() {//testing för botten-knappen ###
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {//if knappen [Ange] är pusched
LCD.Clear();
LCD.Print ("underhåll av Internet Explorer. Buiten sluiten?");
lcd.setCursor (0, 1); kontroll av minnet
LCD.Print(geheugen[9]);
LCD.Print("");
LCD.Print(memHour[9]);
LCD.Print(":");
LCD.Print(memMinute[9]);
LCD.Print("");
LCD.Print(memDay[9]);
LCD.Print("/");
LCD.Print(memMonth[9]);
LCD.Print("");

Delay(knoptijd);
setwaarde = digitalRead(knopset);
Jag = 8.
medan (modewaarde == hög) {
om (setwaarde == låg) {
Jag--;

lcd.setCursor(0,1);
LCD.Print(geheugen[i]);
LCD.Print("");
LCD.Print(memHour[i]);
LCD.Print(":");
LCD.Print(memMinute[i]);
LCD.Print("");
LCD.Print(memDay[i]);
LCD.Print("/");
LCD.Print(memMonth[i]);
LCD.Print("");

Delay(knoptijd);
IF(i==0) {
LCD.Clear();

lcd.setCursor (0, 1); att sätta sist in tillbaka på skärmen
LCD.Print(geheugen[9]);
LCD.Print("");
LCD.Print(memHour[9]);
LCD.Print(":");
LCD.Print(memMinute[9]);
LCD.Print("");
LCD.Print(memDay[9]);
LCD.Print("/");
LCD.Print(memMonth[9]);
LCD.Print("");

loop();
hemkomst.
}
}
setwaarde = digitalRead(knopset);
modewaarde = digitalRead(knopmode);
}

Delay(knoptijd);

Jag = 0;
While(i == 0) {//keeping ut iButton 1
lcd.setCursor(0,0);
LCD.Print ("buitensluiten? Ja -> ");
lcd.setCursor(0,1);
LCD.Print(name1);
LCD.Print ("nee ->").
Delay(knoptijd); Dubble väntetiden här
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
setwaarde = digitalRead(knopset);
om (modewaarde == låg) {
uit1 = 0;
lcd.setCursor(0,0);
LCD.Print ("buitengesloten!"); Lägg av
Delay(1000);
Jag = 1;
}
om (setwaarde == låg) {
uit1 = 1;
lcd.setCursor(0,0);
LCD.Print ("mag er i"); Kom in
Delay(1000);
Jag = 1;
}
}

Jag = 0;
While(i == 0) {//keeping ut iButton 2
lcd.setCursor(0,0);
LCD.Print ("buitensluiten? Ja -> ");
lcd.setCursor(0,1);
LCD.Print(name2);
LCD.Print ("nee ->").
Delay(knoptijd); Dubble väntetiden här
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
setwaarde = digitalRead(knopset);
om (modewaarde == låg) {
uit2 = 0;
lcd.setCursor(0,0);
LCD.Print ("buitengesloten!"); Lägg av
Delay(1000);
Jag = 1;
}
om (setwaarde == låg) {
uit2 = 1;
lcd.setCursor(0,0);
LCD.Print ("mag er i"); Kom in
Delay(1000);
Jag = 1;
}
}

Jag = 0;
While(i == 0) {//keeping ut iButton 3
lcd.setCursor(0,0);
LCD.Print ("buitensluiten? Ja -> ");
lcd.setCursor(0,1);
LCD.Print(name3);
LCD.Print ("nee ->").
Delay(knoptijd); Dubble väntetiden här
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
setwaarde = digitalRead(knopset);
om (modewaarde == låg) {
uit3 = 0;
lcd.setCursor(0,0);
LCD.Print ("buitengesloten!"); Lägg av
Delay(1000);
Jag = 1;
}
om (setwaarde == låg) {
uit3 = 1;
lcd.setCursor(0,0);
LCD.Print ("mag er i"); Kom in
Delay(1000);
Jag = 1;
}
}

Jag = 0;
While(i == 0) {//keeping ut iButton 4
lcd.setCursor(0,0);
LCD.Print ("buitensluiten? Ja -> ");
lcd.setCursor(0,1);
LCD.Print(name4);
LCD.Print ("nee ->").
Delay(knoptijd); Dubble väntetiden här
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
setwaarde = digitalRead(knopset);
om (modewaarde == låg) {
uit4 = 0;
lcd.setCursor(0,0);
LCD.Print ("buitengesloten!"); Lägg av
Delay(1000);
Jag = 1;
}
om (setwaarde == låg) {
uit4 = 1;
lcd.setCursor(0,0);
LCD.Print ("mag er i"); Kom in
Delay(1000);
Jag = 1;
}
}

Jag = 0;
While(i == 0) {//keeping ut iButton 5
lcd.setCursor(0,0);
LCD.Print ("buitensluiten? Ja -> ");
lcd.setCursor(0,1);
LCD.Print(name5);
LCD.Print ("nee ->").
Delay(knoptijd); Dubble väntetiden här
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
setwaarde = digitalRead(knopset);
om (modewaarde == låg) {
uit5 = 0;
lcd.setCursor(0,0);
LCD.Print ("buitengesloten!"); Lägg av
Delay(1000);
Jag = 1;
}
om (setwaarde == låg) {
uit5 = 1;
lcd.setCursor(0,0);
LCD.Print ("mag er i"); Kom in
Delay(1000);
Jag = 1;
}
}

LCD.Clear();

}
}

void testKeyCode() {//check om iButton presenteras är rätta
lcd.setCursor (0, 1);
IF(keyStatus=="OK") {
om (addr [1] == but1 [1] & & addr [2] == but1 [2] & & addr [3] == but1 [3] & & addr [4] == but1 [4] & & uit1 == 1) {welkeBut = 1; namn = name1;}
om (addr [1] == but2 [1] & & addr [2] == but2 [2] & & addr [3] == but2 [3] & & addr [4] == but2 [4] & & uit2 == 1) {welkeBut = 2; namn = name2;}
om (addr [1] == but3 [1] & & addr [2] == but3 [2] & & addr [3] == but3 [3] & & addr [4] == but3 [4] & & uit3 == 1) {welkeBut = 3; namn = name3;}
om (addr [1] == but4 [1] & & addr [2] == but4 [2] & & addr [3] == but4 [3] & & addr [4] == but4 [4] & & uit4 == 1) {welkeBut = 4; namn = name4;}
om (addr [1] == but5 [1] & & addr [2] == but5 [2] & & addr [3] == but5 [3] & & addr [4] == but5 [4] & & uit5 == 1) {welkeBut = 5; namn = name5;}

om (welkeBut == 1 || welkeBut == 2 || welkeBut == 3 || welkeBut == 4 || welkeBut == 5) {
LCD.Print(Name);
LCD.Print("");
LCD.Print(Hour());
printDigits(minute());
LCD.Print("");
LCD.Print(Day());
LCD.Print("/");
LCD.Print(Month());
LCD.Print("");
digitalWrite (7, hög).
Delay(500);
digitalWrite (7, låg).
bewaren(); Lägg sista besök i minne
}

om (welkeBut! = 1 & & welkeBut! = 2 & & welkeBut! = 3 & & welkeBut! = 4 & & welkeBut! = 5) {
digitalWrite (7, låg).
LCD.Print("");
lcd.setCursor (0, 1);
byte i.
för (jag = 5; jag > 0; i--) {
LCD.Print(":");
LCD.Print (addr [i], DEC);
}
Delay(1000);
lcd.setCursor (0, 1);
LCD.Print("");
}
}
annat {
welkeBut = 0;
om (keyStatus! = "") {
lcd.setCursor (0, 1);
LCD.Print(keyStatus);
Delay(1000);
lcd.setCursor (0, 1);
LCD.Print("");
}
}
}

void bewaren() {//put senaste besök i minnet
geheugen [0] = geheugen [1].
geheugen [1] = geheugen [2].
geheugen [2] = geheugen [3].
geheugen [3] = geheugen [4].
geheugen [4] = geheugen [5]. varje besök går en minnesplats
geheugen [5] = geheugen [6].
geheugen [6] = geheugen [7].
geheugen [7] = geheugen [8].
geheugen [8] = geheugen [9].
geheugen [9] = namn; senaste besöket läggs

memHour [0] = memHour [1]. samma för timmarna
memHour [1] = memHour [2].
memHour [2] = memHour [3].
memHour [3] = memHour [4].
memHour [4] = memHour [5].
memHour [5] = memHour [6].
memHour [6] = memHour [7].
memHour [7] = memHour [8].
memHour [8] = memHour [9].
memHour [9] = hour();

memMinute [0] = memMinute [1].
memMinute [1] = memMinute [2].
memMinute [2] = memMinute [3].
memMinute [3] = memMinute [4].
memMinute [4] = memMinute [5].
memMinute [5] = memMinute [6].
memMinute [6] = memMinute [7].
memMinute [7] = memMinute [8].
memMinute [8] = memMinute [9].
memMinute [9] = minute();

memDay [0] = memDay [1].
memDay [1] = memDay [2].
memDay [2] = memDay [3].
memDay [3] = memDay [4].
memDay [4] = memDay [5].
memDay [5] = memDay [6].
memDay [6] = memDay [7].
memDay [7] = memDay [8].
memDay [8] = memDay [9].
memDay [9] = day();

memMonth [0] = memMonth [1].
memMonth [1] = memMonth [2].
memMonth [2] = memMonth [3].
memMonth [3] = memMonth [4].
memMonth [4] = memMonth [5].
memMonth [5] = memMonth [6].
memMonth [6] = memMonth [7].
memMonth [7] = memMonth [8].
memMonth [8] = memMonth [9].
memMonth [9] = month();

}

Se Steg
Relaterade Ämnen

DIY Arduino-Fingerprint Garage dörröppnare

kommentar eller meddelande om du har frågor, detta är min första instructable och im inte klar med projektet än, men ja det gör arbete. mer bilder snartSteg 1: Hur det fungerarså hur hela projektet fungerar.1. kablarna från knappen garaget monteras p...

Arduino WiFi Garage dörröppnare

Någonsin komma hem i regnet för att hitta dörren låst och dina nycklar på annat håll? Nej? Tur du sedan! För dem som har haft en sådan upplevelse eller aldrig vill, kommer detta projekt låta dig öppna din garageport med nej men en smartphone/Tablet P...

Arduino RFID Garage dörröppnare

I detta projekt, kommer vi att använda kraften av RFID för att utnyttja din garageport som öppna system. Vi kommer till bron en anslutning i öppnaren växla via en RobotGeek Relay board, inleda dörröppningen som om du hade tryckt på knappen. Denna kod...

Android kontrollerade Garage dörröppnare

Mitt projekt är en Android kontrollerade Garage dörröppnare. Denna typ av projekt har gjort innan, men med omfattande hårdvara, sådan arduino styrelser, servrar, etc., och involverade komplicerad kodning och pengar. Jag gjorde det alla med minimal hå...

Android Garage dörröppnare - ingen Android-programmering, nr lödning behövs.

Uppdatering: du kan nu skapa din egen anpassade meny för att öppna garageporten och växla reläer och på med hjälp av pfodDesigner . Den fria pfodDesigner kommer att generera all kod för dig och pfodApp visas den färgglada menyn på din mobil. Se puls...

Garage dörröppnare

Använd en Raspberry Pi och en smartphone (eller laptop) för att öppna, stänga och övervaka en garageport. Att öppna och stänga dörren säkert genom att använda självsignerade certifikat installerat på familjemedlemmarnas mobiltelefoner. Om dörren är ö...

IOT Garage dörröppnare (Android och Intel Edison)

Detta instructable kommer att beskriva en metod som använder en Intel Edison och en Android-telefon/tablett app som garage dörren fjärrkontroll. Detta är egentligen inte en ny idé och jag är medveten om liknande projekt redan ute på nätet, men detta...

Garage dörröppnare och kamera

Mitt projekt använder Arduino Mega 2560, avstånd kollision undvikande sensor, echo avstånd sensor, relä växlar, RTC klocka och trådbunden anslutning till garage dörröppnare. Jag kan övervaka status för garageporten, Visa video kamera, öppna/stänga dö...

IPhone Garage dörröppnare (uppdaterad!)

UPDATED!Bytte jag till ett 12 volts relä, lagt till en projekt låda och uppgraderade auto reläet bort receptet. Joy.Hej.Jag skäms lite över denna hacka, eftersom den använder mestadels befintlig teknik, men jag skall lägga upp den ändå för alla ära o...

Bluetooth Garage dörröppnare

Detta instruerar kan Detaljer hur man ställer in din egen Bluetooth kontrollerad garage dörröppnare.Steg 1: Reservdelslista För detta projekt behöver du flera delar.-Hjärtat i projektet är Arduino Uno (min preferens kan du anpassa din egen micro cont...

FJR1300 Integrerade Genie GM3T-BX Garage dörröppnare

I detta instructable jag ska visa dig hur man sätter detta garage dörröppnare i kåpa däcket på din fjr var uppvärmd kontroll nob skulle gå. Jag valde den här panelen eftersom det är uppoffrande. Men om du vill placera den någon annanstans, det borde...

Installera ett Garage dörröppnare Wired till motorcykel Hi-Beam

jag var trött på att gå och av min cykel att öppna och stänga garageporten varje gång jag åkte. Medan min fru och jag var bortrest hittade vi ett projekt på en återförsäljare som får dig att manövrera garagedörren via växeln Hej-beam. Det var $120 oc...

Installera ett Garage dörröppnare på din motorcykel

när jag flyttade in i min första huset jag var glad att äntligen få min motorcykel i ett garage. Jag köpte extra garage dörröppnare för att göra det bekvämare för lastbilen och en för varje cykel (fru Rider också). Problemet jag hade med detta är:A)...

Bluetooth Garage dörröppnare & bil förrätt

Om du är som mig, du nästan alltid bära telefonen eller är vanligt på en dator. Jag tycker det ofta mer praktiskt när jag kan interagera med sakerna omkring mig som garageportar, bil förrätt, sprinkler, elektriska filtar, julpynt, etc. via min telefo...

DIY Smart Garage dörröppnare

Jag vet att du har fått 5 minuter på vägen och frågade dig själv, "gjorde jag stänga garageporten?".Nu, istället för att vrida runt eller lämnar ditt garage och hus sårbara för tjuvar, kan du kontrollera och stänga den med telefonen med ditt val...

ESP8266 Garage dörröppnare

!!!!!!!!! Varning det kommer att svänga om du träda andra tutorials!Jag försökte transistorn och också använder optisk-isolator ansluten till marken men båda pull ESP för nära marken, shorts ut och kommer att hålla återställa sig själv. För de andra...

Spionera bil Garage dörröppnare :)

Jag kunde inte hitta ett bra ställe att hålla mitt garage dörröppnare. Solskärmar i min bil var tjockare än klämman på öppnaren, så jag lyfte klämman och provat olika ställen för att hålla öppnaren. Jag kom upp med idén om att ta bort elektroniken fö...

"2 Player" Garage dörröppnare

Jag är inte bara en gamer, jag är en gaming entusiasten. Jag föddes samma år som Pong, jag granska spel på Game Vortex och PlayStation illustreras även skapat och undervisade en Intro till videospel utveckling kurs på L.S.U. medan jag var en undergra...

Elektriska Imp Garage dörröppnare

Jag har tappat räkningen på hur många gånger har vi iväg på en resa bara för att vända tillbaka för att se om vi mindes att stänga garageporten. Detta "vänners kompatibla visar dig hur du ansluter den elektriska Imp till ditt garage dörröppnare, hur...