Как решить эту проблему "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);
}
}
@Anouk Jansen, 👍0
Обсуждение1 ответ
Лучший ответ:
▲ 4
Это:
#define speaker
определяет «динамик» как пустую строку. Тогда:
tone(speaker,131);
переводится на
tone(,131);
что не имеет смысла. Компилятор ожидал найти выражение перед запятой.
,
@Edgar Bonet
Смотрите также:
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Как справиться с rollover millis()?
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
- Можно ли сделать несколько функций loop() с помощью Arduino Uno?
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- устаревшее преобразование из строковой константы в 'char*'
Укажите строку, где указана ошибка., @Michel Keijzers
Это не имеет отношения к вашему вопросу, но конструкция «else if» выглядит не очень элегантно, особенно если тон s1 должен иметь такой же приоритет, как, например, s8. Можете ли вы найти другой способ выполнить эту часть кода?, @MichaelT
Подсказка: чем станет «tone(speaker,131);» если «#definepeaker»?, @Mikael Patel
Это строка, в которой указана ошибка: else if (s8 > 500){ тон(динамик,262);, @Anouk Jansen