TCCR1A и TCCR2A на Леонардо
Я пытаюсь использовать библиотеку TTS для Arduino на плате Arduino Micro, основанной на Leonardo. Когда я пытаюсь скомпилировать свой скетч, я получаю некоторые ошибки;
/libraries/TTS/TTS.cpp: In function 'void soundOff()':
/libraries/TTS/TTS.cpp:355: error: 'TCCR2A' was not declared in this scope
/libraries/TTS/TTS.cpp:355: error: 'COM2B1' was not declared in this scope
/libraries/TTS/TTS.cpp: In function 'void soundOn()':
/libraries/TTS/TTS.cpp:382: error: 'TCCR2A' was not declared in this scope
/libraries/TTS/TTS.cpp:382: error: 'COM2B1' was not declared in this scope
/libraries/TTS/TTS.cpp:382: error: 'WGM20' was not declared in this scope
/libraries/TTS/TTS.cpp:383: error: 'TCCR2B' was not declared in this scope
/libraries/TTS/TTS.cpp:383: error: 'CS20' was not declared in this scope
/libraries/TTS/TTS.cpp:383: error: 'WGM22' was not declared in this scope
/libraries/TTS/TTS.cpp:384: error: 'OCR2B' was not declared in this scope
/libraries/TTS/TTS.cpp:385: error: 'TCNT2' was not declared in this scope
/libraries/TTS/TTS.cpp: In function 'void sound(byte)':
/libraries/TTS/TTS.cpp:424: error: 'OCR2B' was not declared in this scope
/libraries/TTS/TTS.cpp:425: error: 'TCNT2' was not declared in this scope
Погуглив выяснилось, что Леонардо использует разные таймеры. И другие вещи, которые я не понимаю! Но кроме этого я не смог найти ответа.
Какие константы правильно использовать для плат Leonardo и можно ли обновить библиотеку, чтобы она работала с обеими платами?
@NoChecksum, 👍3
Обсуждение1 ответ
Лучший ответ:
▲ 0
Очевидно, библиотека в ссылке ОП была обновлена для поддержки Леонардо, поэтому теперь эта проблема должна быть решена.
р>
,
@MichaelT
Это патч Leonardo, если он кому-то пригодится https://github.com/jscrane/TTS/pull/6/commits/d84cbd2eb39e513e62b4f33a55ccfad412f5aec8, @NoChecksum
Смотрите также:
- Невозможно использовать библиотеку клавиатуры с Arduino UNO даже после смены прошивки.
- Вибрационный геймпад Arduino с силовой обратной связью
- Прерывание переполнения Timer0 не работает
- Библиотека джойстиков Arduino не распознается играми (Steam)
- Программирование Arduino Uno R3 для срабатывания реле каждые 24 часа
- Библиотека LiquidCrystal и таймеры кажутся несовместимыми.
- Запуск программного сброса Arduino Leonardo
- Подключение нескольких MPU 6050 к Micro/Lenardo
Самое забавное, что библиотеки Arduino предоставляют независимые от микроконтроллера способы сделать все это, а этот код полностью игнорирует их все., @Ignacio Vazquez-Abrams
@IgnacioVazquez-Abrams Отличные новости! Есть ли у вас ссылка на то, как использовать эту функцию библиотеки, или пример, пожалуйста?, @NoChecksum
Эта "библиотека" написана специально для ATMega328 (не ATmega32u4 внутри Leonardo). Вы должны быть в состоянии портировать ее. Несложно, но и не задача для новичка., @Gerben
Эх. Я только что заметил, что он использует параметры, не контролируемые базовыми библиотеками. Вам нужно будет найти более полнофункциональную библиотеку PWM для него. Но если исключить эту условную компиляцию, то это будет выходом., @Ignacio Vazquez-Abrams
Вам _обязательно_ использовать Micro? Ваш код, вероятно, будет работать на Uno (или какой-либо другой плате на базе ATmega328). Чтобы проверить, выберите Uno в меню
Tools->Board
и попробуйте скомпилировать его., @Greenonline