Odpověď na: Řídící jednotka pro peletový kotel
Úvodní stránka › Fórum › Vaše projekty › Arduino › Řídící jednotka pro peletový kotel › Odpověď na: Řídící jednotka pro peletový kotel
Ahoj, tak jsem udělal několik testů pro odhalení závady.
1) jsem nahrál zpátky poslední funkční program (pouze jsem upravil/zaměnil LCD pin D4 za D30) bez měření teploty a výstupu na Exosite -> to fungovalo bez problémů
2) jsem zkusil pouze měření teploty a výstup na Exosite -> taky bez problémů
3) jsem zkusil znovu spojený program kotel + exosite -> a tady už byl zase problém – seknutý procesor
Takže problém bude asi to, že jsem přidal do funkčního kódu tu část pro měření teploty a výstup na Exosite na špatný místo a proto se to mezi sebou hádá. Zkus na to prosím mrknout jak by se to dalo spojit, aby to nedělalo neplechu.
Tady poslední funkční kód (pouze regulace kotle s LCD):
// REGULACE PELETKOVEHO KOTLE
// author. Johnyhol & by JP
// v 2_1_2017
// changelog
// v 2_1_2017
// zmena desky na MEGA
// precislovani pinu kvuli displeji a ethernetu
// doplneny/zmeneny komentare
// v 16_12_2016
// precislovani pinu kvuli displeji
// testovani displeje
// v 13_11_2016
// zrusena reakce na prostorovy termostat -> není potreba, reseno jiz v kotli
// v 10_11_2016
// uprava seriove komunikace -> pridani casovacu jednotlivych funkci
// v 5_11_2016
// zmena casu - upraveno pro realny provoz
// v 4_11_2016
// zmena vsech vystupu na rele
// v 14_5_2016
// precislovani pinu
// zmena funkce fotobunky z digitalu na analog
// dolpneni seriove komunikace o hodnotu fotobunky
// v 30_3_2016
// oprava funkce tlacitka kvitace poruchy -> HIGH->LOW
// umazani parametru "long cas=13000;" -> jiz neni potreba
// umazani parametru "//delay(84000); //pockej 84s" u funkce dohoreni -> jiz neni potreba
// umazani parametru "//delay(12000); //po dobu 12s" u funkce davkovani zapalovaci davky pelet -> jiz neni potreba
// umazani parametru "//if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){ // prostorovy nebo kotlovy termostat vypne" u funkce zapaleni
// drobne upravy textu/popisu jednotlivych parametru/funkci
// v 27_3_2016
// uprava procesu zapalovani - nebude reagovat na prostorovy termostat
// uprava dlouhych delayu na smycky, pro vyuziti watchdogu - autoreset pri zaseknuti procesou - doba nez se resetuje = 8s
// nastaveni definice poruch pro pozdejsi vyuziti
// v22_3_2016
// uprava ladicich textu pro termostaty
// v21_3_2016
// presunuti testuPlamene pouze do smycky udrzuj horeni
// doplneni textu do testu horeni
// oprava textu zprav
// zruseni diakritiky
// zapnuti alarmu pri vyskytu poruchy
// v20_3_2016
// slouceni podminenych funkci
// vypnuti zhaveni pri rozepnuti termostatu (kotlovy nebo prostorovy)
// rozdeleni funkci do vlastnich funkcnich bloku
// zapojeni seriove komunikace pro odladeni funkci
// v16_3_2016
// uprava podminky smycek (zruseno =)
// posun zpozdeni 5s z procesu zapaleni na jeho konec
// doplnena podminka reakce na termostaty (kotlovy/prostorovy) v procesu zapaleni
// upravena doba na 1 zapalovaci proces - nastavitelna trimrem na analog.vstupu A0. v rozsahu 60 - 600 s = 1 - 10 min. - nastaveni pouze v dobe necinosti kotle
// nastaveni poruchy a jeji kvitance tlacitkem na pinu 9
// definice poruch
// bit funkce
// 0 prehrati kotle pri zapalovani
// 1 ztrata plamene pri horeni
// 2 volne
// 3 volne
// 4 volne
// 5 volne
// 6 volne
// 7 volne
// knihovna watchdogu
#include <avr/wdt.h>
// knihovna displeje
#include <LiquidCrystal.h>
// nastaveni pinu displeje
LiquidCrystal lcd(8, 9, 30, 5, 6, 7);
#define davkovaniPelet 22 //davkovani pelet snek
#define spirala 24 //zapalovaci spirala
#define ventilator 26 //ventilator
#define alarm 28 //signalizace poruchy
#define kotlovyTermostat 2 //kotlovy termostat
#define fotobunka 55 //fotobunka pro kontrolu plamene DI55 = A1 pro arduino MEGA
#define trimr1 56 // nastaveni doby zapaleni DI56 = A2 pro arduino MEGA
#define tlacitkoKvitance 3 // pin tlacitka kvitance poruchy
//pin DI54 = A0 -> rezervace pro tlacitka displeje
//pin D13 -> rezervace pro Ethernet Schield
//pin D12 -> rezervace pro Ethernet Schield
//pin D11 -> rezervace pro Ethernet Schield
//pin D10 -> rezervace pro Ethernet Schield + pro podsviceni displeje
//pin D4 -> rezervace pro SD kartu + pro displej
//pin D1 -> rezervace pro seriovou linku
//pin D0 -> rezervace pro seriovou linku
int smycka1 = 0; // pomocna smycka - zapaleni
int smycka1max = 720; // max.pomocne smycky - ted jiz nastavitelne trimrem na A2 60-720s
int smycka2 = 0; // pomocna smycka - udrzeni horeni
int smycka2max = 2; // max.pomocne smycky
int smycka3 = 0; // pomocna smycka - pocet pokusu o zapaleni
int smycka3max = 2; // max.pomocne smycky
int smycka4 = 0; // pomocna smycka - davkovani zapalne davky pelet
int smycka4max = 10; // max.pomocne smycky
int smycka5 = 0; // pomocna smycka - rozhoreni
int smycka5max = 5; // max.pomocne smycky
int smycka6 = 0; // pomocna smycka - dohoreni
int smycka6max = 84; // max.pomocne smycky
byte porucha = 0; // promenna pro zaznam poruchy
int ldr = 1; //analogovy pin kde je pripojen fotorezistor
int ldr_value = 0; //promenna pro zaznam hodnot z fotorezistoru
void setup() {
// nastav seriovou komunikaci na rychlost 9600 bd
Serial.begin(9600);
Serial.println("Nastavuji vstupy/vystupy"); // ladici seriova komunikace
lcd.begin(16, 2); // nastaveni displeje
lcd.print("NAST.VSTUPY/VYST"); // zobrazeni na displeji
lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("VYPINAM VS. RELE"); // zobrazeni na displeji
delay (2000);
pinMode(davkovaniPelet, OUTPUT);
pinMode(spirala, OUTPUT);
pinMode(ventilator, OUTPUT);
pinMode(alarm, OUTPUT);
pinMode(kotlovyTermostat, INPUT);
pinMode(fotobunka, INPUT);
pinMode(trimr1, INPUT);
pinMode(tlacitkoKvitance, INPUT);
// vsechno vypni
vypniVse();
// nastav watchdog na 8s
wdt_enable(WDTO_8S);
}
void loop() {
wdt_reset(); // resetuj watchdog
ldr_value = analogRead(ldr); //čte hodnoty LDR
Serial.print("HODNOTA FOTOBUNKY = ");
Serial.println(ldr_value); //zobrazí hodnoty LDR na seriove lince
Serial.println("Cekam na sepnuti termostatu ..."); // ladici seriova komunikace
smycka1max = map(analogRead(trimr1), 0, 1024, 60, 720); // nastaveni doby zapaleni trimrem na A2
if(digitalRead(kotlovyTermostat) == HIGH){ // kotlovy termostat je zapnuty
Serial.println("Kotlovy termostat zapnut"); // ladici seriova komunikace
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("TERMOSTAT ZAPNUT"); // zobrazeni na displeji
delay (2000);
// startovaci davka pelet
//------------------------
zapalovaciDavkaPelet();
// proces zapaleni
//----------------
zapaleni();
// test poruchy
// -----------------
//testPlamene();
// udrzeni horeni
//--------------
udrzujHoreni();
// dohoreni
//---------
dohoreni();
} else {
Serial.println("Kotlovy/Prostorovy termostat vypnut"); // ladici seriova komunikace
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("TERMOSTAT VYPNUT"); // zobrazeni na displeji
}
// kvitence pripadne poruchy
//-------------------------------
kvitancePoruchy();
}
void vypniVse() {
// funkce vypni vse
Serial.println("Vypinam vsechny rele ..."); // ladici seriova komunikace
digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
digitalWrite(spirala, HIGH); //vypni zhaveni
digitalWrite(ventilator, HIGH); //vypni ventilator
}
void zapalovaciDavkaPelet() {
// prvotni davkovani pelet pro zapaleni
Serial.println("Davkuji pelety pro zapaleni ... 110s"); // ladici seriova komunikace
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("ST.DAVKA "); // zobrazeni na displeji
digitalWrite(davkovaniPelet, LOW); //davkuj pelety
for (smycka4 = 0; smycka4 < smycka4max; smycka4 ++){
delay(1000);
wdt_reset(); // resetuj watchdog
Serial.print("Stav: ");
Serial.print(smycka4);
Serial.print("s/");
Serial.print(smycka4max);
Serial.println("s ");
lcd.setCursor(9, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print(smycka4);
lcd.setCursor(12, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("/"); // zobrazeni na displeji
lcd.print(smycka4max);
}
digitalWrite(davkovaniPelet, HIGH); //potom vypni davkovani
digitalWrite(ventilator, LOW); //zapni ventilator
digitalWrite(spirala, LOW); //zapni zhaveni
}
void zapaleni() {
// funkce zapaleni pelet
// 2 pokusy o zapaleni
Serial.println("Spoustim zapaleni ..."); // ladici seriova komunikace
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("ZAPALENI "); // zobrazeni na displeji
for (smycka3 = 0; smycka3 < smycka3max; smycka3 ++){
// smycka "1-10" minut zapalovani
for (smycka1 = 0; smycka1 < smycka1max; smycka1 ++){
wdt_reset(); // resetuj watchdog
Serial.print("Pokus o zapaleni "); // ladici seriova komunikace
Serial.print(smycka3); // ladici seriova komunikace
Serial.print("/"); // ladici seriova komunikace
Serial.println(smycka3max); // ladici seriova komunikace
Serial.print("Stav: "); // ladici seriova komunikace
Serial.print(smycka1); // ladici seriova komunikace
Serial.print("s/"); // ladici seriova komunikace
Serial.print(smycka1max); // ladici seriova komunikace
Serial.println("s "); // ladici seriova komunikace
lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("POKUS "); // zobrazeni na displeji
lcd.setCursor(6, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print(smycka3);
lcd.setCursor(7, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("/"); // zobrazeni na displeji
lcd.print(smycka3max);
lcd.setCursor(9, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print(smycka1);
lcd.print(" "); // zobrazeni na displeji
lcd.setCursor(12, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("/"); // zobrazeni na displeji
lcd.print(smycka1max);
if(digitalRead(kotlovyTermostat) == LOW){ // kotlovy termostat vypne
digitalWrite(spirala, HIGH); //vypni zhaveni
smycka1 = smycka1max; // ukonci smycku1
smycka3 = smycka3max; // ukonci smycku3
Serial.println("Rozepnuti termostatu ..."); // ladici seriova komunikace
bitSet(porucha,0); // nastav poruchu bit c.0 na "1"
}
if(analogRead(fotobunka) <= 500){ //pokud fotobunka vidi plamen
digitalWrite(spirala, HIGH); //vypni zhaveni
smycka1 = smycka1max; // ukonci smycku1
smycka3 = smycka3max; // ukonci smycku3
Serial.println(" hori ..."); // ladici seriova komunikace
Serial.println("Rozhoreni ... 50s ");
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("ROZHORENI "); // zobrazeni na displeji
lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("HORI... "); // zobrazeni na displeji
} else {
Serial.println(" nehori ..."); // ladici seriova komunikace
}
delay(1000);
}
for (smycka5 = 0; smycka5 < smycka5max; smycka5 ++){
delay(1000);
wdt_reset(); // resetuj watchdog
Serial.print("Stav: ");
Serial.print(smycka5);
Serial.print("s/");
Serial.print(smycka5max);
Serial.println("s ");
lcd.setCursor(10, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print(smycka5);
lcd.setCursor(12, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("/"); // zobrazeni na displeji
lcd.print(smycka5max);
}
//delay(5000); //cekej 5s
}
}
void udrzujHoreni() {
// funkce udrzeni horeni
ldr_value = analogRead(ldr); //čte hodnoty LDR
Serial.print("HODNOTA FOTOBUNKY = ");
Serial.println(ldr_value); //zobrazí hodnoty LDR na seriove lince
Serial.println("Udrzeni horeni ..."); // ladici seriova komunikace
for (smycka2 = 0; smycka2 < smycka2max; smycka2 ++){
wdt_reset(); // resetuj watchdog
smycka2 = 0; // vynuluj smycku
if(digitalRead(kotlovyTermostat) == HIGH){ // kotlovy termostat je zapnuty
if(analogRead(fotobunka) <= 500){ //pokud fotobunka vidi plamen
Serial.println("Test plamene ... hori"); // ladici seriova komunikace
Serial.println("Davkuji pelety ... ");
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("DAVKOVANI "); // zobrazeni na displeji
digitalWrite(davkovaniPelet, LOW); //davkuj pelety
delay(4000); //pockej 4s
wdt_reset(); // resetuj watchdog
delay(4000); //pockej 4s
wdt_reset(); // resetuj watchdog
Serial.println("Pauza ... ");
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("HORENI "); // zobrazeni na displeji
digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
delay(5000); //pockej 5s
wdt_reset(); // resetuj watchdog
delay(5000); //pockej 5s
wdt_reset(); // resetuj watchdog
} else {
delay(1000); // pocekej jeste 1s a zkus to znovu
if(analogRead(fotobunka) >= 500){ //pokud fotobunka nevidi plamen
Serial.println("Test plamene ... porucha"); // ladici seriova komunikace
//lcd.clear(); // smaze displej pred dalsi smyckou
lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("NEHORI - PORUCHA"); // zobrazeni na displeji
//delay (500);
smycka2 = smycka2max; // ukonci smycku
//porucha = 1; // nastav poruchu
bitSet(porucha,1); // nastav poruchu bit c.1 na "1"
digitalWrite(alarm, LOW); // zapni alarm
}
}
} else {
smycka2 = smycka2max; // ukonci smycku
}
}
}
void dohoreni() {
// funkce dohoreni
Serial.println("Dohoreni ... 840s "); // ladici seriova komunikace
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("DOHORENI "); // zobrazeni na displeji
digitalWrite(davkovaniPelet, HIGH); //vypni davkovani pelet
digitalWrite(spirala, HIGH); //vypni zhaveni - pro jistotu
for (smycka6 = 0; smycka6 < smycka6max; smycka6 ++){
Serial.print("Stav: ");
Serial.print(smycka6);
Serial.print("s/");
Serial.print(smycka6max);
Serial.println("s ");
lcd.setCursor(9, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print(smycka6);
lcd.print(" "); // zobrazeni na displeji
lcd.setCursor(12, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("/"); // zobrazeni na displeji
lcd.print(smycka6max);
delay(1000);
wdt_reset(); // resetuj watchdog
}
digitalWrite(ventilator, HIGH); //vypni ventilator
}
void kvitancePoruchy() {
// funkce kvitance poruchy
if(porucha > 0 ){ // kdyz je porucha aktivni
Serial.println("Kvitance poruchy ..."); // ladici seriova komunikace
// vypni vse
vypniVse();
while (digitalRead(tlacitkoKvitance) == LOW) { // zapni alarm a cekej na stisk tlacitka
digitalWrite(alarm, LOW); // zapni alarm
Serial.println("Porucha ... cekam na kvitanci"); // ladici seriova komunikace
lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("CEKAM NA KVITACI"); // zobrazeni na displeji
wdt_reset(); // resetuj watchdog
}
Serial.println("Porucha kvitovana ..."); // ladici seriova komunikace
digitalWrite(alarm, HIGH); // vypni alarm
porucha = 0; // vynuluj poruchu
} else { // jinak
Serial.println("Zadna porucha ..."); // ladici seriova komunikace
lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
lcd.print("ZADNA PORUCHA..."); // zobrazeni na displeji
digitalWrite(alarm, HIGH); // vypni alarm
}
}
a tady kód pro měření teploty a napojení na Exosite:
#include <EEPROM.h>
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Exosite.h>
// Pin use
#define ONEWIRE 23 //pin to use for One Wire interface
// Set up which Arduino pin will be used for the 1-wire interface to the sensor
OneWire oneWire(ONEWIRE);
DallasTemperature sensors(&oneWire);
/*==============================================================================
* Configuration Variables
*
* Change these variables to your own settings.
*=============================================================================*/
//String cikData = "6c1d94611bda02dbaa5cc6640218cd0360088b7f"; // <-- FILL IN YOUR CIK HERE! (https://portals.exosite.com -> Add Device)
byte macData[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 }; // <-- Fill in your Ethernet shield's MAC address here.
// Enter your Unique Identifier code here
char unique_id[11] = "0020024A24"; // <-- Generated from Adding your device in portals.exosite.com
// Use these variables to customize what datasources are read and written to.
const String readString = "d25";
// Number of Errors before we try a reprovision.
const unsigned char reprovisionAfter = 3;
// User defined variables for Exosite reporting period and averaging samples
#define REPORT_TIMEOUT 30000 //milliseconds period for reporting to Exosite.com
#define SENSOR_READ_TIMEOUT 5000 //milliseconds period for reading sensors in loop
/*==============================================================================
* End of Configuration Variables
*=============================================================================*/
unsigned char errorCount = reprovisionAfter; // Force Provision On First Loop
char macString[18]; // Used to store a formatted version of the MAC Address
EthernetClient client;
//Exosite exosite(cikData, &client);
Exosite exosite(&client);
String tempString;
int index = 0;
int lastIndex = -1;
float tempC;
//
// The 'setup()' function is the first function that runs on the Arduino.
// It runs completely and when complete jumps to 'loop()'
//
void setup() {
Serial.begin(115200);
Serial.println("Boot");
pinMode(25, OUTPUT); //assume using D25 as output to control remotely
// Start up the OneWire Sensors library
sensors.begin();
delay(1000);
Serial.println("Starting Exosite Temp Monitor");
Serial.print("OneWire Digital Pin Specified: ");
Serial.println(ONEWIRE);
Ethernet.begin(macData);
// wait 3 seconds for connection
delay(3000);
}
//
// The 'loop()' function is the 'main' function for Arduino
// and is essentially a constant while loop.
//
void loop() {
static unsigned long sendPrevTime = 0;
static unsigned long sensorPrevTime = 0;
char buffer[7];
String readParam = "";
String writeParam = "";
String writeString = "";
String returnString = "";
index = 0;
lastIndex = -1;
// Check if we should reprovision.
if (errorCount >= reprovisionAfter) {
if (exosite.provision("exosite", "ard-generic", unique_id)) {
errorCount = 0;
}
}
String uptime_str = String(millis()/1000);
writeString += "uptime="+ uptime_str;
//GET ANALOG 1 VALUE
//get average of a number of readings
int avgValue=0;
int readings = 0;
unsigned long avgTot = 0;
int avgCnt = 0;
while(readings<10)
{
avgTot += analogRead(A1);
avgCnt += 1;
avgValue = avgTot/avgCnt;
readings++;
}
String analog1_str = String(avgValue);
writeString += "&a1="+ analog1_str;
//Make Write and Read request to Exosite Platform
Serial.println("---- Do Read and Write ----");
if (exosite.writeRead(writeString, readString, returnString)) {
Serial.println("OK");
Serial.print("Returned: ");
Serial.println(returnString);
Serial.println("Parse out dataport alias values");
errorCount = 0;
for(;;){
index = returnString.indexOf("=", lastIndex+1);
if(index != 0){
String alias = "";
tempString = returnString.substring(lastIndex+1, index);
Serial.println(tempString);
lastIndex = returnString.indexOf("&", index+1);
alias = tempString;
if(lastIndex != -1){
tempString = returnString.substring(index+1, lastIndex);
}else{
tempString = returnString.substring(index+1);
}
if (alias == "d25"){
if(tempString == "1"){
digitalWrite(25, 1);
Serial.println("set Digital25 to 1");
}else if(tempString == "0"){
digitalWrite(25, 0);
Serial.println("set Digital25 to 0");
}else{
Serial.println(tempString);
}
} else if (alias == "msg"){
Serial.print("Message: ");
Serial.println(tempString);
} else {
Serial.println("Unknown Alias Dataport");
}
if(lastIndex == -1)
break;
}else{
//Serial.println(F("No Index"));
break;
}
}
} else {
Serial.println("No Connection");
errorCount++;
}
Serial.print("."); // print to show running
// Read sensor every defined timeout period
if (millis() - sensorPrevTime > SENSOR_READ_TIMEOUT) {
Serial.println();
Serial.println("Requesting temperature...");
sensors.requestTemperatures(); // Send the command to get temperatures
tempC = sensors.getTempCByIndex(0);
Serial.print("Celsius: ");
Serial.print(tempC);
Serial.println(" C ..........DONE");
sensorPrevTime = millis();
}
// Send to Exosite every defined timeout period
if (millis() - sendPrevTime > REPORT_TIMEOUT) {
Serial.println(); //start fresh debug line
Serial.println("Sending data to Exosite...");
readParam = ""; //nothing to read back at this time e.g. 'control&status' if you wanted to read those data sources
writeParam = "temp="; //parameters to write e.g. 'temp=65.54' or 'temp=65.54&status=on'
String tempValue = dtostrf(tempC, 1, 2, buffer); // convert float to String, minimum size = 1, decimal places = 2
writeParam += tempValue; //add converted temperature String value
//writeParam += "&message=hello"; //add another piece of data to send
if ( exosite.writeRead(writeParam, readParam, returnString)) {
Serial.println("Exosite OK");
if (returnString != "") {
Serial.println("Response:");
Serial.println(returnString);
}
}
else {
Serial.println("Exosite Error");
}
sendPrevTime = millis(); //reset report period timer
Serial.println("done sending.");
}
delay(1000); //slow down loop
}
Nefunkční kód (moje spojení dvou předešlých kódů) je v mým příspěvku #9905.
Předem moc díky!