empierre / arduino-mysensors-contribs

arduino scripts for MySensors IoT
http://www.mysensors.org
189 stars 115 forks source link

No output on Serial Monitor #28

Closed maryamalki closed 7 years ago

maryamalki commented 7 years ago

I'm still a beginner in arduino and i'm trying to use a SamYoung Sensor with the code given on this site. I had to remove the gw. and add radio and gateaway to avoid error messages. I am not getting anything in the serial monitor. Thank You

Here is my code:

/**

define MY_RADIO_NRF24

define MY_RF24_PA_LEVEL RF24_PA_LOW

define MY_GATEWAY_SERIAL

include

include

include

define CHILD_ID_DUST_PM10 0

define CHILD_ID_DUST_PM25 1

define DUST_SENSOR_DIGITAL_PIN_PM10 3

define DUST_SENSOR_DIGITAL_PIN_PM25 6

unsigned long SLEEP_TIME = 30*1000; // Sleep time between reads (in milliseconds) //VARIABLES int val = 0; // variable to store the value coming from the sensor float valDUSTPM25 =0.0; float lastDUSTPM25 =0.0; float valDUSTPM10 =0.0; float lastDUSTPM10 =0.0; unsigned long duration; unsigned long starttime; unsigned long endtime; unsigned long sampletime_ms = 30000; unsigned long lowpulseoccupancy = 0; float ratio = 0; long concentrationPM25 = 0; long concentrationPM10 = 0; int temp=20; //external temperature, if you can replace this with a DHT11 or better float ppmv;

MyMessage dustMsgPM10(CHILD_ID_DUST_PM10, V_LEVEL); MyMessage msgPM10(CHILD_ID_DUST_PM10, V_UNIT_PREFIX); MyMessage dustMsgPM25(CHILD_ID_DUST_PM25, V_LEVEL); MyMessage msgPM25(CHILD_ID_DUST_PM25, V_UNIT_PREFIX);

void setup()
{

// Send the sketch version information to the gateway and Controller sendSketchInfo("Dust Sensor DSM501", "1.5");

// Register all sensors to gateway (they will be created as child devices) present(CHILD_ID_DUST_PM10, S_DUST);
send(msgPM10.set("ppm")); present(CHILD_ID_DUST_PM25, S_DUST);
send(msgPM25.set("ppm"));

pinMode(DUST_SENSOR_DIGITAL_PIN_PM10,INPUT); pinMode(DUST_SENSOR_DIGITAL_PIN_PM25,INPUT);

}

void loop()
{

//get PM 2.5 density of particles over 2.5 μm. concentrationPM25=(long)getPM(DUST_SENSOR_DIGITAL_PIN_PM25); Serial.print("PM25: "); Serial.println(concentrationPM25); Serial.print("\n"); //ppmv=mg/m3 (0.08205Tmp)/Molecular_mass //0.08205 = Universal gas constant in atm·m3/(kmol·K) ppmv=(float)(((concentrationPM250.0283168)/100) ((0.08205*temp)/0.01))/1000;

if ((concentrationPM25 != lastDUSTPM25)&&(concentrationPM25>0)) { send(dustMsgPM25.set(ppmv,3)); lastDUSTPM25 = ceil(concentrationPM25); } //get PM 1.0 - density of particles over 1 μm. concentrationPM10=getPM(DUST_SENSOR_DIGITAL_PIN_PM10); Serial.print("PM10: "); Serial.println(concentrationPM10); Serial.print("\n"); //ppmv=mg/m3 (0.08205Tmp)/Molecular_mass //0.08205 = Universal gas constant in atm·m3/(kmol·K) ppmv=(((concentrationPM100.0283168/100) (0.08205*temp)/0.01))/1000;

if ((ceil(concentrationPM10) != lastDUSTPM10)&&((long)concentrationPM10>0)) { send(dustMsgPM10.set(ppmv,3)); lastDUSTPM10 = ceil(concentrationPM10); }

//sleep to save on radio sleep(SLEEP_TIME);

}

long getPM(int DUST_SENSOR_DIGITAL_PIN) {

starttime = millis();

while (1) {

duration = pulseIn(DUST_SENSOR_DIGITAL_PIN, LOW);
lowpulseoccupancy += duration;
endtime = millis();

if ((endtime-starttime) > sampletime_ms)
{
ratio = (lowpulseoccupancy-endtime+starttime)/(sampletime_ms*10.0);  // Integer percentage 0=>100
long concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
//Serial.print("lowpulseoccupancy:");
//Serial.print(lowpulseoccupancy);
//Serial.print("\n");
//Serial.print("ratio:");
//Serial.print(ratio);
//Serial.print("\n");
//Serial.print("DSM501A:");
//Serial.println(concentration);
//Serial.print("\n");

lowpulseoccupancy = 0;
return(concentration);    
}

}
}

empierre commented 7 years ago

well uncomment those lines: //Serial.print