Arduino vs PPD42 detecteur de particule.

Bonjour

J’ai un Dust sensor PPD42 connecté sur la pin 8 de mon Arduino Ethernet Shield

Les données sont envoyées sur Xively

Voir mon feed ici: https://xively.com/feeds/195755639

Voici ma question:

J’aimerais pouvoir augmentet le délais entre les expéditions de données. Disons 15 minutes ou 30 minutes. J’aimerais savoir quoi changer dans mon sketch.

Merci pour votre collaboration.

Voici mon sketch:

#include <Dhcp.h>
#include <Dns.h>
#include <Ethernet.h>
#include <EthernetClient.h>
#include <EthernetServer.h>
#include <EthernetUdp.h>
#include <util.h>

#include <b64.h>
#include <CountingStream.h>
#include <HttpClient.h>
#include <Xively.h>
#include <XivelyClient.h>
#include <XivelyDatastream.h>
#include <XivelyFeed.h>

#include <SPI.h>
#include <Ethernet.h>
#include <HttpClient.h>
#include <Xively.h>

// MAC address for your Ethernet shield
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xA2, 0x94 };

// Your Xively key to let you upload data
char xivelyKey[] = "XXXXXXX";

// Analog pin which we're monitoring (0 and 1 are used by the Ethernet shield)
int sensorPin = 8;

// Define the strings for our datastream IDs
char sensorId[] = "dust";
XivelyDatastream datastreams[] = {
  XivelyDatastream(sensorId, strlen(sensorId), DATASTREAM_FLOAT),
};
// Finally, wrap the datastreams into a feed
XivelyFeed feed(195755639, datastreams, 1 /* number of datastreams */);

EthernetClient client;
XivelyClient xivelyclient(client);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  
  Serial.println("Starting single datastream upload to Xively...");
  Serial.println();

  while (Ethernet.begin(mac) != 1)
  {
    Serial.println("Error getting IP address via DHCP, trying again...");
    delay(600000);
  }
}

void loop() {
  int sensorValue = analogRead(sensorPin);
  datastreams[0].setFloat(sensorValue);

  Serial.print("Read sensor value ");
  Serial.println(datastreams[0].getFloat());

  Serial.println("Uploading it to Xively");
  int ret = xivelyclient.put(feed, xivelyKey);
  Serial.print("xivelyclient.put returned ");
  Serial.println(ret);

  Serial.println();
  delay(600000);
}

Bonjour Jean-Robert,

À la dernière ligne du sketch, l'instruction "delay(600000);" sigifie que l'Arduino va s'arrêter pendant 600 000 millisecondes (ce qui correspond à 10 minutes) avant la prochaine prise de lecture.

Pour un arrêt de 15 minutes, il faut remplacer ça par "delay(900000);".
Pour un arrêt de 30 minutes, ça devient "delay(1800000);"

Bref, la formule est nombre_de_minutes * 60 000 (puisqu'il y a 60 000 millisecondes dans une minute).

(À la condition que tu n'aies pas besoin de faire accomplir d'autres tâches par l'Arduino pendant cette attente).