Remake van de Mosquito Killer(Arduino) (6 / 7 stap)

Stap 6: programmeren


Nu, alle hardware voeders is afgerond, moeten we bij programmering van het systeem.  Het programma is gewoon combineren de bestaande bibliotheek van DS18B en de RTC-module en wat veranderd. Als u DIY dit project wilt en uw doel te bereiken, hoeft u alleen te veranderen naar de volgende plaatsen.

Zie de foto een, u kunt de werktijd, huidige tijd en de temperatuur van de trigger in de eerste paar regels definiëren.

Voor de RTC-module moet u voor het initialiseren van het aan het instellen van de huidige tijd. Raadpleeg de afbeelding 1, in de Setup, het uitvoeren van de setDateDs1307(); Huidige tijd instellen in de RTC-module; deze functie is moet slechts één keer, nadat u het instellen van de huidige tijd wordt uitgevoerd, moet u om die lijn te commentariëren en opnieuw uploaden van het programma aan uw arduino. De RTC tijd ziet u in het deelvenster monitor.

Hier is de code van dit project, kunt u het downloaden van de bijlage in de hieronder, of gewoon simpelweg de code in te gaan de hieronder aan uw Arduino IDE, en uploaden naar de crowduino.

#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 / / de I2C adres van Tiny RTC
definiëren van de begintijd, bijvoorbeeld, ik wil controle start om 22:00:00
#define STA_HOUR 22
#define STA_MINUTE 00
#define STA_SECOND 0
define de eindtijd, niet meer wordt gecontroleerd om 6:30:00
#define END_HOUR 6
#define END_MINUTE 30
#define END_SECOND 0

definiëren van de huidige tijd, kunt u de huidige tijd hier
#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

definiëren van de trigger-temperatuur, alleen de temperatuur hoger dan 22, het Relais wordt geactiveerd in de tijd opgeven
#define TRIGGER_TEMPERATURE 22

Privacy ds(14);  op pin 14 voor temperatuur
Boole-vlag;   Naar recorde de staat van de temperatuursensor

byte seconde, minuut, uur, dayOfWeek, dayOfMonth, maand, jaar;
lange staTotalSecond, endTotalSecond, currentTotalSecond;
Normale decimale getallen omzetten in binary coded decimal
byte decToBcd(byte val)
{
retourneren ((val/10 * 16) + (val % 10));
}
Binary coded decimal converteren naar gewone decimale getallen
byte bcdToDec(byte val)
{
retourneren ((val/16 * 10) + (val % 16));
}

VOID Setup {}
Wire.begin();
Serial.begin(19200);
vlag = true;
staTotalSecond = long(STA_HOUR) * 3600 + long(STA_MINUTE) * 60 + lange (STA_SECOND); //to caculate de totale seconden
Serial.println(staTotalSecond);

endTotalSecond = long(END_HOUR) * 3600 + long(END_MINUTE) * 60 + lange (END_SECOND); //to caculate de totale seconden
Serial.println(endTotalSecond);

definiëren van de relais pinnen, het schild van de estafette hebben 4 Relais
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(); Huidige tijd instellen in de RTC-module,
Deze code is alleen nodig een runtime, na het instellen van de huidige tijd met succes, deze lijn pleidooien commentaar.

}
void loop
{
float temperatuur;
getDateDs1307 (); //get de tijdgegevens van tiny RTC
currentTotalSecond = long(hour) * 3600 + long(minute) * 60 + long(second);
Serial.println(currentTotalSecond);

Als (currentTotalSecond > endTotalSecond & & currentTotalSecond < staTotalSecond) / / om te beoordelen of de huidige tijd in de looptijd van de instelling
{
digitalWrite (5, laag); //relay uit
}
anders
{
temperatuur = getTemperature ("c"); //to krijgen de teperature
Als (vlag)
{
Serial.println(Temperature);
if(Temperature > TRIGGER_TEMPERATURE) //if temperatuur hoger dan het instellen van temperatuur, Relais op
{
digitalWrite (5, hoog), //relay op
}
anders
{
digitalWrite (5, laag); //relay uit
}
}
}
vertraging (60000); //detect de tijd en de temperatuur elke 60 seconden
}

Stel de tijd currnt, de tweede, minuut & uur omzetten in het juiste moment, functie
VOID setDateDs1307()
{
tweede = 00;
Minute = 51;
uur = 10;
dayOfWeek = 5;
dayOfMonth = 28;
maand = 2;
jaar = 13;
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(decToBcd(0));
Wire.write(decToBcd(Second));    0 tot bits 7 begint de klok
Wire.write(decToBcd(Minute));
Wire.write(decToBcd(hour));      Als u wilt dat 12 uur am/pm moet u instellen
bit 6 (ook de noodzaak om te veranderen van readDateDs1307)
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(Year));
Wire.endTransmission();
}

Functie krijgt van de datum en tijd van de ds1307 en afgedrukt resultaat
VOID getDateDs1307()
{
Reset de aanwijzer register
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(decToBcd(0));
Wire.endTransmission();
Wire.requestFrom (DS1307_I2C_ADDRESS, 7);
tweede = bcdToDec(Wire.read() & 0x7f);
minuten = bcdToDec(Wire.read());
uur = bcdToDec(Wire.read() & 0x3f);  Wilt wijzigen van deze instelling als 12 uur am/pm
dayOfWeek = bcdToDec(Wire.read());
dayOfMonth = bcdToDec(Wire.read());
maand = bcdToDec(Wire.read());
jaar = bcdToDec(Wire.read());
Serial.Print (uur, DEC);
Serial.Print(":");
Serial.Print (minuut, DEC);
Serial.Print(":");
Serial.Print (tweede, DEC);
Serial.Print("");
Serial.Print (maand, DEC);
Serial.Print("/");
Serial.Print (dayOfMonth, DEC);
Serial.Print("/");
Serial.Print(Year,DEC);
Serial.Print("");
Serial.println();
Serial.Print ("dag van de week:");
}

krijgen van de temperatuur, de paremeter is een char, als het gelijk is aan 'f', fahrenheit, anders terugkeer celsius terugkeren
float getTemperature(char unit)
{
byte i;
byte aanwezig = 0;
byte type_s = 0;
bytegegevens [12];
byte addr [8];
zweven celsius, fahrenheit;

Als (! ds.search(addr)) {}
Serial.println ("geen meer adressen.");
Serial.println();
DS.reset_search();
delay(250);
vlag = false;
keren 0;
}
anders
vlag = true;

Als (OneWire::crc8 (addr, 7)! = addr[7]) {}
Serial.println ("CRC is niet geldig!");
terug 2;
}
Serial.println();

de eerste ROM byte aangeeft welke chip
schakelaar (addr[0]) {}
Case 0x10:
type_s = 1;
breken;
Case 0x28:
type_s = 0;
breken;
Case 0x22:
type_s = 0;
breken;
standaard:
terug 3;
}

DS.reset();
DS.Select(addr);
DS.write(0x44,1);         Start conversie, met kracht van de parasiet op eind

delay(1000);     Misschien volstaat 750ms, misschien niet
wij hier een ds.depower() zou kunnen doen, maar het resetten zal verzorgen.

huidige = ds.reset();
DS.Select(addr);
DS.write(0xBE);         Lees Kladblok
voor (ik = 0; ik < 9; i ++) {/ / moeten we 9 bytes
gegevens [i] = ds.read();
}
de gegevens converteren naar werkelijke temperatuur

unsigned int rauwe = (gegevens [1] << 8) | gegevens [0];
Als (type_s) {}
ruwe = rauwe << 3; 9 bits resolutie standaard
Als (gegevens [7] == 0x10) {}
Graaf blijven geeft volledige 12 bit resolutie
ruwe = (raw & 0xFFF0) + 12 - gegevens [6];
}
} else {}
byte cfg = (gegevens [4] & 0x60);
Als (cfg == 0x00) rauwe = rauwe << 3;  9 bit resolutie, 93.75 ms
anders als (cfg == 0x20) rauwe = rauwe << 2; 10 bit res, 187,5 ms
anders als (cfg == 0x40) rauwe = rauwe << 1; 11 bits res, 375 ms
Standaard is 12 bit resolutie, 750 ms conversietijd
}
Celsius = (zweven) rauwe / 16.0;
Fahrenheit = celsius * 1.8 + 32,0;
Als ('f' == eenheid)
retourneren fahrenheit;
anders
retourneren celsius;
}

Gerelateerde Artikelen

MOSQUITO KILLER TRAP

MOSQUITO KILLER TRAP

waarom te vernietigen onze gezondheid met behulp van VERVUILENDE mug insectenwerende middelen???WAAROM GENADE AAN ZULKE EEN VERVELEND SCHEPSEL DIE MENSEN VERNIETIGEN KAN TONEN???HIER IS EEN EFFECTIEVE OPLOSSINGEen verontreiniging gratis &ZEER EFFECTI
Het gebruik van de Module van de Camera van de OV7670 met Arduino?

Het gebruik van de Module van de Camera van de OV7670 met Arduino?

Hier introduceerden we één module van de camera van de OV7670 net gekocht online, met inbegrip van de mededeling van de cameramodule en Arduino UNO, met behulp van de manieren om te nemen van de foto via cameramodule, enzovoort. Dit is een cameramodu
Eenvoudige IR sensor van de nabijheid met Arduino

Eenvoudige IR sensor van de nabijheid met Arduino

Hallo jongens! In dit instructable ik zal je leren hoe te maken van een zeer eenvoudige nabijheidssensor met behulp van infrarood LEDs en Arduino.Na meerdere malen proberen om het te optimaliseren, kwam ik uiteindelijk met iets dat is heel simpel e n
Het gebruik van de IR-Sensor met behulp van Op-amp en Arduino

Het gebruik van de IR-Sensor met behulp van Op-amp en Arduino

wat is infrarood (IR)? Infra-rood is een elektromagnetische golf whos golflengte tussen 0,75 micron tot 1000 micron (1 micron = 1µm). Omdat Infrarood bereik van zichtbaar licht, zien we IR niet echt met blote oog. Er is echter een methode om te "zien
Ontvangen en verzenden van gegevens tussen Attiny85 (Arduino IDE 1.06) UPDATED Nov 2015

Ontvangen en verzenden van gegevens tussen Attiny85 (Arduino IDE 1.06) UPDATED Nov 2015

Ik heb veel moeite met het verzenden van RF gegevens tussen twee Attiny85-chips, dus ik dacht dat het zou nuttig zijn dat als ik even uitleggen hoe ik het deed. Er zijn een aantal van dergelijke projecten wordt beschreven op het internet, maar toch,
Remote Controlled LED met behulp van HC-05 Bluetooth Arduino en mobiele telefoon App

Remote Controlled LED met behulp van HC-05 Bluetooth Arduino en mobiele telefoon App

Technologie vordert in razend tempo, iedereen van ons heeft slimme telefoons nu-een-dag, er zijn cool apps die laten we blijven in contact met onze vrienden en familie, krijgen van de meest recente informatie over het weer of verblijf-bijgewerkt met
Android Aplication voor Robot controle met behulp van HC-05 en Arduino (Android Studio)

Android Aplication voor Robot controle met behulp van HC-05 en Arduino (Android Studio)

Hallo iedereen, dit keer zal ik u tonen hoe om te controleren van de robot met behulp van uw telefoon, volg deze instructie zorgvuldig. Eigenlijk, is dit project nog in ontwikkeling.Stap 1: Wat wij nodig hebben voor robotVoordat we naar androïde toep
Het gebruik van de DS18B20 temperatuursensor - Arduino tutorial Arduino Tutorial

Het gebruik van de DS18B20 temperatuursensor - Arduino tutorial Arduino Tutorial

In deze tutorial leert u hoe met de DS18B20 temp sensor met Arduino.De temperatuur moet worden afgedrukt op de seriële monitor van Codebender of de Arduino IDE.Presentatie Video:Voordat we laten we beginnen Zie meer informatie over deze sensor.Stap 1
Uitzetten van de temperatuur met Arduino Esplora en MakerPlot

Uitzetten van de temperatuur met Arduino Esplora en MakerPlot

Dit is een eenvoudige setup om te laten zien hoe sensoren op het bord van de Arduino Esplora kunnen worden uitgezet in MakerPlotStap 1: Krijg de Esplora van bestuurDe Arduino Esplora is beschikbaar op de meeste radio shack winkels en kost ongeveer $6
Hoe maak je een tekenreeks van LED's voor arduino parallel

Hoe maak je een tekenreeks van LED's voor arduino parallel

dit instructable zal u tonen hoe te maken van uw eigen reeks van LED's die zijn aangesloten parallel. De arduino board kan niet leveren genoeg kracht om een tekenreeks van LED's in serie zonder een relais of transistor lopen, maar een dat is bedraad
Control een elektronisch deadbolt van Schlage met een arduino!

Control een elektronisch deadbolt van Schlage met een arduino!

Dit instructable begeleidt u stapsgewijs door het proces van de ontmanteling en een Schlage elektronisch deadbolt te hacken om de besturing van het met een arduino.Stap 1: Aankoop van de sluis en uitpakken ik heb de mijne op verkoop voor $99 op Lowe'
De opname met behulp van ultrasone sensor met arduino

De opname met behulp van ultrasone sensor met arduino

Ik heb in de IOT ruimte voor een flink aantal maanden en proberen om dingen te integreren met Arduino board, onlangs kwam ik ultrasone sensor, het is interessant. Dus ik dacht van het creëren van een klein project. Het doel van het project is het vas
Vastleggen van beweging met een Arduino versnellingsmeter w XBee Comms /

Vastleggen van beweging met een Arduino versnellingsmeter w XBee Comms /

***************************************BIJGEWERKT 10 JUNI 2014 ***Zoals beloofd, is dit Instructable bijgewerkt met een hoofdstuk over de mededeling van de XBee. Daarnaast zal een nieuwe Instructable snel betreffende de ontwikkeling van het rover-ged
Het wijzigen van de snelheid van het knipperen van LED potentiometer met arduino uno.

Het wijzigen van de snelheid van het knipperen van LED potentiometer met arduino uno.

Deze video bevat sets van opdrachten en codes schrijven die in staat stellen een potentiometer te veranderen van het tempo van het knipperen van LED in arduino uno bord met '123d schakelingen' online open platform voor circuit maken, programma compil