Разместить данные в EEPROM, чтобы Сэкономить FLASH

b612
Offline
Зарегистрирован: 12.03.2017

Добрый день, Уважаемые.

Подскажите, пожалуйста,

Как объявить предзаполненный массив, так, чтобы он сразу попал в EEPROM ?

и чтобы он не занимал память ни в памяти программ ни в ОЗУ.

b707
Offline
Зарегистрирован: 26.05.2017

и много вы на этом сэкономите? ЕЕПРОМ ведь маленький совсем

А обьявить - как угодно. Можно заполнить ЕЕПРОМ заранее одним скетчем, а потом записать другой. Либо вообще прописать ЕЕПРОМ через программатор с компа.

GarryC
Offline
Зарегистрирован: 08.08.2016

Ну насколько я понял Ваш вопрос, никак, EEPROM не имеет самостоятельного адресного пространства и не картируется в общее поле адресов.

b612
Offline
Зарегистрирован: 12.03.2017

GarryC пишет:

Ну насколько я понял Ваш вопрос, никак, EEPROM не имеет самостоятельного адресного пространства и не картируется в общее поле адресов.

Пусть без всяких там ссылок, но ведь как-то наверно можно его прошить на этапе прошивки вместе со скетчем, чтобы цифры, которые пойдут в еепром были изначально в скетче ? 

b612
Offline
Зарегистрирован: 12.03.2017

Похоже возможно, если очень постараться.

Вот. Откопал тему на этом форуме. http://arduino.ru/forum/programmirovanie/dostup-k-eeprom

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
b612
Offline
Зарегистрирован: 12.03.2017

Если включить файл avr/eeprom.h и потом использовать макрос EEMEM типа:

1 int bits[] EEMEM = { 0, 5, 8, 10 };

Реально создаётся файл xxxxxxxxx.ino.eep !

Осталось понять, как и какие конфиги надо настроить, чтобы он ещё и сразу прошивался.

Есть описания как прошить bin, но ведь .eep это не bin, а очень похоже на .hex

denis707
Offline
Зарегистрирован: 09.09.2013

если не ошибаюсь одна ячейка в EEPROM может хранить только 8 bit, нужно это учитывать.

b612
Offline
Зарегистрирован: 12.03.2017

Вопрос вдогонку.

Подскажите пожалуйста,

как теперь заставить компилятор размещать мои массивы в EEPROM-е в жестко указанных адресах ?

А то компилятор при каждой компиляции размещает их так как ему взбрендит, а мне лень каждый раз перешивать EEPROM

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вам же подсказали- через структуру. В структуре задаются жестко адреса

/**/
#include <EEPROM.h>
typedef struct {
  uint16_t var1;
  uint8_t var2;
  uint16_t var3;
  uint8_t var4;
} stData;
stData Data EEMEM = {5, 2, 7, 8};

uint16_t var1;
uint8_t var2;
uint16_t var3;
uint8_t var4;

void setup() {
  EEPROM.get(Data.var1, var1);
  EEPROM.get(Data.var2, var2);
  EEPROM.get(Data.var3, var3);
  EEPROM.get(Data.var4, var4);
}

void loop() {
}

 

b612
Offline
Зарегистрирован: 12.03.2017

qwone пишет:

Вам же подсказали- через структуру. В структуре задаются жестко адреса

/**/
#include <EEPROM.h>
typedef struct {
  uint16_t var1;
  uint8_t var2;
  uint16_t var3;
  uint8_t var4;
} stData;
stData Data EEMEM = {5, 2, 7, 8};

uint16_t var1;
uint8_t var2;
uint16_t var3;
uint8_t var4;

void setup() {
  EEPROM.get(Data.var1, var1);
  EEPROM.get(Data.var2, var2);
  EEPROM.get(Data.var3, var3);
  EEPROM.get(Data.var4, var4);
}

void loop() {
}

Поподробнее пожалуйста. Где жесткий адрес ?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

b612 пишет:

Поподробнее пожалуйста. Где жесткий адрес ?

Берешь компилируешь много раз этот скетч и убеждаешься что адреса стоят на месте 

#include <EEPROM.h>
#include <EEPROM.h>
typedef struct {
  uint8_t var1;
  uint8_t var2;
  uint8_t var3;
  uint8_t var4;
} stData;
stData Data EEMEM = {5, 2, 7, 8};

uint16_t var1;
uint8_t var2;
uint16_t var3;
uint8_t var4;
void setup() {
  Serial.begin(9600);
  Serial.println((int)&Data);
  Serial.println((int)&Data.var1);
  Serial.println((int)&Data.var2);
  Serial.println((int)&Data.var3);
  Serial.println((int)&Data.var4);
}

void loop() {


}

Для проверки можешь даже менять размернось переменных в структуре.

b707
Offline
Зарегистрирован: 26.05.2017

qwone пишет:

Берешь компилируешь много раз этот скетч и убеждаешься что адреса стоят на месте

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

Другой вопрос, что ТС не говорит, для чего это нужно. На самом деле, думаю, он эту "нужность" выдумал

 

b612
Offline
Зарегистрирован: 12.03.2017

qwone пишет:

Берешь компилируешь много раз этот скетч и убеждаешься что адреса стоят на месте 

#include <EEPROM.h>
#include <EEPROM.h>
typedef struct {
  uint8_t var1;
  uint8_t var2;
  uint8_t var3;
  uint8_t var4;
} stData;
stData Data EEMEM = {5, 2, 7, 8};

uint16_t var1;
uint8_t var2;
uint16_t var3;
uint8_t var4;
void setup() {
  Serial.begin(9600);
  Serial.println((int)&Data);
  Serial.println((int)&Data.var1);
  Serial.println((int)&Data.var2);
  Serial.println((int)&Data.var3);
  Serial.println((int)&Data.var4);
}

void loop() {
}

Для проверки можешь даже менять размернось переменных в структуре.

Пожалуйста поправьте мои ошибки

typedef struct {
static const uint8_t NastrVEEPROMe[];
static const uint8_t RaskladkaMelodij[];
static const uint16_t nachalyMelodij[];
static const uint8_t dlinyMelodij[];
static const uint8_t vseNoty[];
} stData;
stData EEData EEMEM = ????

//застолбим место в EEPROMe для хранения настроек
const uint8_t NastrVEEPROMe[KolichestvoNastroek] EEMEM ={};

static const uint8_t vseNoty[] EEMEM =
//0 кто был ничем тот станет всем
// 0      1      2      3      4      5      6      7      8      9     10     11     12     13     14     15     16     17     18     19     20     21     22     23     24     25     26     
{ 59, 4, 64, 4, 62, 4, 61, 8, 64, 8, 67, 8, 61, 8, 62, 8,255, 4,
......}
static const uint16_t nachalyMelodij[] EEMEM = {0, 18, 40, 64, 82, 100,126,146,166,186,220,258,282,306,328,346,364,382,404,458,494,536,576,616,632,638,640,644,660}; //Началы мелодий
static const uint8_t dlinyMelodij[]  EEMEM =   {9, 11, 12,  9,  9,  13, 10, 10, 10, 17, 19, 12, 12,  9,  9,  9,  9, 11, 27, 18, 21, 20, 20,  8,  3,  1,  2,  8}; //длины мелодий в нотах
static const uint8_t RaskladkaMelodij[]  EEMEM = {
14,//0 вечерний звон
17,//1 словно замерло всё до рассвета
.....}

я не знаю где обязательно указывать размеры массивов где нет и где сколько фигурных скобок

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

b612, ну вы нахал. Сбросили сюда туалетное ведро с бумажками после использования и просите что бы Вам сделали из них художественный альбом.

#include <EEPROM.h>
typedef struct {
  uint16_t adr_txt1;
  uint16_t adr_txt2;
  uint16_t adr_txt3;
  uint16_t adr_txt4;
} stData;
stData Data EEMEM;
uint8_t txt1[15] EEMEM = "uno";
uint8_t txt2[15] EEMEM = "due";
uint8_t txt3[15] EEMEM = "tre";
uint8_t txt4[15] EEMEM = "quattro";

void save() {
  // первая строка
  String aaa1(F("uno-1"));
  uint16_t i;
  for (i = 0; i < aaa1.length(); i++) {
    Serial.print(aaa1.charAt(i));
    EEPROM.put((int)&txt1[i], aaa1.charAt(i)); // сохранить строку в EEROM
  }
  EEPROM.put((int)&txt1[i], 0);// занести конец строки
  EEPROM.put((int)&Data.adr_txt1, (int)txt1);// сохранить адрес строки EEROM в структуре

  // вторая строка
  String aaa2(F("due-2"));
  Serial.print('\n');
  for (i = 0; i < aaa2.length(); i++) {
    Serial.print(aaa2.charAt(i));
    EEPROM.put((int)&txt2[i], aaa2.charAt(i));
  }
  EEPROM.put((int)&txt2[i], 0);
  EEPROM.put((int)&Data.adr_txt2, (int)txt2);// сохранить адрес строки EEROM в структуре

  // третья строка
  String aaa3(F("tre-3"));
  Serial.print('\n');
  for (i = 0; i < aaa3.length(); i++) {
    Serial.print(aaa3.charAt(i));
    EEPROM.put((int)&txt3[i], aaa3.charAt(i));
  }
  EEPROM.put((int)&txt3[i], 0);
  EEPROM.put((int)&Data.adr_txt3, (int)txt3);// сохранить адрес строки EEROM в структуре

  // четвертая строка
  String aaa4(F("quattro-3"));
  Serial.print('\n');
  for (i = 0; i < aaa4.length(); i++) {
    Serial.print(aaa4.charAt(i));
    EEPROM.put((int)&txt4[i], aaa4.charAt(i));
  }
  EEPROM.put((int)&txt4[i], 0);
  EEPROM.put((int)&Data.adr_txt4, (int)txt4);// сохранить адрес строки EEROM в структуре

  Serial.print('\n');
}
void viev() {
  uint16_t adr;
  uint8_t c;
  EEPROM.get((int)&Data.adr_txt1, adr);// получить адресс 1 строки
  // adr = (uint16_t)&txt1[0];
  while (1) {
    EEPROM.get(adr, c);
    if (c == 0) break;
    else {
      adr++;
      Serial.print((char)c);
    }
  }
  Serial.print('\n');

  EEPROM.get((int)&Data.adr_txt2, adr);// получить адресс 2 строки
  // adr = (uint16_t)&txt2[0];
  while (1) {
    EEPROM.get(adr, c);
    if (c == 0) break;
    else {
      adr++;
      Serial.print((char)c);
    }
  }
  Serial.print('\n');
  EEPROM.get((int)&Data.adr_txt3, adr);// получить адресс 3 строки
  // adr = (uint16_t)&txt3[0];
  while (1) {
    EEPROM.get(adr, c);
    if (c == 0) break;
    else {
      adr++;
      Serial.print((char)c);
    }
  }
  Serial.print('\n');

  EEPROM.get((int)&Data.adr_txt4, adr);// получить адресс 4 строки
  // adr = (uint16_t)&txt4[0];
  while (1) {
    EEPROM.get(adr, c);
    if (c == 0) break;
    else {
      adr++;
      Serial.print((char)c);
    }
  }
  Serial.print('\n');

}
void setup() {
  Serial.begin(9600);
  save();
  viev();
}

void loop() {
}

Ну дальше разбирайтесь сами без ваших использованых тулетных бумаг

b612
Offline
Зарегистрирован: 12.03.2017

b707 пишет:

qwone пишет:

Берешь компилируешь много раз этот скетч и убеждаешься что адреса стоят на месте

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

Другой вопрос, что ТС не говорит, для чего это нужно. На самом деле, думаю, он эту "нужность" выдумал

Нужность такая, что программа шьётся отдельно а еепром отдельно
Каждый раз шить и то и другое не удобно

Кроме того надо заливать в еепром данные не программатором а посредством тупой подпрограммы в контроллере и такой же тупой программы на компе, которым надо передавать жесткие адреса.

совместимость версий и всякое такое.

b707
Offline
Зарегистрирован: 26.05.2017

b612 пишет:

Кроме того надо заливать в еепром данные не программатором а посредством тупой подпрограммы в контроллере и такой же тупой программы на компе, которым надо передавать жесткие адреса.

наша дискуссия пошла по кругу. Хотите жесткие адреса - используйте ЕЕПРОМ, а не ЕМЕМ

Komandir
Offline
Зарегистрирован: 18.08.2018

А подключение этих библиотек сколько отъедает от флеша ?

b612
Offline
Зарегистрирован: 12.03.2017

b707 пишет:

наша дискуссия пошла по кругу. Хотите жесткие адреса - используйте ЕЕПРОМ, а не ЕМЕМ

1. мне нужно разместить данные в ЕЕПРОМЕ и при этом не использовать память программ

Другого способа кроме EMEM для этого я не знаю, может быть вы подскажете ?

2. нужно чтобы адреса не менялись от компиляции к компиляции, поскольку ЕЕПРОМ прошивается отдельно и не каждый раз

и само собой для последующей работы с этими данными мне нужно знать в какие адреса они попали при компиляции.

-NMi-
Offline
Зарегистрирован: 20.08.2018

b612 пишет:

Кроме того надо заливать в еепром данные не программатором а посредством тупой подпрограммы в контроллере и такой же тупой программы на компе, которым надо передавать жесткие адреса.

Давным давно я ковырял дудруиновский bootloader, так вот, есть там отдельные процедуры для записи флешь и для записи еепром. Сейчас точно не скажу, но, помоему, бутлоадер даже подпись (CPU_ID) с проца может читать. Таким образом можно предположить, что еепром можно записать отдельно от скетча.

-NMi-
Offline
Зарегистрирован: 20.08.2018

b612 пишет:

1. мне нужно разместить данные в ЕЕПРОМЕ и при этом не использовать память программ

2. нужно чтобы адреса не менялись от компиляции к компиляции, поскольку ЕЕПРОМ прошивается отдельно и не каждый раз

Опять-же, скажу, если бы это нужно было бы мне... без навязывания каких-либо стандартов, я сделал бы так:

1 - взял бы отдельную микросхему еепрома на i2c или spi , неважно, и не парился по поводу её объёма памяти.

2 - создал (читай выдумал) бы свою собственную структуру хранения данных таким образом, что длины записей структур были бы одинаковые. Таким образом можно очень просто вычислить начало структуры по её номеру = длина  структуры*номер. Ну а дальше спокойно бы парсил данные в структуре.

... помоему это банально просто...                   )))

b707
Offline
Зарегистрирован: 26.05.2017

b612 пишет:

1. мне нужно разместить данные в ЕЕПРОМЕ и при этом не использовать память программ

Другого способа кроме EMEM для этого я не знаю, может быть вы подскажете ?

способ с EMEM вам НЕ ПОДХОДИТ, сколько можно повторять? Он не поддерживает жесткие адреса

Слушайте, вы на этом вопросе топчетесь уже два месяца. Вы все время говорите о каком-то совместном коде, который пишут несколько разработчиков. Это как бы намекает, что участвуют грамотные программисты. а не новички, вчера увидевшие "hello world" Если вы программист - давно можно было написать свой аналог EMEM с жестко заданными адресами - делов то на один вечер, вместо сотрясания воздуха на форуме

Если же вы чайник, неспособный написать простенький класс - а судя по коду выше это так и есть - бросьте эту дурацкую затею с ЕЕПРОМ и размещайте данные во ФЛЕШ. И учитесь писать оптимальные программы - тогда вам будет хватать памяти и без этой клоунады

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

-NMi- пишет:

Таким образом можно предположить, что еепром можно записать отдельно от скетча.

Зачем предполагать, если это в man avrdude написано? Даже с примером для копипасты.

b612
Offline
Зарегистрирован: 12.03.2017

b707 пишет:

без этой клоунады

столько обидных слов, не свидетельствующих о вашей интеллигентности.

Не проще накидать тот маленький класс ?

Оптимизировать уже нечего. конечно давно пора взять другой камушек, но проект изначально рассчитан на ардуинщиков - чайников таких как я

к стати можете посмотреть

https://radiokot.ru/forum/viewtopic.php?p=3711262#p3711262

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

наскока я понял, в EEPROM ты хочешь запхать 10 будильников? 

b612
Offline
Зарегистрирован: 12.03.2017

DetSimen пишет:

наскока я понял, в EEPROM ты хочешь запхать 10 будильников? 

там уже 78 настроек, 27 полифонических мелодий и да, 10 будильников 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

а у тя в праэкте модуль DS3231 есть?  Именно модуль, сининький, китайске?

b707
Offline
Зарегистрирован: 26.05.2017

b612 пишет:

к стати можете посмотреть

https://radiokot.ru/forum/viewtopic.php?p=3711262#p3711262

посмотрел, исходного кода не увидел. Если есть - дайте ссылку. Или тут, в давних традициях Радокота - выкладывают только бинарные прошивки. чтобы не было стыдно за кривизну кода?

Кстата, теперь понял, зачем нужно писать настройки в ЕЕПРОМ - с закрытым кодом у автора нет другой возможности позволить юзерам использовать свои настройки.

 

b612
Offline
Зарегистрирован: 12.03.2017

DetSimen пишет:

а у тя в праэкте модуль DS3231 есть?  Именно модуль, сининький, китайске?

не понял на счет "синенький"

я ставлю чёрненький от "малины"

но без проблем и какой-то синий ставил раньше

b612
Offline
Зарегистрирован: 12.03.2017

b707 пишет:

возможности позволить юзерам использовать свои настройки.

пи...бол

b707
Offline
Зарегистрирован: 26.05.2017

пробежался по проекту автора на радиокоте. интересный проект - большие часы на w2812.

https://radiokot.ru/forum/viewtopic.php?f=2&t=153087

Интересный для меня тем, что у нас на форуме есть абсолютно аналогичный, но с открытым кодом

http://arduino.ru/forum/programmirovanie/bolshie-nastennye-chasy-na-arduino

но я ни в коем случае не намекаю, что b612 взял код отсюда, даже уверен, что это не так. Он там на радиокоте с гордостью говорит. что в его коде аж 3000 строк, а мы тут с теми же функциями в коде обошлись всего чуть более тремя сотнями.

И он тут пишет, что в проекте "оптимизировать нечего" :)))))

на фоне этого совершенно неудивительно, что ТС понадобился ЕЕПРОМ...

 

 

b707
Offline
Зарегистрирован: 26.05.2017

b612 пишет:

пи...бол

брань прощаю. Исходник будет?

если нет -сдается мне что просить помощи у сообщества для своего закрытого проекта бесплатно - неэтично

разместите заказ в платном разделе - примерно за пятерку могу посмотреть ваш исходник и дать советы по оптимизации.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

b612 пишет:

DetSimen пишет:

а у тя в праэкте модуль DS3231 есть?  Именно модуль, сининький, китайске?

не понял на счет "синенький"

я ставлю чёрненький от "малины"

но без проблем и какой-то синий ставил раньше

В синеньких еще мелкосхема EEPROM I2C стоит на 4 Кб. Можно туда всё запхать и барыжить готовым. 

-NMi-
Offline
Зарегистрирован: 20.08.2018

Деда, слишком банально. Защиты никакой нет, читай, изучай, копируй.

А вот с криптой, размазанной по всей микрухе - отт этт достойно!!!

b707
Offline
Зарегистрирован: 26.05.2017

-NMi- пишет:

Деда, слишком банально. Защиты никакой нет, читай, изучай, копируй.

да дело не в защите. Судя по коду автора - защищать там нечего. Вопрос в другом - если не выкладывать код, автору не придется оправдываться за его кривизну. Сейчас, если кто-то другой собрал проект автора и у того не работает - автор всегда может сказать, что , мол, сам виноват - неправильно собрал, "У меня все работает" А с открытым исходником рано или поздно найдется знающий человек. который ткнет автора в его косяки.

 

b612
Offline
Зарегистрирован: 12.03.2017

b707 пишет:

разместите заказ в платном разделе - примерно за пятерку могу посмотреть ваш исходник и дать советы по оптимизации.

п..больство прощаю

Про функционал вопрос хоть и спорный, но мериться консолями нет никакого желания.

На данный момент в проекте около 6000 строк и тому проекту с этого форума до моего ещё пол годика, а то и годик расти.

Какой кривизны мой код и как вы к нему относитесь, мне до лампочки, поскольку от вас пользы меньше чем если бы вас просто не было.

Код не выкладываю по причине того, что начинающим его не осилить, профи и сами могут, а просто для всякой нечисти выкладывать нет смысла.

b612
Offline
Зарегистрирован: 12.03.2017

DetSimen пишет:

В синеньких еще мелкосхема EEPROM I2C стоит на 4 Кб. Можно туда всё запхать и барыжить готовым. 

благодарю , я знал но совсем забыл. 
Так то весь задуманный мной функционал реализован, памяти едва хватило.

Даже вантачный таймер вписался.

Сейчас изучаю ESP-ху, может быть на неё перелезу.

-NMi-
Offline
Зарегистрирован: 20.08.2018

b612 пишет:

На данный момент в проекте около 6000 строк и тому проекту с этого форума до моего ещё пол годика, а то и годик расти.

Этт чоЖ за часы то такие, шестьтышшстрок???

Ну сами часы сотка максимум, + температура сотка, + влажность сотка, + будильники, хоть 100 будильников - тоЖе сотка строк. Всё можно компактненько в функции запихнуть и манипулировать ими. Скока я там насчитал... ну пусть пиццот строк... но никак нешестьтысяч!!!   Однако!!!

b612
Offline
Зарегистрирован: 12.03.2017

-NMi- пишет:
ну пусть пиццот строк... но никак нешестьтысяч!!!   Однако!!!

500 строк 78 настроек это только их перечисление и хранение

500+ редактор настроек и палитры

500 разных дефайнов

500 настраиваемое переключение режимов

500 анимация

500+ синтез звука , считая вместе с нотами даже больше

500+ общение с компом

500 измерения разных температур, влажности, освещенности, давления

500 будильники и редактор будильников

+ варианты компиляций под разные схемы и разное количество светиков на сегмент

b707
Offline
Зарегистрирован: 26.05.2017

-NMi- пишет:

Этт чоЖ за часы то такие, шестьтышшстрок???

Ну сами часы сотка максимум, + температура сотка, + влажность сотка, + будильники, хоть 100 будильников - тоЖе сотка строк. Всё можно компактненько в функции запихнуть и манипулировать ими. Скока я там насчитал... ну пусть пиццот строк... но никак нешестьтысяч!!!   Однако!!!

о том и речь - я чуть выше приводил ссылку на здешний проект - там часы, термометр, влажность, давление, плавное изменение яркости (а не как у ТС - день-ночь), световые эффекты - и все это 330 строк

Сложно даже представить, что там у ТС за гавнокод, если у него это занимает 6000 строк. И что самое смешное - он ведь о числе строк пишет с гордостью, видимо даже не приходит в голову. что стыдно должно быть

b707
Offline
Зарегистрирован: 26.05.2017

b612 пишет:

-NMi- пишет:
ну пусть пиццот строк... но никак нешестьтысяч!!!   Однако!!!

500 строк 78 настроек это только их перечисление и хранение

перечисление 78 настроек должно занимать 78 строк :)

500+ редактор настроек и палитры

500 разных дефайнов -

500 настраиваемое переключение режимов

500 анимация

500+ синтез звука , считая вместе с нотами даже больше

500+ общение с компом

500 измерения разных температур, влажности, освещенности, давления

500 будильники и редактор будильников

+ варианты компиляций под разные схемы и разное количество светиков на сегмент

все это ярко свидетельствует о бестолковости кода и неумении программировать.

Я вам очень советую - посмотрите тот проект, что я указывал выше. Там как раз код с температурами, давлениеми и работающий на любом количесве светиков. Если вы его поймете - сможете уменьшить свой код раза в три, как минимум.

-NMi-
Offline
Зарегистрирован: 20.08.2018

ТС - видос запили, уж прям заинтриговал ты своими суперчасами.

b612
Offline
Зарегистрирован: 12.03.2017

-NMi- пишет:

ТС - видос запили, уж прям заинтриговал ты своими суперчасами.

Там на канале есть видосы тех времён когда было 3000 строк

они вообщем дают общее представление

https://youtu.be/m-ZY15XYFMU 

с тех пор добавились только некоторые фишки типа коррекция хода, бой, будильники и расширилось стало удобнее меню настроек

b707
Offline
Зарегистрирован: 26.05.2017

-NMi- пишет:

ТС - видос запили, уж прям заинтриговал ты своими суперчасами.

там чуть выше в теме есть ссылка на его проект на радиокоте. И видосы там тоже есть. Единственное, чем принципиально отличается этот проект от местного в 300 строк - наличем музыки.

Ну и еще автор приложил героические усилия, чтобы заставить пользователей настраивать свои часы через Сериал - этот онанизм был вынужденным, и причина - нежелание давать исходник. Распространял бы он проект в исходнике - все эти редакторы будильников и палитр можно было бы разместить прямо в коде и сэкономить туеву кучу строк

Собственно, и здешний его вопрос про ЕЕПРОМ связан с тем же - нежеланием давать юзерам доступа к коду.

Вообще, ардуино - это платформа с открытым исходным кодом. Честно говоря. мне противно смотреть на подобных авторов. Это одна из причин. почему я не люблю форумы типа радиокота и казуса - там почти во всех проектах авторы нервно жмут исходный код - и я абсолютно уверен, что главная причина - стыд за свой исходник.

 

b707
Offline
Зарегистрирован: 26.05.2017

b612 пишет:

500 строк 78 настроек это только их перечисление и хранение

500+ редактор настроек и палитры

500 разных дефайнов

500 настраиваемое переключение режимов

500+ общение с компом

Вот, собрал все части кода, связанные с настройкой. Примерно 2500+ строк только на чтение с компа и работу с 78 настройками? примерно по 30 строк на каждую настройку?

Такое возможно только в случае самого сурового копи-паста. Обьясняю - вот написали вы чтение строки из Сериал и установку одной настройки в программе. 30-50 строк для этого - норма. А дальше, каждая новая настройка должна увеличивать код на пару строк, не больше.  У вас же, судя по размеру - вы просто 78 раз скопировали код первой настройки и поменяли в нем только строку.

b707
Offline
Зарегистрирован: 26.05.2017

короче, Деда. достал меня этот разведчик с засекреченным кодом - предлагаю показать ему указатель и закрыть ветку.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Нет. Не вижу оснований.  

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Индусский код тоже имеет право на жизнь. Вдруг еще научица чему.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Вапще, я в этой ветке причин для срача не вижу.  Пусь нарот сам выбирает, что повторять, здешний код или с котофорума. 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

b612 пишет:

500 строк 78 настроек это только их перечисление и хранение

500+ редактор настроек и палитры

500 разных дефайнов

500 настраиваемое переключение режимов

500 анимация

500+ синтез звука , считая вместе с нотами даже больше

500+ общение с компом

500 измерения разных температур, влажности, освещенности, давления

500 будильники и редактор будильников

+ варианты компиляций под разные схемы и разное количество светиков на сегмент

Наверно писал большой коллектив индусов https://www.youtube.com/watch?v=NDMaH3XqtRc

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

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

не вопрос, конечно пусть народ выбирает - тупо повторять кривую поделку, не имея возможности исправить ее косяки и ничему при этом не научившись - или получить полный доступ к коду и дописать все. что хочется, самому.

Но я такого "творчества" не понимаю. Какой смысл повторять готовое, это практически тоже самое, что купить  в магазине.