#1 2020-03-17 10:17:46

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Упрощение кода

Добрый день, форумчане. У меня такая задача: необходимо создать несколько устройств на МК, датчике вибрации/наклона, светодиоде и батарейке (таблетка). Каждое должно светиться по своему. Написал код для МК ATTiny13 (может найду что на замену, но пока она подходит больше всего). Задача всех устройств после удара или движения - светодиод начинает моргать, как только устройство вернули в состояние покоя (положили на стол, например) светодиод поморгал ещё 5 секунд и выключился. Начнёт моргать опять только когда устройство снова приведут в движение (возьмут в руки, ударят, кинут).

Пробное устройство я уже собрал, (пульсирующий) всё работает исправно, но память ATTiny13 1Кб, этот код вышел на 564 б, соответственно если я захочу его усложнить, то 1 Кб может не хватить. А так же МК потребляет повышенный ток постоянно.

Собственно прошу Вас помочь упростить код (если это возможно) и, что самое главное, помочь с режимами МК, чтобы увеличить время работы от батарейки.

Заранее Вас благодарю!

int vib = 4;
int led = 0;
long loopTime = 5000;

void setup() {
    pinMode(led, OUTPUT);
    pinMode(vib, INPUT);
}

void loop()
{
    if (digitalRead(vib)){
        unsigned long currentMillis = millis();
        while(millis()-currentMillis<=loopTime) {
            for(int fadeValue = 0; fadeValue <=255; fadeValue+=5) {
                 analogWrite(led,fadeValue);
                 delay(2);
            }
            for(int fadeValue = 255; fadeValue >=0; fadeValue-=5) {
                 analogWrite(led,fadeValue);
                 delay(2);
            }
            for(int fadeValue = 0; fadeValue <=255; fadeValue+=5) {
                  analogWrite(led,fadeValue);
                  delay(2);
             }
             for(int fadeValue = 255; fadeValue >=0; fadeValue-=5) {
                  analogWrite(led,fadeValue);
                  delay(2);
             }
             digitalWrite(led, LOW);
             delay(600);
        }
    }
}

Редактировался Abramonromka (2020-03-17 10:43:56)

#2 2020-03-17 10:33:10

Watchdog
Гость

Re: Упрощение кода

Abramonromka пишет:

... Пробное устройство я уже собрал, (пульсирующий) всё работает исправно, но память ATTiny13 1Кб, этот код вышел на 564 б, соответственно если я захочу его усложнить, то 1 Кб может не хватить. А так же МК потребляет повышенный ток постоянно.

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

int vib = 4;
int led = 0;
long loopTime = 5000;

void setup() {
    pinMode(led, OUTPUT);
    pinMode(vib, INPUT);
}

void loop()
{
    if (digitalRead(vib)){
        unsigned long currentMillis = millis();
        while(millis()-currentMillis<=loopTime) {
            for(int fadeValue = 0; fadeValue <=255; fadeValue+=5) {
                 analogWrite(led,fadeValue);
                 delay(2);
            }
            for(int fadeValue = 255; fadeValue >=0; fadeValue-=5) {
                 analogWrite(led,fadeValue);
                 delay(2);
            }
            for(int fadeValue = 0; fadeValue <=255; fadeValue+=5) {
                  analogWrite(led,fadeValue);
                  delay(2);
             }
             for(int fadeValue = 255; fadeValue >=0; fadeValue-=5) {
                  analogWrite(led,fadeValue);
                  delay(2);
             }
             digitalWrite(led, LOW);
             delay(600);
        }
    }
}
Abramonromka пишет:

Собственно прошу Вас помочь упростить код (если это возможно) и, что самое главное, помочь с режимами МК, чтобы увеличить время работы от батарейки.

Заранее Вас благодарю!

А просто деньгами возьмёте?  smile

#3 2020-03-17 10:40:29

Watchdog
Гость

Re: Упрощение кода

А что бы понять, что у вас там написано, удобно расставляйте отступы и скобки или придётся делать это за вас.
PS: first update patch for the project. big_smile

#4 2020-03-17 10:48:24

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Re: Упрощение кода

Watchdog пишет:

А что бы понять, что у вас там написано, удобно расставляйте отступы и скобки или придётся делать это за вас.
PS: first update patch for the project. big_smile

Исправил, спасибо за замечание)

Watchdog пишет:

А просто деньгами возьмёте?  smile

Взять деньгами?) Мне взять?) big_smile
Если речь о оплате упрощения кода, то боюсь это не уместно. Тем более рубль упал, вирусы вокруг) Да и код-то написан уже, другое дело если бы я с нуля просил написать, да, это была бы наглость с моей стороны просить бесплатно.

#5 2020-03-17 10:53:52

Watchdog
Гость

Re: Упрощение кода

Abramonromka пишет:

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

Чтобы влезло нужно переделать всё, включая Ардуиновское ядро, и то не факт. Станет известно только после того. Волшебной формулы, превращающей фантазии в футпринт нет. smile

#6 2020-03-17 11:02:52

Kaka
Участник
Зарегистрирован: 2018-03-21
Сообщений: 312

Re: Упрощение кода

Парень,

у тебя в голове вот эти две фразы:

Abramonromka пишет:

МК ATTiny13 ... подходит больше всего

но память ATTiny13 ... может не хватить. А так же МК потребляет повышенный ток постоянно.

хорошо совмещаются?

У меня вот как-то не очень.

Возьми такую же по размеру ATtiny85 с её памятью и режимом picopower и не выноси сам себе мозг.

Редактировался Kaka (2020-03-17 14:37:12)

#7 2020-03-17 11:32:37

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Re: Упрощение кода

Kaka пишет:

Парень,

у тебя в голове вот эти две фразы:

Abramonromka пишет:

МК ATTiny13 ... подходит больше всего

но память ATTiny13 ... может не хватить. А так же МК потребляет повышенный ток постоянно.

хорошо совмещаются?

У меня вот как-то не очень.

Возьми такую же по размеру ATtiny85 с её память и режимом picopower и не выноси сам себе мозг.

А почему они не должны совмещаться?) Может я конечно чего-то не знаю о 13тиньке...
85тинька дороже. Но если других вариантов сократить потребление энергии нет, то придется ломать мозг с 85.

#8 2020-03-17 11:34:10

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Re: Упрощение кода

Watchdog пишет:
Abramonromka пишет:

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

Чтобы влезло нужно переделать всё, включая Ардуиновское ядро, и то не факт. Станет известно только после того. Волшебной формулы, превращающей фантазии в футпринт нет. smile

Понял. Ну пока памяти хватает, поэтому больше вопрос по активации режимов энергосбережения.

#9 2020-03-17 12:47:34

Watchdog
Гость

Re: Упрощение кода

Abramonromka пишет:
Watchdog пишет:
Abramonromka пишет:

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

Чтобы влезло нужно переделать всё, включая Ардуиновское ядро, и то не факт. Станет известно только после того. Волшебной формулы, превращающей фантазии в футпринт нет. smile

Понял. Ну пока памяти хватает, поэтому больше вопрос по активации режимов энергосбережения.

Я могу прочитать вам даташит и апликэйшин экзамлэс по этому поводу, если не выходит самому. smile А так подскажу. Энергоэконмичное выполнение программ базируется на принципах управления вычисленими событиями. Т.е. процессор запускается в работу только в случае переходов машинины сосояний приложения, отрабатывая необходимые вычисления. Всё остальное время "спит". Это ещё иногда называют ленивыми вычислениями. Ферштейн?

#10 2020-03-17 13:00:00

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Re: Упрощение кода

Watchdog пишет:
Abramonromka пишет:
Watchdog пишет:

Чтобы влезло нужно переделать всё, включая Ардуиновское ядро, и то не факт. Станет известно только после того. Волшебной формулы, превращающей фантазии в футпринт нет. smile

Понял. Ну пока памяти хватает, поэтому больше вопрос по активации режимов энергосбережения.

Я могу прочитать вам даташит и апликэйшин экзамлэс по этому поводу, если не выходит самому. smile А так подскажу. Энергоэконмичное выполнение программ базируется на принципах управления вычисленими событиями. Т.е. процессор запускается в работу только в случае переходов машинины сосояний приложения, отрабатывая необходимые вычисления. Всё остальное время "спит". Это ещё иногда называют ленивыми вычислениями. Ферштейн?

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

#11 2020-03-17 13:27:27

Watchdog
Гость

Re: Упрощение кода

Abramonromka пишет:

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

Заложено, только требует управленя программистом. В ATtiny13, к сожалению, не предумотрен AI. smile

#12 2020-03-17 14:44:26

Kaka
Участник
Зарегистрирован: 2018-03-21
Сообщений: 312

Re: Упрощение кода

Abramonromka пишет:

А почему они не должны совмещаться?)

Ну, потому и не должны. Если что-то "лучше всего подходит", то у него всего хватает и жрёт он сколько надо. А если не хватает и жрёт через чур, то это называется "не подходит".

Как тебе вот такая фраза? "Для задачи перевозки пяти тонн навоза лучше всего подходит Mercedes-AMG GT roadster, только вот пять тонн навоза в него не влазит, да и дороговат он для такой работы"?

Вот ты примерно также написал :-)

#13 2020-03-17 15:31:36

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Re: Упрощение кода

Watchdog пишет:
Abramonromka пишет:

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

Заложено, только требует управленя программистом. В ATtiny13, к сожалению, не предумотрен AI. smile

Грусть. Т.е. если его увести в сон, сам он уже из него не выйдет?

#14 2020-03-17 15:32:41

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Re: Упрощение кода

Kaka пишет:
Abramonromka пишет:

А почему они не должны совмещаться?)

Ну, потому и не должны. Если что-то "лучше всего подходит", то у него всего хватает и жрёт он сколько надо. А если не хватает и жрёт через чур, то это называется "не подходит".

Как тебе вот такая фраза? "Для задачи перевозки пяти тонн навоза лучше всего подходит Mercedes-AMG GT roadster, только вот пять тонн навоза в него не влазит, да и дороговат он для такой работы"?

Вот ты примерно также написал :-)


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

#15 2020-03-17 16:24:46

Watchdog
Гость

Re: Упрощение кода

Abramonromka пишет:

... Грусть. Т.е. если его увести в сон, сам он уже из него не выйдет?

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

#16 2020-03-17 18:47:37

User
Гость

Re: Упрощение кода

В ютубе хватает примеров про сон Attiny и прерывания. Например, поиск по словах Attiny13A save mode показывает много примеров.

#17 2020-03-18 13:50:11

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Re: Упрощение кода

Watchdog пишет:
Abramonromka пишет:

... Грусть. Т.е. если его увести в сон, сам он уже из него не выйдет?

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

Мотивировали)

#18 2020-03-18 13:54:37

Abramonromka
Участник
Зарегистрирован: 2020-03-17
Сообщений: 9

Re: Упрощение кода

User пишет:

В ютубе хватает примеров про сон Attiny и прерывания. Например, поиск по словах Attiny13A save mode показывает много примеров.

Спасибо большое за совет. Обязательно им воспользуюсь!

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела