Étape 5: Le Code
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 : const int chipSelect = 10 ; initialiser la bibliothèque avec les numéros des broches interface TMP36 Pin Variables Photorésistance Pin
#include < LiquidCrystal.h >
#include < SD.h >
#include < Wire.h >
#include « RTClib.h »
Fichier dataFile ;
Fichier logfile ;
Innovente lcd (7, 8, 9, 4, 2, 6) ;
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
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
}