Программа arduino выдаёт ошибку expected //primary-expression before ')' token error: //expected ';' before '}' token E

#include "pulse-sensor-arduino.h"
#include "Arduino.h"
#define PulseSensorbegin

int pulsePin = 0;                
int blinkPin = 13;                
int fadePin = 5;                 
int fadeRate = 0;                 
volatile int BPM;                  
volatile int Signal;                
volatile int IBI = 600;            

volatile boolean QS = false;        

void setup(){

  pinMode(blinkPin,OUTPUT);   
  pinMode(fadePin,OUTPUT);          
  Serial.begin(115200);           

  PulseSensorbegin();

}


void loop() {

   sendDataToProcessing('S', Signal);     
   if (QS == true) 
   {        
       fadeRate = 255;                  
       sendDataToProcessing('B',BPM);   
       sendDataToProcessing('Q',IBI);  
       QS = false;                      
   }

   ledFadeToBeat();

   delay(5000);                             
}


void ledFadeToBeat(){

    fadeRate -= 15;                         
    fadeRate = constrain(fadeRate,0,255);   
    analogWrite(fadePin,fadeRate);          
  }


void sendDataToProcessing(char symbol, int data ){

    Serial.print(symbol);                
    Serial.println(data);                
  }

/// моя программа ccp

#include "pulse-sensor-arduino.h"

volatile int rate[10];                        
volatile unsigned long sampleCounter = 0;     
volatile unsigned long lastBeatTime = 0;      
volatile int P =512;                         
volatile int T = 512;                        
volatile int thresh = 512;                    
volatile int amp = 100;                       
volatile boolean firstBeat = true;           
volatile boolean secondBeat = false;          
volatile boolean Pulse = false;              
volatile int pulsePin;

volatile int PulseSensor::IBI = 600;          
volatile int PulseSensor::BPM;                
volatile int PulseSensor::Signal;             
volatile boolean PulseSensor::QS = false;     
void PulseSensor::begin(int pPin)
{
  pinMode(pulsePin, INPUT);
  pulsePin = pPin;


  TCCR1A = 0x00;
  TCCR1B = 0x0C;  
  OCR1A = 0x7C;  
  TIMSK1 = 0x02;
  sei();             
}


ISR(TIMER1_COMPA_vect)

{                        
  cli();                                      
  PulseSensor::Signal = analogRead(pulsePin);             
  sampleCounter += 2;                         
  int N = sampleCounter - lastBeatTime;       


  if(PulseSensor::Signal < thresh && N > (PulseSensor::IBI/5)*3)
{       
    if (PulseSensor::Signal < T){                        
      T = PulseSensor::Signal;                         
    }
  }

  if(PulseSensor::Signal > thresh && PulseSensor::Signal > P)
{          
    P = PulseSensor::Signal;                             
  }                                       


  if (N > 250){                                  
    if ( (PulseSensor::Signal > thresh) && (Pulse == false) && (N > (PulseSensor::IBI/5)*3) )
    {        
      Pulse = true;                              
      PulseSensor::IBI = sampleCounter - lastBeatTime;        
      lastBeatTime = sampleCounter;              

      if(secondBeat){                        
        secondBeat = false;                 
        for(int i=0; i<=9; i++){             
          rate[i] = PulseSensor::IBI;                      
        }
      }

      if(firstBeat){                         
        firstBeat = false;                   
        secondBeat = true;                   
        sei();                               
        return;                              
      }   



      word runningTotal = 0;                    

      for(int i=0; i<=8; i++){                
        rate[i] = rate[i+1];                  
        runningTotal += rate[i];             
      }

      rate[9] = PulseSensor::IBI;                          
      runningTotal += rate[9];               
      runningTotal /= 10;                      
      PulseSensor::BPM = 60000/runningTotal;              
      PulseSensor::QS = true;                              
    }                       
  }

  if (PulseSensor::Signal < thresh && Pulse == true){   
    Pulse = false;                        
    amp = P - T;                           
    thresh = amp/2 + T;                    
    P = thresh;                          
    T = thresh;
  }

  if (N > 2500){                           
    thresh = 512;                         
    P = 512;                              
    T = 512;                               
    lastBeatTime = sampleCounter;                
    firstBeat = true;                      
    secondBeat = false;                    
  }

  sei();                                 
} 

//мое программирование заголовка

#ifndef PULSE_SENSOR_ARDUINO_H
#define PULSE_SENSOR_ARDUINO_H

#include "Arduino.h"

class PulseSensor
{
public:
  static void begin(int pulsePin);

  static volatile int BPM;          
  static volatile int Signal;        
  static volatile int IBI;           
  static volatile boolean QS;        
};

#endif 

, 👍-1

Обсуждение

«Дамп данных» — плохой способ задавать вопросы. Хорошим началом будет сообщение нам, откуда вы получили сообщение об ошибке и что вы сделали, чтобы попытаться его исправить., @Russell McMahon

я получил ошибку в PulseSensorbegin(); в настройке void() я получил сообщение об ошибке, подобное этому ///ожидаемое первичное выражение перед ')' Ошибка компиляции токена, @Karthi Keyan

Я заметил, что «ifndef» должен быть «#ifndef», а затем понял, что редактор «съедает» символ «#» и что он ЕСТЬ в вашем коде., @Russell McMahon

Предположительно, PulseSensorbegin() на самом деле означает PulseSensor::begin()?, @Peter Bloomfield

да, я вызываю функцию void PulseSensor::begin(int pPin) @PeterR.Bloomfield, @Karthi Keyan

@KarthiKeyan Строка в setup(), в которой говорится, что PulseSensorbegin(), однако, этого не делает. Вероятно, именно это и является причиной вашей ошибки, поскольку в нем отсутствует оператор области действия (::)., @Peter Bloomfield

кто-нибудь, кто поможет в этом. Программа Arduino, которая мигнет светодиодом два раза (с задержкой между ними). Светодиод мигает только при нажатии специальной кнопки. если кнопка не нажата, светодиод должен гореть, @Tobias


1 ответ


4

В верхней части вашей программы у вас есть это:

#define PulseSensorbegin

который определяет PulseSensorbegin как ничто

Затем у вас есть:

PulseSensorbegin();

который препроцессор превращает в:

();

Именно здесь и возникает ошибка.

,