Как решить эту проблему "expected primary-expression before ',' token"

Я новичок в этом мире Arduino, и у меня возникли некоторые проблемы. Я программирую что-то для школьного задания. Программа выдает ошибку, и мой учитель тоже не знает, как ее решить. Может быть, кто-нибудь сможет мне помочь?

#include <CapacitiveSensor.h>
#define speaker 

CapacitiveSensor   cs_2_3 = CapacitiveSensor(2,3);        
CapacitiveSensor   cs_2_4 = CapacitiveSensor(2,4);         
CapacitiveSensor   cs_2_5 = CapacitiveSensor(2,5);     
CapacitiveSensor   cs_2_6 = CapacitiveSensor(2,6);     
CapacitiveSensor   cs_2_7 = CapacitiveSensor(2,7);      
CapacitiveSensor   cs_2_8 = CapacitiveSensor(2,8);         
CapacitiveSensor   cs_2_9 = CapacitiveSensor(2,9);  
CapacitiveSensor   cs_2_10 = CapacitiveSensor(2,10);     

int s1;
int s2;
int s3;
int s4;
int s5;
int s6;
int s7;
int s8;


void setup(){ 
  Serial.begin(9600);
}

void loop()                    
{

  s1 =  cs_2_3.capacitiveSensor(3000);
  s2 =  cs_2_4.capacitiveSensor(3000);
  s3 =  cs_2_5.capacitiveSensor(3000);
  s4 =  cs_2_6.capacitiveSensor(3000);
  s5 =  cs_2_7.capacitiveSensor(3000);
  s6 =  cs_2_8.capacitiveSensor(3000);
  s7 =  cs_2_9.capacitiveSensor(3000);
  s8 =  cs_2_10.capacitiveSensor(3000);

  Serial.print("s1: ");
  Serial.println(s1);
  Serial.print("s2: ");
  Serial.println(s2);
  Serial.print("s3: ");
  Serial.println(s3);
  Serial.print("s4: ");
  Serial.println(s4);
  Serial.print("s5: ");
  Serial.println(s5);
  Serial.print("s6: ");
  Serial.println(s6);
  Serial.print("s7: ");
  Serial.println(s7);
  Serial.print("s8: ");
  Serial.println(s8);


  if (s1 > 500){  
    tone(speaker,131);   
   }
  else if (s2 > 500){ 
    tone(speaker,147);   
   }
  else if (s3 > 500){ 
    tone(speaker,165);
   }
  else if (s4 > 500){ 
    tone(speaker,175);
   }
  else if (s5 > 500){ 
    tone(speaker,196);
   }
  else if (s6 > 500){ 
    tone(speaker,220);
   }
  else if (s7 > 500){ 
    tone(speaker,247);
   }
  else if (s8 > 500){ 
    tone(speaker,262);  
   }

  if (s1<=500  &&  s2<=500  &&  s3<=500 && s4<=500  &&  s5<=500  &&  s6<=500 &&  s7<=500 &&  s8<=500){
    noTone(speaker);
  }
}

, 👍0

Обсуждение

Укажите строку, где указана ошибка., @Michel Keijzers

Это не имеет отношения к вашему вопросу, но конструкция «else if» выглядит не очень элегантно, особенно если тон s1 должен иметь такой же приоритет, как, например, s8. Можете ли вы найти другой способ выполнить эту часть кода?, @MichaelT

Подсказка: чем станет «tone(speaker,131);» если «#definepeaker»?, @Mikael Patel

Это строка, в которой указана ошибка: else if (s8 > 500){ тон(динамик,262);, @Anouk Jansen


1 ответ


Лучший ответ:

4

Это:

#define speaker

определяет «динамик» как пустую строку. Тогда:

tone(speaker,131);

переводится на

tone(,131);

что не имеет смысла. Компилятор ожидал найти выражение перед запятой.

,