ожидаемый неквалифицированный идентификатор перед 'if' if (!client.connected() && LastConnected)
#include <PulseSensorPlayground.h>
#include <Timer.h>
#include <SPI.h>
#include <Ethernet.h>
Timer t;
PulseSensorPlayground pulseSensor;
// Настройки локальной сети
byte mac[] = { 0xD4, 0x28, 0xB2, 0xFF, 0xA0, 0xA1 }; // Должно быть уникальным в локальной сети
// Настройки ThingSpeak
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "UVGOLIA40B9YHKU8";
const int updateThingSpeakInterval = 16 * 1000; // Интервал времени в миллисекундах для обновления ThingSpeak (количество секунд * 1000 = интервал)
// Настройка переменной
const int PulseWire = A0; // PulseSensor ФИОЛЕТОВЫЙ ПРОВОД подключен к АНАЛОГОВОМ PIN 0
const int LED13 = 13; // Встроенный светодиод Arduino, расположенный рядом с PIN 13.
int Threshold = 550; //для датчика сердечного ритма
float myTemp;
int myBPM;
String BPM;
String temp;
int error;
int panic;
int raw_myTemp;
float Voltage;
float tempC;
long lastConnectionTime = 0;
boolean lastConnected = false;
int failedCounter = 0;
// Инициализируем Ethernet-клиент Arduino
EthernetClient client;
void setup()
{
// Запускаем Serial для отладки на мониторе последовательного порта
Serial.begin(9600);
pulseSensor.analogInput(PulseWire);
pulseSensor.blinkOnPulse(LED13); //автоматическое мигание светодиода Arduino с сердцебиением.
pulseSensor.setThreshold(Threshold);
// Дважды проверяем, что объект «pulseSensor» создан и «начал» видеть сигнал.
if (pulseSensor.begin()) {
Serial.println("We created a pulseSensor Object !"); //Это печатается один раз при включении питания Arduino или при перезагрузке Arduino.
}
// Запускаем Ethernet на Arduino
void startEthernet();
}
void loop()
{
// Считаем значение с контакта аналогового входа 0
String analogPin0 = String(analogRead(A0), DEC);
// Распечатываем ответ обновления последовательному монитору
if (client.available())
{
char c = client.read();
Serial.print(c);
}
//температура---
raw_myTemp = analogRead(A1);
Voltage = (raw_myTemp / 1023.0) * 5000; // 5000, чтобы получить милливоты.
tempC = Voltage * 0.1;
Serial.println(tempC);
//Serial.print(temp);
//Serial.print(" ");
//-----BMP180-----------
//
int myBPM = pulseSensor.getBeatsPerMinute(); // Вызывает функцию нашего объектаpulsSensor, которая возвращает BPM в виде «int».
// "myBPM" теперь хранит это значение BPM.
if (pulseSensor.sawStartOfBeat()) { // Постоянно проверяем, произошел ли «бит».
Serial.println(myBPM);
char buffer1[10];
char buffer2[10];
String BPM = dtostrf(myBPM, 4, 1, buffer1);
String temp = dtostrf(tempC, 4, 1, buffer2);
// Распечатываем значение внутри myBPM.
}
}
//----------------
void panic_button() {
panic = digitalRead(8);
if (panic == HIGH) {
Serial.println(panic);
}
}
// Отключаемся от ThingSpeak
if (!client.connected() && lastConnected)
{
Serial.println("...disconnected");
Serial.println();
client.stop();
}
// Обновляем ThingSpeak
if (!client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval))
{
updateThingSpeak("field1=" + BPM + "&field2=" + temp + "&field3=" + panic);
}
// Проверяем, нужно ли перезапустить Arduino Ethernet
if (failedCounter > 3 ) {
startEthernet();
}
lastConnected = client.connected();
}
void updateThingSpeak(String tsData)
{
if (client.connect(thingSpeakAddress, 80))
{
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + UVGOLIA40B9YHKU8 + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
client.print("\n\n");
client.print(tsData);
lastConnectionTime = millis();
if (client.connected())
{
Serial.println("Connecting to ThingSpeak...");
Serial.println();
failedCounter = 0;
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak failed (" + String(failedCounter, DEC) + ")");
Serial.println();
}
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak Failed (" + String(failedCounter, DEC) + ")");
Serial.println();
lastConnectionTime = millis();
}
}
void startEthernet()
{
client.stop();
Serial.println("Connecting Arduino to network...");
Serial.println();
delay(1000);
// Подключаемся к сети и получаем IP-адрес с помощью DHCP
if (Ethernet.begin(mac) == 0)
{
Serial.println("DHCP Failed, reset Arduino to try again");
Serial.println();
}
else
{
Serial.println("Arduino connected to network using DHCP");
Serial.println();
}
delay(1000);
}
@noelyn, 👍1
Обсуждение1 ответ
▲ 5
Если вы посмотрите на этот фрагмент вашего кода:
void panic_button(){
panic = digitalRead(8);
if(panic == HIGH){
Serial.println(panic);
}
}
// Отключаемся от ThingSpeak
if (!client.connected() && lastConnected)
Вы видите, что функция Panic_button() останавливается на последней }, следующей является инструкция, которая не является частью функции.
Я думаю, что } следует удалить, но ваш код довольно плохо выровнен, поэтому:
- Сначала выровняйте все { и }
- Отступ каждого уровня с помощью табуляции или 2, 3 или 4 пробелов.
- Вы увидите несовпадение, добавьте или удалите { (как указано выше) или }.
,
@Michel Keijzers
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Вы вообще не вопрос написали! Пожалуйста, отредактируйте, @MichaelT