Может ли кто-нибудь помочь мне разобраться, как собрать эти два фрагмента кода, чтобы получить результат, который мне нужен? Мои глаза переходят от взгляда на это. Я знаю, что это ветерок, возможно, для всех, кроме меня, но я не программист, и это всего лишь для небольшого личного проекта.Как я могу получить значение вывода A0 из второго эскиза в массив JSON в первом эскизе?
До сих пор, после часов и часов чтения и просмотра любых видеороликов, которые я мог найти в отношении Arduino, Pubnub и датчиков, у меня есть чтение с сенсорным чтением в Pubnub. Я создал учетную запись Freeboard для визуализации, и все это работает. Проблема в том, что опубликованные данные ошибочны.
В принципе, я хочу прочитать напряжение аккумулятора и опубликовать его в PubNub. Я могу заставить Arduino (Uno R3) прочитать напряжение, и я могу настроить значения в коде, чтобы соответствовать фактическому напряжению. Проблема, с которой я сталкиваюсь, заключается в том, что этот бит кода работает и набивает его в массив JSON, который публикуется в PubNub.
Если кто-то захочет помочь мне и, может быть, объяснит немного (или нет - я в порядке, если я просто заработаю), я бы так оценил время, помощь и усилия.
Спасибо!
// Каждый эскиз работает независимо. Мне нужно объединить их, чтобы опубликовать правильное чтение.
//VoltagePubNub.ino (Это тот, который издает, что это то, что я хочу. Я просто хочу, опубликованное значение будет значение второго эскиза.)
#include <SPI.h>
#include <Ethernet.h>
#include <PubNub.h>
#include <aJSON.h>
// Some Ethernet shields have a MAC address printed on a sticker on the shield;
// fill in that address here, or choose your own at random:
const static byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// Memory saving tip: remove myI and dnsI from your sketch if you
// are content to rely on DHCP autoconfiguration.
IPAddress myI(192, 168, 2, 114);
IPAddress dnsI(8, 8, 8, 8);
const static char pubkey[] = "publish_key";
const static char subkey[] = "subscribe_key";
const static char channel[] = "channel_name";
char uuid[] = "UUID";
#define NUM_CHANNELS 1 // How many analog channels do you want to read?
const static uint8_t analog_pins[] = {A0}; // which pins are you reading?
void setup()
{
Serial.begin(9600);
Serial.println("Serial set up");
Ethernet.begin((byte*) mac, myI, dnsI);
Serial.println("Ethernet set up");
delay(1000);
Serial.println("Ethernet set up");
PubNub.begin(pubkey, subkey);
Serial.println("PubNub set up");
delay(5000);
}
void loop()
{
Ethernet.maintain();
EthernetClient *client;
// create JSON objects
aJsonObject *msg, *analogReadings;
msg = aJson.createObject();
aJson.addItemToObject(msg, "analogReadings", analogReadings = aJson.createObject());
// get latest sensor values then add to JSON message
for (int i = 0; i < NUM_CHANNELS; i++) {
String analogChannel = String(analog_pins[i]);
char charBuf[analogChannel.length()+1];
analogChannel.toCharArray(charBuf, analogChannel.length()+1);
int analogValues = analogRead(analog_pins[i]);
aJson.addNumberToObject(analogReadings, charBuf, analogValues);
}
// convert JSON object into char array, then delete JSON object
char *json_String = aJson.print(msg);
aJson.deleteItem(msg);
// publish JSON formatted char array to PubNub
Serial.print("publishing a message: ");
Serial.println(json_String);
client = PubNub.publish(channel, json_String);
if (!client) {
Serial.println("publishing error");
} else
free(json_String);
client->stop();
delay(5000);
}
//VoltageSensor.ino
(Это является один с правильным значением, но не публиковать функцию.)
int analogInput = A0;
float vout = 0.0;
float vin = 0.0;
float R1 = 31000.0; //
float R2 = 8700.0; //
int value = 0;
int volt = 0;
void setup(){
pinMode(analogInput, INPUT);
Serial.begin(9600);
Serial.print("DC VOLTMETER");
Serial.println("");
}
void loop(){
// read the value at analog input
value = analogRead(analogInput);
vout = (value * 4.092)/1024.0;
vin = vout/(R2/(R1+R2));
Serial.print("INPUT V= ");
Serial.println(vin,2);
delay(2000);
}