|
|
- #include <math.h>
-
- //--- made by SKA ---
- //--- test EtherEncLib
- // adapted by Renato Aloi
- // May 2015
- // removed SD Card part for future implementation
-
- #include <SPI.h>
- #include <EtherEncLib.h>
- #if (ESP8266)
- #include <pgmspace.h>
- #else
- #include <avr/pgmspace.h>
- #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<toplimit; x++){
- sum = sum + reading[x];
-
- }
- average = sum / toplimit;
- //see work docs. Bit shift to allow for lower resolution for built in print functions.
- //outputting an int - 16 bit, but we originally have a 32 bit)
- sumcutdown = sum >> 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<toplimit; x++){
- reading[x] = 0;
- }
- starttime = millis();
- }
-
- if ( eElib.available() )
- {
- Serial.println(eElib.getParams());
- eElib.print((char *)&resp200Txt[0],strlen_P(&resp200Txt[0]));
- if (eElib.isIndexHtml)
- {
- eElib.print("<pre><H1>Hello World!</H1>");
- //eElib.print("<form method=POST>");
- eElib.print("<br>");
- eElib.print("The Sum is: ");
-
- eElib.print((unsigned)sumcutdown);
- //eElib.print("</form></body>");
- eElib.print("</pre>");
- }
- /*
- else if (eElib.isPost)
- {
- eElib.print("<HTML><body><H1>POST Params: ");
- eElib.print(eElib.getParams());
- eElib.print("</H1></body>");
- eElib.print("</HTML>");
- }
- else if (eElib.isGet)
- {
- eElib.print("<HTML><body><H1>GET Params: ");
- eElib.print(eElib.getParams());
- eElib.print("</H1></body>");
- eElib.print("</HTML>");
- }*/
- 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;
- }*/
|