проблема с кодом помогите пожалуйста.
- Войдите на сайт для отправки комментариев
Вс, 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 КОДП ИЗ ИНТ.
(Я ПИШУ БОЛЬШИМ ШРИВТОМ ПОТОМУ ЧТО НЕ ПОЛУЧАЕТЯЯ МАЛЕНЬКИМ)