Projet d’enregistreur de données (5 / 5 étapes)

Étape 5: Le Code

C’est j’espère que la dernière étape. Le code devrait lire le capteur de température et de la cellule puis affichent les valeurs sur l’écran LCD et les enregistrer dans la carte SD. Il y a quelques codes de dépannage qui peuvent s’afficher sur le terminal série si quelque chose ne va pas. Lorsque la température est plus chaude le rétro-éclairage doit devenir rouge, quand la salle est plus lumineuse le rétro-éclairage doit virer au bleu, si il fait chaud et lumineux, il devrait être violet. Froid et l’obscurité doivent être noires.

Le code est très salissant, que j’ai laissé beaucoup de lignes comme le signale au cas où je veux revenir en arrière et ajoutez-les. Il ressemble beaucoup mieux ensuite l’image.

Copiez le code ci-dessous dans un croquis d’utiliser

inclure le code de bibliothèque :
#include < LiquidCrystal.h >
#include < SD.h >
#include < Wire.h >
#include « RTClib.h »

const int chipSelect = 10 ;
Fichier dataFile ;
Fichier logfile ;

initialiser la bibliothèque avec les numéros des broches interface
Innovente lcd (7, 8, 9, 4, 2, 6) ;

TMP36 Pin Variables
int temperaturePin = 0 ; la broche analogique broche de Vout (sens) de la TMP36 est reliée à la résolution est de 10 mV / degrés centigrades (décalage de 500 mV) à faire à des températures négatives une option

Photorésistance Pin
int lightPin = 1 ; la broche analogique la photorésistance est reliée à la photorésistance n’est pas calibrée pour n’importe quelle unité, donc c’est tout simplement une valeur brutes du capteur (lumière relative)

LED pour le capteur de lumière
int lcdRed = 3 ;   la broche de la LED est reliée à
int lcdBlue = 5 ;   la broche de la LED est reliée à

RTC_DS1307 CCF ; définir l’objet de l’horloge en temps réel

//========================================================

void setup() {}
mis en place nombre de l’écran LCD de colonnes et de lignes :
LCD.Begin(16,2) ;
Serial.Begin(9600) ;  Lancez la connexion série avec la copmuter
pour afficher le résultat Ouvrez le moniteur série
dernière touche sous la barre de fichier (ressemble à une boîte avec un antena
pinMode (lcdRed, entrée) ; définit l’axe conduit à l’entrée
pinMode (lcdBlue, entrée) ; définit l’axe conduit à l’entrée

Wire.Begin() ;
RTC.begin() ;
//----------------------------------------
if (!. {RTC.isrunning())}
Serial.println ("RTC n'est pas running!") ;
suivant ligne définit le CCF à la date et l’heure de que cette esquisse a été compilée
RTC.adjust (DateTime (__DATE__, __TIME__)) ;
}
//-------------------------------

Serial.Print ("carte SD Initializing...") ;
Assurez-vous que l’accès select de puce par défaut est définie sur
sortie, même si vous ne l’utilisez pas :
pinMode (SS, sortie) ;

voir si la carte est présente et peut être initialisée :
if (!. {SD.begin(chipSelect))}
Serial.println ("carte a échoué ou n’existe pas") ;
ne faites rien de plus :
while (1) ;
}
Serial.println ("carte initialisée.") ;

Ouvrez le fichier nous allons ouvrir une session !
dataFile = SD.open ("datalog.txt", FILE_WRITE) ;
Si (! dataFile) {}
Serial.println ("erreur d’ouverture de datalog.txt") ;
Attendre indéfiniment, car nous ne pouvons pas écrire des données
while (1) ;
//  }
//-----------------
Créez un nouveau fichier
Char [filename] = "LOGGER00. CSV";
pour (uint8_t i = 0; i < 100; i ++) {}
NomFichier [6] = i / 10 + « 0 » ;
NomFichier [7] = i % 10 + « 0 » ;
if (!. {SD.exists(filename))}
seulement ouvrir un nouveau fichier s’il n’existe pas
logfile = SD.open (filename, FILE_WRITE) ;
rupture ;  laisser la boucle !
}
}

Serial.Print ("ouvrir une session:") ;
Serial.println(fileName) ;
logfile.println(",,,Willy,reen") ;
logfile.println (« fichier de journalisation de données") ;
logfile.println("date,Temp(F),Light") ;
}

//=========================================================

void loop() {}

flotteur de température = getVoltage(temperaturePin) ;  obtention de la tension mesurée par le capteur de température
température = ((temperature-.5) * 100) * 1.8 + 32 ;          conversion de 10 mv par degré wit 500 mV offset
à degrés ((volatge - 500 mV) multiplié par 100)
Serial.println(temperature) ;                     imprimer le résultat
Delay(500) ;                                     en attente d’une seconde

//------------------------
Éclairement int = analogRead(lightPin) ; Lire le
Éclairement = carte (éclairement, 0, 0, 900, 150) ;  ajuster la valeur 0 à 900 s’étendre de 0 à 255
Éclairement = contraindre (éclairement, 0, 150) ;   Assurez-vous que la valeur est betwween 0 et 255
//////
int tempLevel = analogRead (temperaturePin) * 100 ; Lire le
tempLevel = carte (tempLevel, 66, 82, 0, 150) ;  ajuster la valeur 0 à 900 s’étendre de 0 à 255
tempLevel = contraindre (tempLevel, 0, 150) ;   Assurez-vous que la valeur est betwween 0 et 255
analogWrite (lcdBlue, éclairement) ;  écrire la valeur
analogWrite (lcdRed, tempLevel) ;  écrire la valeur
//-----------------------------------------------------------

String dataString = "" ;

Date heure trucs---

//-------------------------------------------------------
logfile.println("") ;

DateTime maintenant = RTC.now() ;
temps de journal
logfile.Print(Now.unixtime()) ; secondes depuis 01/01/1970
logfile.Print (",") ;
logfile.Print('"') ;
logfile.Print(Now.Year(), DEC) ;
logfile.Print("/") ;
logfile.Print(Now.month(), DEC) ;
logfile.Print("/") ;
logfile.Print(Now.Day(), DEC) ;
logfile.Print("") ;
logfile.Print(Now.Hour(), DEC) ;
logfile.Print(":") ;
logfile.Print(Now.minute(), DEC) ;
logfile.Print(":") ;
logfile.Print(Now.second(), DEC) ;
logfile.Print('"') ;
logfile.Print(",") ;
//
logfile.Print(temperature) ;
logfile.Print(",") ;
logfile.Print(lightLevel) ;
Delay(500) ;

//----------------
/*
lire les capteurs et les ajouter à la chaîne :
pour (int analogPin = 0; analogPin < 2; analogPin ++) {}
capteur int = analogRead(analogPin) ;
dataString += String(sensor) ;
Si (analogPin < 1) {}
dataString += «, » ;
}
}
*/
dataFile.println(dataString) ;
logfile.println(dataString) ;
Serial.println(dataString) ;
dataFile.flush() ;
logfile.Flush() ;

//-----------------------------------------------------------
Placez le curseur à (0,0) :
lcd.setCursor (0, 0) ;
imprimer de 0 à 9 :
pour (int thisChar = 0; thisChar < 10 ; thisChar ++) {}
LCD.Print(temperature) ;
LCD.Print(myString) ;
lcd.setCursor (0, 1) ;
LCD.Print(lightLevel) ;

lcd.setCursor (8, 0) ;
LCD.Print("Temp") ;   temp d’affichage sur l’écran lcd
lcd.setCursor (8, 1) ;
LCD.Print("Light") ;   éclairage de l’écran sur l’écran lcd


Delay(500) ;

rétro-éclairage lcd---
Éclairement = contraindre (éclairement, 0, 255); //make que la
la valeur est betwween
0 et 255

}


//------------------------------------------------------------


Placez le curseur à (16,1) :
lcd.setCursor (16, 1) ;
régler l’affichage à défilement automatique :
LCD.AutoScroll() ;
imprimer de 0 à 9 :
pour (int thisChar = 0; thisChar < 10 ; thisChar ++) {}
LCD.Print(thisChar) ;
Delay(500) ;
//  }
désactiver le défilement automatique
lcd.noAutoscroll() ;

effacer l’écran pour la boucle suivante :
LCD.Clear() ;
//}

//==========================================================
flotteur getVoltage(int pin) {}
retour (analogRead(pin) *. 004882814) ; conversion d’une plage numérique de 0 à 1023
0 à 5 volts (chaque 1 lecture équivaut à ~ 5 mV
}

Articles Liés

Construire un enregistreur de données de « boîte noire » pour ajouter sur les jauges d’affichage écran à vos vidéos

Construire un enregistreur de données de « boîte noire » pour ajouter sur les jauges d’affichage écran à vos vidéos

Ce projet inclut des instructions sur la façon de construire le dispositif ainsi qu'un lien vers le code de projet sur github qui devront être téléchargées pour s'exécuter.Un Arduino fonction enregistreur de données aux fins de la synchronisation des
Construire un enregistreur de données pour votre réseau de capteurs sans fil

Construire un enregistreur de données pour votre réseau de capteurs sans fil

nous avions besoin d'un enregistreur de données qui a fourni un timestamp, et qui seraient des 2 dernières semaines dans les bois. À l'aide d'un ordinateur portable exigerait un générateur ou un gigantesque batterie. Ce Instructable montre comment fa
Enregistreur de données GPS Arduino

Enregistreur de données GPS Arduino

vous voulez vous connecter à des données GPS sur une carte SD en utilisant votre Arduino ? Possédez-vous déjà un bouclier microSD Sparkfun et module GPS ? Avez-vous essayé le Adafruit Sheild (bien que c'est génial et pas cher), mais il a volé toutes
Expedier un enregistreur de données pour un électricité Kamstrup / compteur avec Raspberry Pi de gaz !

Expedier un enregistreur de données pour un électricité Kamstrup / compteur avec Raspberry Pi de gaz !

Sur Pi framboiseOui enfin j'ai reçu mon nouveau Pi de framboise. Il s'agit d'une Conseil de linux ARM doté d'une carte ethernet, 2 ports USB et même un port HDMI full-HD pour un simple $30 à puissance ultra-faible, petite!. Consultez www.raspberrypi.
ESP8266 - enregistreur de données de température WIFI - MCP9808

ESP8266 - enregistreur de données de température WIFI - MCP9808

Dans ce projet, nous allons construire une simple, de haute précision, enregistreur de données de température de WIFI basée sur le module de ESP8266 et de la puce MCP9808, un ± 0,5 ° C précision maximale capteur numérique de température.Caractéristiq
Créez-vous un enregistreur de données de température USB avec ATMEGA128

Créez-vous un enregistreur de données de température USB avec ATMEGA128

Bonjour les gars,Je veux présenter mon projet de fin de semaine qu'il utilise ATMEGA128Dans ce projet, nous allons utiliser RTC, LCD, USART, FT232RL et USB fil mâle vers mâleÉtape 1: Préparer tous les éléments dont nous avons besoin 1. ATMEGA128A2. P
Enregistreur de données de voiture de course 8 $

Enregistreur de données de voiture de course 8 $

De nos jours beaucoup d'entreprises différentes produire des systèmes d'enregistrement de données pour les applications de course. Toutefois, ces systèmes en général commencent environ $200-$300 et montent a partir de là. Aujourd'hui, je vais vous mo
Enregistreur de données de l’énergie solaire

Enregistreur de données de l’énergie solaire

Vous avez toujours voulu savoir combien d'énergie solaire vous pourriez rapporter en mettant des cellules PV à un emplacement particulier sur ou autour de votre maison ?Ce Instructable vous montre comment construire un enregistreur de données basé su
Faible coût enregistreur de données de température (DS18B20) WIFI basé sur ESP8266 avec une connectivité à thingspeak.com

Faible coût enregistreur de données de température (DS18B20) WIFI basé sur ESP8266 avec une connectivité à thingspeak.com

Enregistreur de données de température basé sur le capteur de température 1-Wire DS18B20 et de ESP8266.À seulement $5 ESP-01 Conseil et DS18B20 capteur.Le logiciel est écrit en langage LUA et s'exécute directement dans ESP8266.Aucun autre MCU nécessa
Enregistreur de données de carte SD avec LinkitOne

Enregistreur de données de carte SD avec LinkitOne

Dans ce tutoriel, nous allons voir comment utiliser la fonctionnalité de carte SD intégrée dans le MediaTek LinkitOne super génial !Le LinkitOne offre 10MB à bord de stockage flash et jusqu'à 32 Go de stockage extensible via le slot pour carte microS
Enregistreur de données GPS pour les coureurs de route

Enregistreur de données GPS pour les coureurs de route

Je suis un coureur de route (à pied), moi-même, et j'aime les chiffres et les mathématiques aussi bien (comme un étudiant en génie). L'idée du suivi /marquage mon chemin en cours d'exécution pour post-analyse m'a toujours fasciné, mais j'ai toujours
Comment construire un enregistreur de données GPS léger pour les Applications de fusée modèle

Comment construire un enregistreur de données GPS léger pour les Applications de fusée modèle

février 2009Vue d'ensembleJ'ai toujours rêvé de construire un ordinateur de vol qui sera non seulement contrôler la séquence de vol, mais aussi enregistrer des données à bord d'une fusée modèle. Mais j'ai besoin de marcher avant que je peux courir, a
Enregistreur de données discrète

Enregistreur de données discrète

il n'y a pas de meilleure façon de cacher un dispositif secrète qu'afin de le coller à l'intérieur d'un dispositif bien plus grand.Cela dit... Essentiellement, c'est un guide pour faire un système d'enregistrement de données pour une utilisation avec
Enregistreur de données de température

Enregistreur de données de température

un enregistreur de données est un dispositif qui peut être utilisé pour stocker des données. Cela inclut de nombreux matériels d'acquisition de données tels que des cartes enfichables ou des systèmes de communication série qui utilisent un ordinateur