ожидаемый неквалифицированный идентификатор перед '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);
}

, 👍1

Обсуждение

Вы вообще не вопрос написали! Пожалуйста, отредактируйте, @MichaelT


1 ответ


5

Если вы посмотрите на этот фрагмент вашего кода:

void panic_button(){
  panic = digitalRead(8);
    if(panic == HIGH){
    Serial.println(panic);
    }
}
// Отключаемся от ThingSpeak
if (!client.connected() && lastConnected)

Вы видите, что функция Panic_button() останавливается на последней }, следующей является инструкция, которая не является частью функции.

Я думаю, что } следует удалить, но ваш код довольно плохо выровнен, поэтому:

  • Сначала выровняйте все { и }
  • Отступ каждого уровня с помощью табуляции или 2, 3 или 4 пробелов.
  • Вы увидите несовпадение, добавьте или удалите { (как указано выше) или }.
,