помогите перенести код в пользовательский блок
Добавлено: 11 авг 2021, 21:30
Добрый день! Помогите перенести код в пользовательский блок. В "базовом" варианте, код компилируется, но при попытке дописать разрешение на работу и таймер задержки опроса, то возникает ошибка в функции выделенным желтым цветом. Код ниже предоставлен:
#include "arduino.h"
#include "SoftwareSerial.h"
#define MAXLENGTH 9
SoftwareSerial mySerial(10, 11);
byte receivedCommandStack[MAXLENGTH];
byte checkSum(byte array[], byte length);
boolean receivedFlag;
void setup() {
mySerial.begin(9600);
}
void loop() {
ze08_PPM();
}
byte checkSum(byte array[], byte length) {
byte sum = 0;
for (int i = 1; i < length - 1; i ++) {
sum += array;
}
sum = (~sum) + 1;
return sum;
}
boolean available1() { //new data was recevied
while (mySerial.available()) {
for (byte index = 0; index < MAXLENGTH - 1; index++) {
receivedCommandStack[index] = receivedCommandStack[index + 1];
}
receivedCommandStack[MAXLENGTH - 1] = mySerial.read();
byte sumNum = checkSum(receivedCommandStack, MAXLENGTH);
if ( (receivedCommandStack[0] == 0xFF) && (receivedCommandStack[1] == 0x17) && (receivedCommandStack[2] == 0x04) && (receivedCommandStack[MAXLENGTH - 1] == sumNum) ) { //head bit and sum are all right
receivedFlag = 1; //new data received
return receivedFlag;
} else {
receivedFlag = 0; //data loss or error
return receivedFlag;
}
}
return receivedFlag;
}
float ze08_PPM() {
if (available1() == 1) {
receivedFlag = 0;
float ppb = (unsigned int) (receivedCommandStack[4] * 256) + receivedCommandStack[5]; // bit 4: ppm high 8-bit; bit 5: ppm low 8-bit
float ppm = ppb / 1000; // 1ppb = 1000ppm
return ppm;
}
}
При попытке переноса у меня возникала проблема с функцией помеченной желтым цветом, что-то я там не правильно писал
адрес источника https://chocoball.tistory.com/entry/Har ... nsor-using
#include "arduino.h"
#include "SoftwareSerial.h"
#define MAXLENGTH 9
SoftwareSerial mySerial(10, 11);
byte receivedCommandStack[MAXLENGTH];
byte checkSum(byte array[], byte length);
boolean receivedFlag;
void setup() {
mySerial.begin(9600);
}
void loop() {
ze08_PPM();
}
byte checkSum(byte array[], byte length) {
byte sum = 0;
for (int i = 1; i < length - 1; i ++) {
sum += array;
}
sum = (~sum) + 1;
return sum;
}
boolean available1() { //new data was recevied
while (mySerial.available()) {
for (byte index = 0; index < MAXLENGTH - 1; index++) {
receivedCommandStack[index] = receivedCommandStack[index + 1];
}
receivedCommandStack[MAXLENGTH - 1] = mySerial.read();
byte sumNum = checkSum(receivedCommandStack, MAXLENGTH);
if ( (receivedCommandStack[0] == 0xFF) && (receivedCommandStack[1] == 0x17) && (receivedCommandStack[2] == 0x04) && (receivedCommandStack[MAXLENGTH - 1] == sumNum) ) { //head bit and sum are all right
receivedFlag = 1; //new data received
return receivedFlag;
} else {
receivedFlag = 0; //data loss or error
return receivedFlag;
}
}
return receivedFlag;
}
float ze08_PPM() {
if (available1() == 1) {
receivedFlag = 0;
float ppb = (unsigned int) (receivedCommandStack[4] * 256) + receivedCommandStack[5]; // bit 4: ppm high 8-bit; bit 5: ppm low 8-bit
float ppm = ppb / 1000; // 1ppb = 1000ppm
return ppm;
}
}
При попытке переноса у меня возникала проблема с функцией помеченной желтым цветом, что-то я там не правильно писал
адрес источника https://chocoball.tistory.com/entry/Har ... nsor-using