Refaire le moustique Killer(Arduino) (6 / 7 étapes)

Étape 6: programmation

Maintenant, toutes les étoffes de matériel a été fini, nous avons besoin à la programmation du système.  Le programme est tout simplement de combiner la bibliothèque existante de DS18B et le module RTC et faire un peu changé. Si vous voulez bricolage de ce projet et atteindre votre but, il vous suffit de changer plusieurs endroits.

Voir l’image un, vous pouvez définir le temps de travail, l’heure actuelle et la température de déclenchement dans les premières lignes de plusieurs.

Pour le module RTC, vous devez initialiser à réglage de l’heure actuelle. S’il vous plaît voir la photo 1, dans le setup(), exécutez le setDateDs1307() ; A l’heure actuelle le module RTC ; Cette fonction est seulement besoin d’exécuter une fois, après avoir réglé l’heure actuelle, vous devrez commenter cette ligne et re-télécharger le programme à votre arduino. Vous pouvez voir le temps RTC dans la fenêtre Moniteur.

Voici le code de ce projet, vous pouvez télécharger la pièce jointe dans le ci-dessous, ou tout simplement composer simplement le code dans le dessous à votre IDE Arduino et vers la crowduino.

#include « Wire.h »
#define DS1307_I2C_ADDRESS 0x68 / / l’adresse I2C du CCF minuscule
définir l’heure de début, par exemple, je veux suivi démarrer à 22:00
#define STA_HOUR 22
#define STA_MINUTE 00
#define STA_SECOND 0
définir l’heure de fin, cesser de surveiller à 06:30
#define END_HOUR 6
#define END_MINUTE 30
#define END_SECOND 0

définir l’heure actuelle, vous pouvez configurer l’heure ici
#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

définir la température de déclenchement, seulement la température supérieure à 22, le relais se déclenche dans le temps de spécifier
#define TRIGGER_TEMPERATURE 22

OneWire ds(14) ;  sur la broche 14 pour température
indicateur booléen ;   Pour recorde l’état de la sonde de température

octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ;
long staTotalSecond, endTotalSecond, currentTotalSecond ;
Convertir des nombres décimaux normales en décimale codée en binaire
decToBcd(byte val) octets
{
Return ((val/10 * 16) + (10 % de val)) ;
}
Convertir de décimale codée en binaire en nombres décimaux normal
bcdToDec(byte val) octets
{
Return ((val/16 * 10) + (val % 16)) ;
}

void setup() {}
Wire.Begin() ;
Serial.Begin(19200) ;
drapeau = true ;
staTotalSecond = long(STA_HOUR) * 3600 + long(STA_MINUTE) * 60 + long (STA_SECOND); //to caculate le total des secondes
Serial.println(staTotalSecond) ;

endTotalSecond = long(END_HOUR) * 3600 + long(END_MINUTE) * 60 + long (END_SECOND); //to caculate le total des secondes
Serial.println(endTotalSecond) ;

définir les axes de relais, le bouclier de relais ont des 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() ; A l’heure actuelle le module RTC,
Ce code est uniquement besoin d’exécuter une fois, après avoir réglé le courant du temps avec succès, plaids commentaire cette ligne.

}
void loop()
{
température du flotteur ;
getDateDs1307 (); //get les données de temps de minuscule RTC
currentTotalSecond = long(hour) * 3600 + long(minute) * 60 + long(second) ;
Serial.println(currentTotalSecond) ;

Si (currentTotalSecond > endTotalSecond & & currentTotalSecond < staTotalSecond) / / pour juger si l’heure actuelle dans l’expression de paramètre
{
digitalWrite (5, LOW); //relay off
}
d’autre
{
température = getTemperature ("c"); //to obtenir la température
Si (drapeau)
{
Serial.println(temperature) ;
if(temperature > TRIGGER_TEMPERATURE) //if température supérieure à réglage de température, relais sur
{
digitalWrite (5, HIGH); //relay sur
}
d’autre
{
digitalWrite (5, LOW); //relay off
}
}
}
retard (60000); //detect l’heure et la température de chaque 60 secondes
}

Fonction pour régler l’heure currnt, modifiez la seconde & la minute et l’heure au bon moment
Sub setDateDs1307()
{
deuxième = 00 ;
minute = 51 ;
heure = 10 ;
dayOfWeek = 5 ;
dayOfMonth = 28 ;
mois = 2 ;
année = 13 ;
Wire.beginTransmission(DS1307_I2C_ADDRESS) ;
Wire.Write(decToBcd(0)) ;
Wire.Write(decToBcd(second)) ;    0 à bit 7 commence l’horloge
Wire.Write(decToBcd(minute)) ;
Wire.Write(decToBcd(Hour)) ;      Si vous voulez 12 heures am/pm, vous devez définir
bit 6 (également la nécessité de changer de readDateDs1307)
Wire.Write(decToBcd(DayOfWeek)) ;
Wire.Write(decToBcd(DayOfMonth)) ;
Wire.Write(decToBcd(month)) ;
Wire.Write(decToBcd(Year)) ;
Wire.endTransmission() ;
}

Fonction pour obtient la date et l’heure de la ds1307 et imprime le résultat
Sub getDateDs1307()
{
Réinitialiser le registre de pointeur
Wire.beginTransmission(DS1307_I2C_ADDRESS) ;
Wire.Write(decToBcd(0)) ;
Wire.endTransmission() ;
Wire.requestFrom (DS1307_I2C_ADDRESS, 7) ;
seconde = bcdToDec(Wire.read() & 0x7f) ;
minute = bcdToDec(Wire.read()) ;
heure = bcdToDec(Wire.read() & 0x3f) ;  Besoin de changer cette option si 12 heures am/pm
dayOfWeek = bcdToDec(Wire.read()) ;
dayOfMonth = bcdToDec(Wire.read()) ;
mois = bcdToDec(Wire.read()) ;
an = bcdToDec(Wire.read()) ;
Serial.Print (heure, DEC) ;
Serial.Print(":") ;
Serial.Print (minute, DEC) ;
Serial.Print(":") ;
Serial.Print (second, DEC) ;
Serial.Print("") ;
Serial.Print (mois, DEC) ;
Serial.Print("/") ;
Serial.Print (dayOfMonth, DEC) ;
Serial.Print("/") ;
Serial.Print(Year,DEC) ;
Serial.Print("") ;
Serial.println() ;
Serial.Print ("jour de la semaine:") ;
}

obtenir la température, le paramètre est un char, si elle est égale à « f », retournez celsius fahrenheit, sinon retour
flotteur getTemperature(char unit)
{
octet i ;
octet présent = 0 ;
type_s octets = 0 ;
octet de données [12] ;
addr octet [8] ;
flotteur de celsius, fahrenheit ;

Si (! ds.search(addr)) {}
Serial.println ("No more addresses.") ;
Serial.println() ;
DS.reset_search() ;
Delay(250) ;
drapeau = false ;
return 0 ;
}
d’autre
drapeau = true ;

Si (OneWire::crc8 (addr, 7)! = {addr[7])}
Serial.println (« le CRC est non valide!") ;
retour 2 ;
}
Serial.println() ;

le premier octet ROM indique quel puce
commutateur (addr[0]) {}
cas 0 x 10 :
type_s = 1 ;
rupture ;
cas 0 x 28 :
type_s = 0 ;
rupture ;
cas 0 x 22 :
type_s = 0 ;
rupture ;
par défaut :
retour 3 ;
}

DS.Reset() ;
DS.Select(addr) ;
DS.Write(0x44,1) ;         lancer la conversion, avec puissance parasite sur à la fin

Delay(1000) ;     750ms est peut-être assez, peut-être pas
Nous pourrions faire un ds.depower() ici, mais la réinitialisation prendra soin de lui.

présent = ds.reset() ;
DS.Select(addr) ;
DS.Write(0xBE) ;         Bloc-notes de lecture
pour (i = 0; j’ai < 9; i ++) {/ / nous avons besoin de 9 octets
données [i] = ds.read() ;
}
convertir les données à la température actuelle

raw unsigned int = (données [1] << 8) | Data [0] ;
Si {(type_s)
brut = raw << 3 ; défaut de 9 bit résolution
Si (données [7] == 0 x 10) {}
comte restent donne plein 12 bit résolution
brut = (brut & 0xFFF0) + 12 - données [6] ;
}
} else {}
cfg octet = (données [4] & 0 x 60) ;
Si (cfg == 0 x 00) brut = raw << 3 ;  9 bit résolution, 93,75 ms
ElseIf (cfg == 0 x 20) brut = raw << 2 ; 10 bit res, 187,5 ms
ElseIf (cfg == 0 x 40) brut = raw << 1 ; 11 bit res, 375 ms
valeur par défaut est 12 bits de résolution, temps de conversion 750 ms
}
Celsius = (float) brut / 16,0 ;
Fahrenheit = celsius * 1,8 + 32.0 ;
Si (« f » == unité)
retour fahrenheit ;
d’autre
retour celsius ;
}

Articles Liés

Moustique Killing Ovitrap

Moustique Killing Ovitrap

Ce petit appareil est bon marché à créer et a été utilisé par les États-Unis militaires sur des bases dans des zones impaludées avec des résultats fantastiques. Il existe plusieurs types de Ovitraps, vous pouvez créer, certaines sont plus faciles que
Arduino 8 A.C. prise (plug) minuterie / Vampire Killer

Arduino 8 A.C. prise (plug) minuterie / Vampire Killer

Un dispositif qui est constamment à l'aide de puissance, même quand pas en service est communément appelé un dispositif de « Vampire », parce qu'il est toujours sucer puissance.Des choses comme les chargeurs de téléphone portable, iPhone/iPad/iPod ch
Arduino moustiques Repeller

Arduino moustiques Repeller

Dans ce instructable je vais vous montrer comment créer un répulsif de moustique en utilisant un Arduino. Le réflecteur est sous la forme d'un bouclier qui se branche sur la carte Arduino et la fréquence de la réflecteur peut être modifiée facilement
Système d’arrosage automatique avec sonde capacitive et Arduino sur le bon marché (et je le pense)

Système d’arrosage automatique avec sonde capacitive et Arduino sur le bon marché (et je le pense)

Avertissement : Je ne suis pas un ingénieur électronicien, alors je ne peux pas offrir aucune garantie pour la conception (beaucoup moins pour votre implémentation). Je ne connais que la solution présentée a fonctionné pour moi pendant au moins 5-6 m
Comment faire de l’écluse de Knock pour Arduino Starter Kit

Comment faire de l’écluse de Knock pour Arduino Starter Kit

Dans ce instructable je va vous montrer une vidéo sur comment j'ai fait un verrou de frapper à l'aide de la trousse de démarrage arduino uno. J'ai rencontrer quelques problèmes le long du chemin, mais trouvé une solution après avoir réfléchi il. Il s
Comment faire le plus simple Compatible Arduino Breadboard Sanguino-équivalent... JAMAIS ! & Comment télécharger croquis directement à elle!!

Comment faire le plus simple Compatible Arduino Breadboard Sanguino-équivalent... JAMAIS ! & Comment télécharger croquis directement à elle!!

Bon alors le titre est en effet un peu d'une bouchée lol!Ive été besoin de bricoler avec un désir de broches plus d'entrée/sortie que l'Arduino UNO et, de nos jours, l'ONU utilise un microcontrôleur Atmega328, & son limité à seulement environ 20 entr
Répulsif moustique avancé et tapette

Répulsif moustique avancé et tapette

Salut, dans ce tutoriel je vais vous montrer comment faire un moustique électronique répulsif et tapette contrôlé par arduino. Chaque fois que vous vous asseyez près de votre bureau personne ne voudrais entendre des craquements de tapette mais un rép
Contrôler un cafard avec Arduino pour moins de 30 $

Contrôler un cafard avec Arduino pour moins de 30 $

Il y a quelques années j'ai vu cafard contrôlé de la basse-cour cerveau smartphone, et il a juste soufflé mon esprit ! J'ai essayé d'obtenir ma mère de me laisser acheter, mais la mention de cafards lui convaincu du contraire. :) J'ai commencé à fair
Arduino alimenté véhicule autonome

Arduino alimenté véhicule autonome

A quelques mois retour j'ai commencé à jouer avec des microcontrôleurs Arduino comme un exercice d'apprentissage (et pour le plaisir) ; ce projet est l'aboutissement de cette. L'objectif du projet était de créer un véhicule qui peut naviguer de maniè
Télécommande Arduino DIY et véhicule RC Lego!!

Télécommande Arduino DIY et véhicule RC Lego!!

Mise à jour (29/08/13): lecteurs je vous remercie pour votre enthousiasme et genre remarques au sujet de ce projet ! Il a été un formidable voyage puisque j'ai commencé ce projet en mars, mais je suis très heureux avec le produit qui en résulte et l'
Écran LCD TV bricolage avec Arduino et Smart à distance

Écran LCD TV bricolage avec Arduino et Smart à distance

Dans les prochaines étapes suivantes, vous faire un bricolage « TV » avec le code pour une smart distant et en fait lire des vidéos et même éventuellement connecter la télécommande intelligente à la carte mère réelle.Matériaux :Feuille/miroirStabilis
Porte de garage téléphone contrôlée, propulsé par Intel Edison Billy & Arduino

Porte de garage téléphone contrôlée, propulsé par Intel Edison Billy & Arduino

Produits automatisés est devenue plus commune et des solutions qui sont bon marchées existe dans certaines zones, un exemple pourrait être couverte foudre ou automatisé des minuteries. Mais si vous voulez une porte de garage qui peut être ouvert avec
Répulsif moustique électronique Rechargeable bricolage

Répulsif moustique électronique Rechargeable bricolage

Hey tout le monde ! Dans ce Instructable je vais vous montrer comment faire vos propres répulsif moustique électronique rechargeable !Un répulsif à moustiques électronique est assez pratique, surtout ceux qui vivent dans des climats chauds et humides
Beeduino : Maison Arduino Uno pour 6 $

Beeduino : Maison Arduino Uno pour 6 $

Hé ce que le coût de cette carte bleue bidule, « Arduino » je pense que son nom?? Eh bien, le coût est environ 30 $ par chambre. Woah 30 $ pour seulement ce circuit simple. Quel est si spécial dedans ? Eh bien de rien en fait. C'est juste une platefo