Stap 4: De Code
We hebben nu alle elektronica klaar voor gebruik, dus laten we de code uploaden. Ik heb hieronder een link die u naar een openbare kern op GitHub waar u alle mijn code die wordt gebruikt in een perfect formaat leiden zal, omdat de code gehouden getting veranderd en verknald een beetje toen ik direct het plak als code hier, maar ik heb gedaan het beide manieren kunt zien. Ook moet er een "Ino" bestand op deze stap die als een IDE-bestand downloaden zal te openen met de Arduino code programma.
Zoals u wellicht heeft gemerkt, aan het begin van de code bevatten ik sommige bibliotheken, dus ik heb geüpload alle degenen die ik heb gebruikt en die komen niet al met de Arduino programma met deze stap. Als u niet hoe weet te installeren bibliotheken kijk op deze Arduino tutorial die het goed verklaart: de LiquidCrystal van Bibliotheken installerenen draad bibliotheken zijn al op komt met het programma.
Als u wijzigen van de tijd dat het scherm blijft wilt op voor dan wijzigt de waarde die ik in de verklaring van het terwijl op lijn 60 te bereiken. Of wijzig de delay() op lijn 127 als u de naam wilt wijzigen van de tijd tussen elke update van de lezingen.
En als de EMF-lezing altijd hoog of nooit hoog is, dan wilt u misschien over het knoeien met de if verklaringen op lijn 99, veranderen de waarden volgens het probleem begint.
Lees de opmerkingen om de code te begrijpen. Het hele EMF deel wordt vrij ingewikkeld, als u wilt dat een meer gedetailleerde uitleg over dit deel, dan check out deze link: http://www.aaronalai.com/emf-detector
#include <dht.h> //Here we include all the libraries that we downloaded...#include <BMP085.h>#include <Wire.h>#include <LiquidCrystal.h> #define dht_apin A2 //saying what pin the DHT module should read the info.#define NUMREADINGS 15 // here we are defining NUMREADINGS as 15 data values; raise this number to increase data smoothing. This is for the EMF. int senseLimit = 15;int probePin = A0; //setting probePin as analog 0.int val = 0; // reading from probePin dht DHT; BMP085 bmp; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //starting the lcd with the pins we assigned. const int inUse = 8; //this will be the pin where the tilt switch is connected to.int i = 0;const int screen = 6; int readings[NUMREADINGS]; // the readings from the analog inputint index = 0; // the index of the current readingint total = 0; // the running totalint average = 0; void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); Serial.begin(9600); bmp.begin(); // Print a message to the LCD. pinMode(inUse, INPUT); pinMode(screen, OUTPUT); for (int i = 0; i < NUMREADINGS; i++) readings[i] = 0;} void loop() { i = 0; if (digitalRead(inUse) == HIGH) { lcd.clear(); digitalWrite(screen, LOW); } else { while (i < 30) { digitalWrite(screen, HIGH); DHT.read11(dht_apin); // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): //Print a message to second line of LCD lcd.clear(); lcd.setCursor(8, 0); lcd.print((bmp.readPressure() + 2000) / 100); Serial.println(bmp.readPressure()); lcd.print("hPa"); lcd.setCursor(1, 1); lcd.print(DHT.humidity); Serial.println(DHT.humidity); lcd.print("%"); lcd.print(" "); lcd.print(DHT.temperature); lcd.print("C"); val = analogRead(probePin); // take a reading from the probe lcd.setCursor(0, 0); lcd.print("IE"); if (val >= 1) { // if the reading isn't zero, proceed val = constrain(val, 1, senseLimit); // turn any reading higher than the senseLimit value into the senseLimit value val = map(val, 1, senseLimit, 1, 1023); // remap the constrained value within a 1 to 1023 range total -= readings[index]; // subtract the last reading readings[index] = val; // read from the sensor total += readings[index]; // add the reading to the total index = (index + 1); // advance to the next index if (index >= NUMREADINGS) { // if we're at the end of the array... index = 0; // ...wrap around to the beginning } average = total / NUMREADINGS; Serial.println(average); if (average > 150) { //checking the value of the average and printing a ">" if it's significant. lcd.print(">"); } if (average > 350) { //checking again, but this time for a higher value. lcd.print(">"); } if (average > 550) { // and so on... lcd.print(">"); } if (average > 750) { lcd.print(">"); } if (average > 950) { lcd.print(">"); } } i += 1; delay(1000); } }}