проблема с кодом помогите пожалуйста.
- Войдите на сайт для отправки комментариев
Вс, 04/04/2021 - 11:17
У меня не работает код помогите пожалуйста.
Пишет что переменная freces должна быть константой, чтобы ее можно было поместить в раздел только для чтения с помощью '__attribute __ ((progmem))'
Как это исправить?
Код:
#include <avr/pgmspace.h>
#define PIN_LED 1
#define PIN_BUZZER 0
#define COUNT_NOTES 39
word frequences[COUNT_NOTES] PROGMEM = {
392, 392, 392, 311, 466, 392, 311, 466, 392,
587, 587, 587, 622, 466, 369, 311, 466, 392,
784, 392, 392, 784, 739, 698, 659, 622, 659,
415, 554, 523, 493, 466, 440, 466,
311, 369, 311, 466, 392 };
word durations[COUNT_NOTES] PROGMEM = {
350, 350, 350, 250, 100, 350, 250, 100, 700,
350, 350, 350, 250, 100, 350, 250, 100, 700,
350, 250, 100, 350, 250, 100, 100, 100, 200,
100, 350, 250, 100, 100, 100, 200,
100, 350, 250, 100, 750 };
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BUZZER, OUTPUT);
}
void loop()
{
for (byte i = 0; i < COUNT_NOTES; i++)
{
buzz(PIN_BUZZER, pgm_read_word(&(frequences[i])), 2 * pgm_read_word(&(durations[i])));
delay(100);
}
delay(3000);
}
void buzz(unsigned char pin, word frequencyInHertz, word timeInMilliseconds)
{
long delayAmount = (long)(long(1000000) / (long)frequencyInHertz);
long loopTime = (long)(((long)timeInMilliseconds * 500) / delayAmount);
for (long i = 0; i < loopTime; i++)
{
digitalWrite(pin, HIGH);
delayMicroseconds(delayAmount);
digitalWrite(pin, LOW);
delayMicroseconds(delayAmount);
}
}
И что мешает сделать ее константой ?
"const" в помощь
Пишет что переменная freces должна быть константой, чтобы ее можно было поместить в раздел только для чтения с помощью '__attribute __ ((progmem))'
Как это исправить?
Ты не поверишь! Объявить её, как константу. ;)))
Почувствуй разницу:
Пишет что переменная freces должна быть константой, чтобы ее можно было поместить в раздел только для чтения с помощью '__attribute __ ((progmem))'
Как это исправить?
Ты не поверишь! Объявить её, как константу. ;)))
Почувствуй разницу:
я не очень понимаю как это сделать
я не очень понимаю как это сделать
Смотрим на две строки, что Вам привели. Внимательно смотрим. Тычемся в них носом и ещё смотрим. И так до тех пор, пока не придёт понимание.
это конечо уже придирка , но где в коде #0 вообще переменная freces ?
это конечо уже придирка , но где в коде #0 вообще переменная freces ?
вы че новенький, понятно же, что надо додумывать за них самому.
переменная на самом деле frequences из 6 строки, отмазки на выбор:
- я тут поменял и не успел исправить.
- не тот скетч залил, у меня на самом деле другой
- и т.д.
xDriver, все форумы одинаковые. Вот только вчера наткнулся на сантехническом форуме:
Ничего не напоминает?
ЕвгенийП, страшно и подумать что тогда на форуме как нибудь врачей/медиков творится. нада напиться.
ЕвгенийП, страшно и подумать что тогда на форуме как нибудь врачей/медиков творится. нада напиться.
mixail844, Вы забыли добавить "мне самому некогда в этом разбираться, помогите срочно".
Соединил два скетча из интернета...
Соединил два скетча из интернета...
А где синяя изолента?
Или это такие провода из бескислородной меди?
Ураааа!!!! проблема решена код исправен
А что такое Offline у меня Онлайн
Ураааа!!!! проблема решена код исправен
фотка от sadman41 помогла?
Ураааа!!!! проблема решена код исправен
фотка от sadman41 помогла?
ага :-)
Ураааа!!!! проблема решена код исправен
фотка от sadman41 помогла?
имперский марш из игры уже играет
Но есть новая проблема :-(
у меня не получилось сделать как у sadman41 Я НЕ СМОГ СОЕДЕНИТЬ 2 КОДП ИЗ ИНТ.
(Я ПИШУ БОЛЬШИМ ШРИВТОМ ПОТОМУ ЧТО НЕ ПОЛУЧАЕТЯЯ МАЛЕНЬКИМ)