проблема с кодом помогите пожалуйста.

vo0ov
vo0ov аватар
Offline
Зарегистрирован: 04.01.2021

У меня не работает код помогите пожалуйста.

Пишет что переменная 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);
    }
}

 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

И что мешает сделать ее константой ?
"const" в помощь

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

vo0ov пишет:

Пишет что переменная freces должна быть константой, чтобы ее можно было поместить в раздел только для чтения с помощью '__attribute __ ((progmem))'

Как это исправить?

Ты не поверишь! Объявить её, как константу. ;)))

Почувствуй разницу:

int my_fucking_var = 13;
// сравни с 
const int MY_FUCKING_CONST = 666; 

 

vo0ov
vo0ov аватар
Offline
Зарегистрирован: 04.01.2021

wdrakula пишет:

vo0ov пишет:

Пишет что переменная freces должна быть константой, чтобы ее можно было поместить в раздел только для чтения с помощью '__attribute __ ((progmem))'

Как это исправить?

Ты не поверишь! Объявить её, как константу. ;)))

Почувствуй разницу:

int my_fucking_var = 13;
// сравни с 
const int MY_FUCKING_CONST = 666; 

 

я не очень понимаю как это сделать

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

vo0ov пишет:

wdrakula пишет:

int my_fucking_var = 13;
// сравни с 
const int MY_FUCKING_CONST = 666; 

я не очень понимаю как это сделать

Смотрим на две строки, что Вам привели. Внимательно смотрим. Тычемся в них носом и ещё смотрим. И так до тех пор, пока не придёт понимание.

mixail844
Offline
Зарегистрирован: 30.04.2012

это конечо уже придирка , но где в коде #0 вообще переменная freces  ? 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

mixail844 пишет:

это конечо уже придирка , но где в коде #0 вообще переменная freces  ? 

вы че новенький, понятно же, что надо додумывать за них самому.

переменная на самом деле frequences из 6 строки, отмазки на выбор:

- я тут поменял и не успел исправить.

- не тот скетч залил, у меня на самом деле другой

- и т.д.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

xDriver, все форумы одинаковые. Вот только вчера наткнулся на сантехническом форуме:

Ничего не напоминает?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ЕвгенийП, страшно и подумать что тогда на форуме как нибудь врачей/медиков творится. нада напиться.

mixail844
Offline
Зарегистрирован: 30.04.2012

xDriver пишет:

ЕвгенийП, страшно и подумать что тогда на форуме как нибудь врачей/медиков творится. нада напиться.

стесняюсь спросить ,а откуда на мед форумах берут фото в хорошем качестве, что бы показать суть проблемы ? 
 
так и представляю себе : "мы тут делаем операцию по укорачиванию тонкой кишки , что надо отрезали , но оказалось что нити на зашитие и зажимов не хватает , чем заменить ? чем можно остановить кровотечение , хелп"
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

mixail844, Вы забыли добавить "мне самому некогда в этом разбираться, помогите срочно".

sadman41
Offline
Зарегистрирован: 19.10.2016

Соединил два скетча из интернета...

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

sadman41 пишет:

Соединил два скетча из интернета...

 

А где синяя изолента?

Или это такие провода из бескислородной меди?

vo0ov
vo0ov аватар
Offline
Зарегистрирован: 04.01.2021

Ураааа!!!! проблема решена код исправен

vo0ov
vo0ov аватар
Offline
Зарегистрирован: 04.01.2021

А что такое Offline у меня Онлайн

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

vo0ov пишет:

Ураааа!!!! проблема решена код исправен

фотка от sadman41 помогла?

vo0ov
vo0ov аватар
Offline
Зарегистрирован: 04.01.2021

xDriver пишет:

vo0ov пишет:

Ураааа!!!! проблема решена код исправен

фотка от sadman41 помогла?

ага :-)

vo0ov
vo0ov аватар
Offline
Зарегистрирован: 04.01.2021

xDriver пишет:

vo0ov пишет:

Ураааа!!!! проблема решена код исправен

фотка от sadman41 помогла?

имперский марш из игры уже играет

 

vo0ov
vo0ov аватар
Offline
Зарегистрирован: 04.01.2021

Но есть новая проблема :-(

у меня не получилось сделать как у sadman41 Я НЕ СМОГ СОЕДЕНИТЬ 2 КОДП ИЗ ИНТ.

(Я ПИШУ БОЛЬШИМ ШРИВТОМ ПОТОМУ ЧТО НЕ ПОЛУЧАЕТЯЯ МАЛЕНЬКИМ)