SHARE
TWEET

Untitled

a guest Apr 19th, 2017 156 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <SPI.h>  //een bibliotheek aan code toevoegen; Arduino heeft deze nodig om de Shield te kunnen 'lezen'
  2. #include <SD.h>   //zie hierboven
  3.  
  4. //hieronder volgen enkele variabelen. Denk eraan: float betekent dat het decimale getallen kunnen zijn
  5.  
  6. const int chipSelect = 10; //const = een variabele die nooit verandert
  7. int PM=8; //de fijnstofmeter zit in digitaal poortnummer 8
  8. unsigned long duration;
  9. unsigned long starttime;
  10. unsigned long sampletime_ms = 30000;  //unsigned long = een variabele die erg hoog kan oplopen, maar nooit negatief kan zijn
  11. unsigned long lowpulseoccupancy = 0;
  12. float ratio = 0;
  13. float concentration = 0;
  14. unsigned long tijd = 30;
  15.  
  16. //void setup wordt één keer uitgevoerd, bij het opstarten van de Arduino-minicomputer
  17.  
  18. void setup()
  19.   {
  20.     Serial.begin(9600); //de snelheid (in bits/second) aan welke de seriële data zal worden getransfereerd
  21.     pinMode(PM,INPUT);  /*PM is de variabele van helemaal bovenaan: pinMode vraagt twee parameters 1)de poort (werd gedefinieerd bovenaan) 2)INPUT of OUTPUT
  22.                           Ditmaal leest de fijnstofmeter gegevens die we vervolgens IN onze Arduino willen importeren, dus INPUT*/
  23.  
  24.     starttime = millis(); //hoelang draait het programma? millis() geeft de duur sinds het werd opgestart
  25.    
  26.     Serial.println("SD-kaart opstarten indien aanwezig... "); //Je schrijft nu neer dat de SD-kaart wordt gezocht en opgestart (println = hierna op volgende regel verder gaan)
  27.    
  28.     //hieronder staat een 'als'-lus: als aan de eerste voorwaarde wordt voldaan, voert hij uit wat eronder staat, anders gaat Arduino verder achter de afsluitende accolade
  29.    
  30.     if (!SD.begin(chipSelect)) //Als er NIET (!) kan worden begonnen met de SD-kaart te selecteren ...
  31.       {
  32.         Serial.println("Corrupte of ontbrekende SD-kaart!"); //dan wordt deze boodschap getoond
  33.         return;
  34.       }
  35.     //Als de SD-kaart dus WEL werkt, gaan we hieronder verder
  36.    
  37.     Serial.println("SD-kaart werkt...");
  38.     Serial.print("Fijnstofsensor start op. Even geduld! Metingen om de 30 seconden.");
  39.     Serial.println("\n");
  40.   }
  41.  
  42. //void setup wordt oneindig lang uitgevoerd, tenzij je dat anders bepaalt
  43.  
  44. void loop ()
  45.   {
  46.     duration = pulseIn(PM, LOW); //als de fijnstofdetector niet meet (LOW), beginnen meten
  47.     lowpulseoccupancy = lowpulseoccupancy+duration; //na elke meting de 'duration' (30 sec)  optellen bij de totale tijd
  48.  
  49.     if ((millis()-starttime) >= sampletime_ms)
  50.       {
  51.         //hieronder de wiskundige berekeningen om het fijnstofgehalte te berekenen
  52.        
  53.         ratio = lowpulseoccupancy/(sampletime_ms*10.0);
  54.         concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62;
  55.  
  56.         //hieronder alles wat zal worden geprint naar het seriële venster
  57.         Serial.print("Fijnstofconcentratie na ");
  58.         Serial.print(tijd);
  59.         Serial.println(" seconden:");
  60.         Serial.print(concentration);
  61.         Serial.println(" deeltjes/0,01cf");
  62.         Serial.print("\n");
  63.  
  64.  
  65.     File dataFile = SD.open("meting.txt", O_RDWR | O_APPEND);
  66.  
  67. dataFile.print("Fijnstofconcentratie na ");
  68.             dataFile.print(tijd);
  69.             dataFile.print(" seconden: ");
  70.             dataFile.print(concentration);
  71.             dataFile.print(" deeltjes/0,01cf");
  72.             dataFile.print("\n");
  73.             dataFile.close();
  74.    
  75.     if (!dataFile) {
  76.     // It failed, so try and make a new file.
  77.     dataFile = SD.open("meting.txt", O_RDWR | O_CREAT);
  78.  
  79.    
  80.       dataFile.print("Fijnstofconcentratie na ");
  81.             dataFile.print(tijd);
  82.             dataFile.print(" seconden: ");
  83.             dataFile.print(concentration);
  84.             dataFile.print(" deeltjes/0,01cf");
  85.             dataFile.print("\n");
  86.             dataFile.close();
  87.     if (!dataFile) {
  88.  
  89.         // It failed too, so give up.
  90.         Serial.println("Failed to open meting.txt");
  91.     }
  92. }
  93.         /*File dataFile = SD.open("meting.txt", O_CREAT | O_APPEND | O_WRITE); //het bestand meting.txt moet op de SD-kaart worden geopend om erin te schrijven
  94.  
  95.         if (dataFile) //als het bestand kan worden geopend, volgende gegevens printen
  96.           {
  97.             dataFile.print("Fijnstofconcentratie na ");
  98.             dataFile.print(tijd);
  99.             dataFile.print(" seconden: ");
  100.             dataFile.print(concentration);
  101.             dataFile.print(" deeltjes/0,01cf");
  102.             dataFile.print("\n");
  103.             dataFile.close();
  104.           }
  105.        
  106.         else //als het bestand niet kan worden geopend ...
  107.           {
  108.             Serial.println("Fout bij het openen van meting.txt");
  109.           }
  110.          */
  111.         tijd = tijd + 30; //meting afgerond, totale tijd = +30 seconden
  112.         lowpulseoccupancy = 0; //de status van de fijnstofmeter is terug 'LOW'
  113.         starttime  = millis(); //volgende meting starten
  114.       }
  115.   }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top