Ошибка компиляции скетча Arduino
Я пытаюсь увеличить громкость усилителя Max9744 мощностью 20 Вт от Adafruit с помощью скетча Arduino. Я только начинающий и работаю с внуком, так что это может быть больше, чем я могу сделать.
Наш проект заключается в том, чтобы включить воспроизведение музыки, когда датчик определяет, что дверь открыта.
Интересно, может ли кто-нибудь помочь с этой ошибкой компиляции. Я удалил из кода весь код, не относящийся к проблеме, в основном код датчика.
Заранее спасибо за любую помощь, которую вы можете оказать.
выходной статус 1 «VS1053_CONTROL_SPI_SETTING» не был объявлен в этой области действия
Вот код
#include <SPI.h>[code][/code]
#include <Adafruit_VS1053.h>
#include <SD.h>
#include <Wire.h> // Код усилителя
#define BREAKOUT_RESET 9 // Сброс контакта VS1053 (выход)
#define BREAKOUT_CS 10 // Вывод выбора микросхемы VS1053 (выход)
#define BREAKOUT_DCS 8 // Вывод выбора данных/команды VS1053 (выход)
// Это контакты, используемые для щита музыкального создателя
#define SHIELD_RESET -1 // Контакт сброса VS1053 (не используется!)
#define SHIELD_CS 7 // Вывод выбора микросхемы VS1053 (выход)
#define SHIELD_DCS 6 // Вывод выбора данных/команд VS1053 (выход)
// Это общие контакты между разъемом и щитом
#define CARDCS 4 // Выбор контакта чипа карты
// DREQ должен быть выводом Int, см. http://arduino.cc/en/Reference/attachInterrupt
#define DREQ 3 // Запрос данных VS1053, в идеале вывод прерывания
#define MAX9744_I2CADDR 0x4B
int8_t thevol = 63; // Я хочу максимальную громкость всегда
Adafruit_VS1053_FilePlayer musicPlayer =
Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
void setup() {
SD.begin(CARDCS);
Wire.begin();
if (! setvolume(thevol)) {
Serial.println("Failed to set volume, MAX9744 not found!");
while (1);
}
}
boolean setvolume(int8_t v) {
// не может быть больше 63 или меньше 0
if (v > 63) v = 63;
if (v < 0) v = 0;
Serial.print("Setting volume to ");
Serial.println(v);
Wire.beginTransmission(MAX9744_I2CADDR);
Wire.write(v);
if (Wire.endTransmission() == 0)
return true;
else
return false;
}
void Adafruit_VS1053::setVolume(uint8_t left, uint8_t right) {
uint16_t v;
v = left;
v <<= 8;
v |= right;
noInterrupts(); //cli();
sciWrite(VS1053_REG_VOLUME, v);
interrupts(); //sei();
}
void Adafruit_VS1053::sciWrite(uint8_t addr, uint16_t data) {
#ifdef SPI_HAS_TRANSACTION
if (useHardwareSPI) SPI.beginTransaction(VS1053_CONTROL_SPI_SETTING);
#endif
digitalWrite(_cs, LOW);
spiwrite(VS1053_SCI_WRITE);
spiwrite(addr);
spiwrite(data >> 8);
spiwrite(data & 0xFF);
digitalWrite(_cs, HIGH);
#ifdef SPI_HAS_TRANSACTION
if (useHardwareSPI) SPI.endTransaction();
#endif
}
void loop() {
while (counter < 3) {
musicPlayer.begin();
Serial.println(F("Playing track 001"));
musicPlayer.playFullFile("track001.mp3");
delay (100);
}
delay(1000);
musicPlayer.stopped();
}
@Larry C, 👍1
1 ответ
Функции Adafruit_VS1053::sciWrite
и Adafruit_VS1053::setVolume
— это функции из библиотеки. Они находятся в файле Adafruit_VS1053.cpp.
Вам не следует копировать эти функции в свой собственный скетч.
В библиотеке есть несколько примеров. Постарайтесь держаться поближе к этим примерам.
- Проблема с датчиком температуры и влажности DHT11
- Получение ошибки ets 8 января 2013,rst cause:4,boot mode(1,6) wdt reset
- Выводы прерываний Arduino Mega 2560 и отображение портов с помощью поворотного энкодера
- Данные DHT11 из Arduino UNO в Firebase через ESP8266
- Объяснение кода MPU6050
- Измерение скорости двигателя постоянного тока с помощью поворотного энкодера
- Почему dtostrf() не работает для этого значения?
- Как я могу прервать задержку() при нажатии кнопки?