Arduino Polska Forum

Pełna wersja: thingspeak - przesyłanie 2 wartości na raz
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam,
W jaki sposób wysłać do Thingspeaka dwie wartości (np z analogowych wejsc A0 i A1) na raz. Od razu mowie ze zdublowanie polecenia Thingspeak.writeField z przypisaniem innego fielda nie działa.
 

Kod:
#include "ThingSpeak.h"
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
EthernetClient client;
// On Arduino:  0 - 1023 maps to 0 - 5 volts
#define VOLTAGE_MAX 5.0
#define VOLTAGE_MAXCOUNTS 1023.0

unsigned long myChannelNumber = moj nr;
const char * myWriteAPIKey = "api klucz";

void setup()
{
 Serial.begin(9600);
 Ethernet.begin(mac);
 ThingSpeak.begin(client);
}

void loop()
{
 int sensorValue = analogRead(A0);
 int sensorValue2 = analogRead(A1);
 
 float voltage = sensorValue * (VOLTAGE_MAX / VOLTAGE_MAXCOUNTS);
 Serial.println(sensorValue);
 Serial.println(voltage);

 // Write to ThingSpeak. There are up to 8 fields in a channel, allowing you to store up to 8 different
 // pieces of information in a channel.  Here, we write to field 1.

 ThingSpeak.writeField(myChannelNumber, 1, voltage, myWriteAPIKey); <- działa
  ThingSpeak.writeField(myChannelNumber, 2, sensorValue2, myWriteAPIKey); <- to już nie działa

 delay(20000); // ThingSpeak will only accept updates every 15 seconds.
}
Przecież jest w przykładach WriteMultipleVoltages.ino: https://github.com/mathworks/thingspeak-...ltages.ino
ok.
wystarczy zastosować komendy ThingSpeak.setField na każdym czujniku a następnie użyć ThingSpeak.writeFields(nr kanału, klucz API) aby wysłać wszystkie wartości na raz.

Kod:
ThingSpeak.setField(1, czujnik1);  // <- "1" to numer Fielda i tak kolejno...
ThingSpeak.setField(2, czujnik2);
ThingSpeak.setField(3, czujnik3);

ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);

**Należy pamiętać, że maksymalna ilość fieldów wynosi 8 dla serwisu ThingSpeak.