#include //--- made by SKA --- //--- test EtherEncLib // adapted by Renato Aloi // May 2015 // removed SD Card part for future implementation #include #include #if (ESP8266) #include #else #include #endif static unsigned char ipaddr[] = { 192, 168, 1, 125 }; static unsigned char macaddr[] = { 0x00, 0x11, 0x22, 0x44, 0x00, 0x25 }; EtherEncLib eElib(80); const PROGMEM char resp200Txt[] = {"HTTP/1.0 200 OK\n\rContent-Type: text/html\n\rPragma: no-cache\n\r\n\r"}; //sensor start int DustSensePin = 13; //copy and paste for 50 zeros //this should probably not be global... //Int means max 65535 or so. May need to move to long //making this too high runs into memory problems //This resolution will be relatively good enough for now. //If we need more space, then store only the first value in an unsigned int or long, then //bit shift it down to reduce size, and store in array in a lower size var. unsigned int reading[30] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; unsigned long sampletime_ms = 60000;//sample 30s ; unsigned long starttime = 0; unsigned char x = 0; unsigned char toplimit = 0; unsigned long sum = 0; //highest number possible - 32 bit unsigned, so 4 billion unsigned int average = 0; unsigned int sumcutdown = 0; void setup() { Serial.println(F("Setup begin")); #if (ESP8266) Serial.begin(115200); pinMode(5,OUTPUT); //--- ? -- SS pin must be output # by Renato Aloi #else Serial.begin(9600); pinMode(8,OUTPUT); //--- ? -- SS pin must be output # by Renato Aloi #endif eElib.begin(ipaddr,macaddr); Serial.println(F("------ program start -----------")); //Serial.println(F("NO SDCARD version")); // by Renato Aloi pinMode(DustSensePin,INPUT); starttime = millis();//get the current time; } void loop() { reading[x] = pulseIn(DustSensePin, LOW, 500000); //Print out readings on serial, as they come if (reading[x] != 0){ Serial.println(reading[x]); x=x+1; if(x>50){ x = 0; } } if ((millis()-starttime) > sampletime_ms){ //reset these, no need to display on webpage anymore sum = 0; average = 0; toplimit = x; // don't read the zeros /* if(toplimit == 0){ toplimit = 1; //to avoid divide by zero, in case sum / toplimit is both zero } */ for (x=0; x> 4; //Serial.print("Average Get!: "); //Serial.println(average); //average when 0 is 65535, so it's invalid (dividing by zero - sum divided by top limit which are both zero) //but we don't even want the average. It's just for testing here. Serial.print("Sum Get!: "); Serial.println(sum); //this is what we care about Serial.print("Sumcutdown Get!: "); Serial.println(sumcutdown); //bit shifted //reset everything that can be reset after a minute x = 0; toplimit = 0; for (x=0; x

Hello World!

"); //eElib.print("
"); eElib.print("
"); eElib.print("The Sum is: "); eElib.print((unsigned)sumcutdown); //eElib.print("
"); eElib.print(""); } /* else if (eElib.isPost) { eElib.print("

POST Params: "); eElib.print(eElib.getParams()); eElib.print("

"); eElib.print(""); } else if (eElib.isGet) { eElib.print("

GET Params: "); eElib.print(eElib.getParams()); eElib.print("

"); eElib.print(""); }*/ eElib.close(); } } //unused /* int ipow(int base, int exp) { int result = 1; for (;;) { if (exp & 1) result *= base; exp >>= 1; if (!exp) break; base *= base; } return result; }*/