Моя проблема, 51:28: ошибка: ожидаемое первичное выражение перед токеном ')' может кто-нибудь дать мне совет или направить меня к исправлению моей проблемы? Без разницы
// ноты в мелодии:
int melody[] = {
};
// длительности нот: 4 = четвертная нота, 8 = восьмая нота и т. д.:
int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4
};
//Константы:
const int ledPin = 2; // контакт 3 имеет функцию ШИМ
const int flexPin = A0; // контакт A0 для чтения аналогового входа
const int ledoth = 4;
const int flexPin2 = A1;
//Переменные:
int value; //сохраняем аналоговое значение
void setup(){
pinMode(ledPin, OUTPUT); //Установить контакт 3 как «выход»
Serial.begin(9600); // Начать последовательную связь
pinMode(ledoth, OUTPUT);
Serial.begin(9600);
}
void loop(){
value = analogRead(flexPin); //Чтение и сохранение аналогового значения с потенциометра
Serial.println(value); //Распечатать значение
value = analogRead(flexPin2);
Serial.println(value);
// Низкая нота (красный)
// значение = карта (значение, 400, 600, 0, 255); // Сопоставить значение 0-1023 с 0-255 (ШИМ)
if(value<767)
{digitalWrite(ledoth,LOW);
digitalWrite(ledPin,LOW);
//аналоговая запись(ledPin, значение); //Отправляем значение ШИМ на светодиод
delay(100);
//Небольшая задержка
}
***if ((flexPin)) value<910;))&& (value>767));***
{digitalWrite(ledoth,LOW);
digitalWrite(ledPin,HIGH);
//аналоговая запись(ledPin, значение); //Отправляем значение ШИМ на светодиод
delay(100);
//Небольшая задержка
}
//Высокая нота (синяя)
// значение = карта (значение, 700, 900, 256, 1000); // Сопоставить значение 0-1023 с 0-255 (ШИМ)
if(value>910){
digitalWrite(ledPin,LOW);
digitalWrite(ledoth,HIGH); {
// перебираем ноты мелодии:
for (int thisNote = 0; thisNote < 8; thisNote++) {
// чтобы рассчитать длительность ноты, возьмите одну секунду, деленную на тип ноты.
//например, четвертная нота = 1000/4, восьмая = 1000/8 и т. д.
int noteDuration = 1000 / noteDurations[thisNote];
tone(4, melody[thisNote], noteDuration);
// чтобы различать ноты, установите минимальное время между ними.
// продолжительность ноты + 30% работает хорошо:
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// остановить воспроизведение звука:
noTone(8);
}
}
//аналоговая запись(ледот, значение); //Отправляем значение ШИМ на светодиод
delay(100); } //Небольшая задержка
}
@Amen, 👍-1
Обсуждение1 ответ
▲ 1
Эта строка вообще не имеет никакого смысла. Просто посчитайте открывающие и закрывающие скобки и т. д.
if ((flexPin)) value<910;))&& (value>767));
{digitalWrite(ledoth,LOW); digitalWrite(ledPin,HIGH);
Давайте проанализируем это:
if ((flexPin)) value<910;
flex pin не равен нулю, так что это в основном "if (true) compapare value больше 767 и ничего не делать с результатом ;")) && (value>767))
4 закрывающих скобки, одна открывающая - абсолютная синтаксическая ошибка - как будто вы случайно скопировали что-то не туда; {
неуместная точка с запятой приводит кif ((value < 910) && (value > 767)); { что-нибудь;
ничего не делать, а затем безоговорочно делать "что-то"
Согласно коду, это должно быть так:
if ((value < 910) && (value > 767)) { // для значений от 767 до 910, исключая do:
digitalWrite(ledoth,LOW);
digitalWrite(ledPin,HIGH);
//аналоговая запись(ledPin, значение); //Отправляем значение ШИМ на светодиод
delay(100); //Небольшая задержка
}
Кстати, я понятия не имею, что это ((flexPin)) там должно было означать.
,
@KIIV
Смотрите также:
- Отправьте несколько значений int из Python в Arduino, используя pySerial
- Почему нужно использовать latin-1 вместо utf-8 при использовании python с arduino?
- В чем разница, когда ардуино был отключен от сети, и когда последовательный порт был закрыт?
- Ардуино не может правильно выводить
- Программирование Arduino с использованием Python, а не C/C ++
- Печать string and integer LCD
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
Ваши брекеты не подходят. Условие оператора if должно быть заключено в один набор фигурных скобок ( ). Внутри вы можете использовать больше фигурных скобок, чтобы структурировать условие. В вашем коде скобка, открывающая условие операторов if, закрывается после flexpin, хотя ваши условия, похоже, продолжаются. Кроме того, наличие flexpin там не имеет для меня особого смысла. Полностью перепишите эту строку с правильным синтаксисом C++., @chrisl