Remake Mosquito Killer(Arduino) (6 / 7 steg)

Steg 6: programmering



Nu, all hårdvara materialen har avslutats, måste vi till programmering för systemet. Programmet är bara helt enkelt kombinera det befintliga biblioteket för DS18B och RTC-modulen och göra några förändrats. Om du vill att DIY detta projekt och nå ditt syfte, behöver du bara ändra flera ställen.

Se bild en, kan du definiera arbetstiden, aktuell tid och avtryckaren temperatur i de första flera linjerna.

För RTC modulen måste du initiera den till inställning av dess nuvarande tid. Vänligen se bild 1, i setup(), kör setDateDs1307(); Ange aktuell tid till RTC modul; denna funktion är bara behöver köra en gång, efter du ställa in aktuell tid, måste du kommentera denna linje och lägga upp programmet till din arduino. Du kan se RTC tiden i Övervakningsfönstret.

Här är koden för detta projekt, du kan ladda ner bilagan i nedan, eller bara helt enkelt klara koden i den nedan till din Arduino IDE, och belasta upp till crowduino.

#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 / / I2C adress lilla RTC
Ange starttid, till exempel jag vill övervakning start kl 22:00:00
#define STA_HOUR 22
#define STA_MINUTE 00
#define STA_SECOND 0
definiera sluttiden, sluta övervaka på 6:30:00
#define END_HOUR 6
#define END_MINUTE 30
#define END_SECOND 0

definiera den aktuella tiden, kan du konfigurera den aktuella tiden här
#define CURRENT_SECOND 0
#define CURRENT_MINUTE 0
#define CURRENT_HOUR 12
#define CURRENT_DAYOFWEEK 3
#define CURRENT_DAYOFMONTH 16
#define CURRENT_MONTH 3
#define CURRENT_YEAR 2013

definiera utlösaren temperaturen, bara temperaturen högre än 22, reläet kommer att utlösa i ange tid
#define TRIGGER_TEMPERATURE 22

OneWire ds(14); på stift 14 för temperatur
boolesk flagga; Till recorde statligt av temperaturgivare

byte sekund, minut, timme, dayOfWeek, dayOfMonth, månad, år.
lång staTotalSecond, endTotalSecond, currentTotalSecond;
Konvertera normala decimaltal till binary coded decimal
byte decToBcd(byte val)
{
tillbaka ((val/10 * 16) + (val % 10));
}
Konvertera binary coded decimal till normala decimaltal
byte bcdToDec(byte val)
{
tillbaka ((val/16 * 10) + (val % 16));
}

void setup() {
Wire.BEGIN();
Serial.BEGIN(19200);
flagga = sant;
staTotalSecond = long(STA_HOUR) * 3600 + long(STA_MINUTE) * 60 + lång (STA_SECOND); //to caculate de totala sekunderna
Serial.println(staTotalSecond);

endTotalSecond = long(END_HOUR) * 3600 + long(END_MINUTE) * 60 + lång (END_SECOND); //to caculate de totala sekunderna
Serial.println(endTotalSecond);

definiera relä stift, relä sköld har 4 reläer
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);

digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);

setDateDs1307(); Ange aktuell tid till modulen RTC
denna kod är bara behöver köra en gång, när du har nuvarande tid framgångsrikt, grunder kommentar denna linje.

}
void loop()
{
float temperatur;
getDateDs1307 (); //get tidsdata från tiny RTC
currentTotalSecond = long(hour) * 3600 + long(minute) * 60 + long(second);
Serial.println(currentTotalSecond);

om (currentTotalSecond > endTotalSecond & & currentTotalSecond < staTotalSecond) / / för att bedöma huruvida den aktuella tiden på sikt för inställning
{
digitalWrite (5, låg), //relay av
}
annat
{
temperatur = getTemperature ('c'); //to få temperatur
om (flagga)
{
Serial.println(temperature);
IF(temperature > TRIGGER_TEMPERATURE) //if temperatur högre än ställa in temperaturen, relä på
{
digitalWrite (5, hög), //relay på
}
annat
{
digitalWrite (5, låg), //relay av
}
}
}
fördröjning (60000); //detect tiden och temperaturen varje 60 sekunder
}

Funktion för att ställa in tiden i currnt, ändra andra & minut och timme till rätt tid
void setDateDs1307()
{
för det andra = 00.
minut = 51.
timme = 10;
dayOfWeek = 5;
dayOfMonth = 28;
månad = 2;
år = 13.
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(decToBcd(0));
Wire.write(decToBcd(Second)); 0 till stycke 7 börjar klockan
Wire.write(decToBcd(Minute));
Wire.write(decToBcd(Hour)); Om du vill ha 12 timmars am/pm måste du ange
bit 6 (också behovet av att ändra readDateDs1307)
Wire.write(decToBcd(DAYOFWEEK));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(Year));
Wire.endTransmission();
}

Funktion för att får datum och tid från ds1307 och skriver ut resultatet
void getDateDs1307()
{
Återställ registret pekaren
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(decToBcd(0));
Wire.endTransmission();
Wire.requestFrom (DS1307_I2C_ADDRESS, 7);
för det andra = bcdToDec(Wire.read() & 0x7f);
minut = bcdToDec(Wire.read());
timme = bcdToDec(Wire.read() & 0x3f); Behöver ändra detta om 12 timmars am/pm
dayOfWeek = bcdToDec(Wire.read());
dayOfMonth = bcdToDec(Wire.read());
månad = bcdToDec(Wire.read());
år = bcdToDec(Wire.read());
Serial.Print (timme, DEC).
Serial.Print(":");
Serial.Print (minut, DEC).
Serial.Print(":");
Serial.Print (andra, DEC);
Serial.Print("");
Serial.Print (månad, DEC).
Serial.Print("/");
Serial.Print (dayOfMonth, DEC);
Serial.Print("/");
Serial.Print(Year,dec);
Serial.Print("");
Serial.println();
Serial.Print ("dag i veckan:");
}

få temperaturen, paremeter är en röding, om det lika med "f", återvänder fahrenheit, annars avkastning celsius
float getTemperature(char unit)
{
byte i.
byte närvarande = 0;
byte type_s = 0;
byte data [12].
byte addr [8].
flyta celsius, fahrenheit;

om (! ds.search(addr)) {
Serial.println ("inga fler adresser.");
Serial.println();
DS.reset_search();
Delay(250);
flagga = false;
Return 0;
}
annat
flagga = sant;

om (OneWire::crc8 (addr, 7)! = addr[7]) {
Serial.println ("CRC är inte giltig!");
returnera 2.
}
Serial.println();

den första ROM byten indikerar vilket chip
Switch (addr[0]) {
fall 0x10:
type_s = 1;
bryta;
fall 0x28:
type_s = 0;
bryta;
fall 0x22:
type_s = 0;
bryta;
standard:
returnera 3.
}

DS.Reset();
DS.Select(addr);
DS.write(0x44,1); Starta konvertering, med parasit driver på i slutet

Delay(1000); kanske är 750ms nog, kanske inte
Vi skulle göra en ds.depower() här, men Återställ tar hand om den.

Nuvarande = ds.reset();
DS.Select(addr);
DS.write(0xBE); Läs Scratchpad
för (jag = 0; jag < 9; i ++) {/ / vi behöver 9 byte
data [i] = ds.read();
}
konvertera data till faktisk temperatur

unsigned int rå = (data [1] << 8) | data [0];
om (type_s) {
rå = rå << 3. 9 bit upplösning standard
om (data [7] == 0x10) {
greve förbli ger full 12 bitars upplösning
rå = (rå & 0xFFF0) + 12 - data [6].
}
} annat {
byte cfg = (data [4] & 0x60);
om (cfg == 0x00) rå = rå << 3. 9 bit upplösning, 93.75 ms
annars om (cfg == 0x20) rå = rå << 2. 10 bitars res, 187.5 ms
annars om (cfg == 0x40) rå = rå << 1. 11 bitars res, 375 ms
standard är 12 bitars upplösning, 750 ms omvandlingstid
}
Celsius = (float) raw / 16,0;
Fahrenheit = celsius * 1,8 + 32,0;
om ("f" == enhet)
returnera fahrenheit;
annat
returnera celsius;
}

Se Steg
Relaterade Ämnen

MOSQUITO KILLER TRAP

varför förstöra vår hälsa med hjälp av förorenande MYGGMEDEL???VARFÖR VISA BARMHÄRTIGHET FÖR SÅDAN EN IRRITERER VARELSE SOM KAN FÖRSTÖRA MÄNNISKOR???HÄR ÄR EN EFFEKTIV LÖSNINGEn AVGASFRI &MYCKET EFFEKTIVMOSQUITO KILLER TRAPSteg 1: Att förbereda en mö...

Mosquito Killer

detta är en mycket enkel hopkok som jag kom upp med en dag. Det var ursprungligen tänkt för att vara ant mördare, men det gjorde dem bara ännu mer upprörd. Så jag försökte det på insekten som störde mig ännu mer än myror: myggor. OCH DET FUNGERADE! s...

Mygga dödande damm - snabbt &amp; billigt!

jag spånade upp detta projekt när jag fick attackerade ihjäl av myggor på min gräsmattan, i sommar.Det visar sig grannarna hade lämnat en soptunna fylld med vatten när de flyttade. Min man dumpad vattnet, men skadan var redan skedd och buggers surrad...

400V Stun stafettpinnen!

jag var så irriterad på min seatmate som jag lovade att pumpa 400 Volt, 0,04 milliampere, 16 watt beräknade i dem i DC form. Det hela började när de började detta ganska förolämpande låt som har gått runt vår del av isle nyligen, så jag omprövat modi...

Stirlingmotor från avfall

Det är en stor möjlighet att publicera mitt projekt på Instructables. Jag är så uppspelt.Jag har gjort Stirlingmotor med hjälp av plast avfall och kall dryck burkar.Detta är min hobby att göra nya saker från de fasta avfallet produkterna eftersom jag...

DIY luft Kylare / renare

Den DIY svalare / renareBakgrund:I mitt land - Singapore, är det alla år sommaren med inga andra säsong. Du kan tänka dig temperatur når 30C eller 86F lätt under dagen. För det första, det är jävla het! För det andra, mygga raser väl under monsun våt...

Arduino 8 AC Outlet (plug-in) Timer / Vampire Killer

En enhet som ständigt använder makt, även när inte i använda benämns ofta som "Vampire" anordning, eftersom det alltid suger kraft.Saker som mobiltelefon laddare, iPod/iPad/iPhone laddare, Laptop power supplies/laddare etc. är de vanligaste exem...

Arduino Mosquito Repeller

I detta instructable jag ska visa dig hur man bygger ett mosquito repeller med en Arduino. Repeller är i form av en sköld som ansluts till Arduino styrelsen och frekvensen av repeller kan ändras lätt.Detta projekt är perfekt om ni camping eller vandr...

TV kill strömbrytare, Arduino Tv-B-Gone!

Så, vad är det här?! och vad gör det?!TV-B-Gone är en universell fjärrkontroll, som stänger av eller stängs de flesta TV-apparater, det har en hel del TV stänga koder, så det vidarebefordrar dessa koder via IR-Led, och det kan ta upp till 2 minuter a...

LED Dawn / Sunrise väckarklocka, nattlampa & säkerhet ljus - Arduino kompatibel

som nätterna förlängs successivt under hösten 2011, jag upptäckt glädjen med Arduino och trodde att det skulle vara ett bra sätt att genomföra något som jag har velat ha en lång stund - ett skonsamt sätt att vakna upp på en vintermorgon. Tyvärr, det...

Arduino Airsoft torn

National Robotics vecka Robot tävling: åldersgruppen 13-18Om du kämpar i en airsoft strid eller försvarar ditt skrivbord på jobbet, en airsoft torn är ett måste ha. I detta Instructable kommer jag förklara hur man gör en relativt billig och enkel tor...

24V Motor Controller för $24, RC & Arduino

Som många människor, har jag velat använda basen på en elrullstol för fjärrkontrollen projekt. Dock rätt motor styrenheter är dyra, och jag tänkte att det måste finnas en billigare lösning. Jag ursprungligen köpte borstad råden (elektronisk Hastighet...

Radar (joystick kontroll) via Labview(+Arduino)

I själva verket min enhet är remake av denna radar: http://howtomechatronics.com/projects/arduino-rada...Men jag tror att göra en remake är värt det, eftersom även trots min version inte är den snygg, jag använder inte sådana fattiga "teknik" so...

Hemmagjord klocka med Arduino

Idag kommer jag visa dig hur man gör en hemmagjord klocka med en Arduino!Steg 1: Material + inställningar för ArduinoMaterial--SMA420564 sju Segment display-Vid minst 12 Sunfounder startkablar-Arduino Uno-Bredboard-2 knappar-2 220 Ohm motstånd-Källan...

Spåra din bil med en Arduino-baserad Lojack

Bilstölder är en verklig dra! Öka dina chanser att få tillbaka din bil genom att installera denna enkla Arduino-baserad tracker i bilen.Detta projekt är ganska enkel, och skulle vara ett bra projekt för nya Arduino programmerare letar efter något lit...

Avancerade Mosquito Repeller och Swatter

Hej, i denna tutorial ska jag visa dig hur man gör en elektronisk mosquito repeller och swatter kontrolleras av arduino. När du sitter nära ditt skrivbord vill ingen höra smällande ljud av swatter men en repeller det skulle fungera bra och om du är l...

DIY uppladdningsbara elektroniska Mosquito Repeller

Hej alla! I detta Instructable kommer jag att visa dig hur man gör egna uppladdningsbara elektroniska mosquito repeller!En elektronisk mosquito repeller är ganska praktiskt, särskilt de som lever i varmt och fuktigt klimat, där myggor är mycket vanli...

Intellekten Edison Arduino följetong till Host process seriell kommunikation

Den Intel Edison Arduino breakout är en linux-baserad mini dator som kan programmeras med hjälp av Arduino IDE och ramen. Den kan också programmeras som någon annan Linuxsystem i C/C++, Python, node.js och många andra språk.Hur dess Arduino programme...

Arduino + AD9850 30MHZ DDS Signal Generator i 12$

An Precession Signal generator är mycket enkel och prisvärd gör med hjälp av en arduino och dds synthesizer (ad9850). Dess världens första minsta bärbara signalgenerator bygga.Kan du göra anständiga 0-30 MHZ frekvens signalgenerator endast i 12$. Om...