Ви не увійшли.
Сторінки 1
Добрый день, форумчане. У меня такая задача: необходимо создать несколько устройств на МК, датчике вибрации/наклона, светодиоде и батарейке (таблетка). Каждое должно светиться по своему. Написал код для МК 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)
Неактивний
... Пробное устройство я уже собрал, (пульсирующий) всё работает исправно, но память 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);
}
}
}
Собственно прошу Вас помочь упростить код (если это возможно) и, что самое главное, помочь с режимами МК, чтобы увеличить время работы от батарейки.
Заранее Вас благодарю!
А просто деньгами возьмёте?
А что бы понять, что у вас там написано, удобно расставляйте отступы и скобки или придётся делать это за вас.
PS: first update patch for the project.
А что бы понять, что у вас там написано, удобно расставляйте отступы и скобки или придётся делать это за вас.
PS: first update patch for the project.
Исправил, спасибо за замечание)
А просто деньгами возьмёте? smile
Взять деньгами?) Мне взять?)
Если речь о оплате упрощения кода, то боюсь это не уместно. Тем более рубль упал, вирусы вокруг) Да и код-то написан уже, другое дело если бы я с нуля просил написать, да, это была бы наглость с моей стороны просить бесплатно.
Неактивний
Если речь о оплате упрощения кода, то боюсь это не уместно. Тем более рубль упал, вирусы вокруг) Да и код-то написан уже, другое дело если бы я с нуля просил написать, да, это была бы наглость с моей стороны просить бесплатно.
Чтобы влезло нужно переделать всё, включая Ардуиновское ядро, и то не факт. Станет известно только после того. Волшебной формулы, превращающей фантазии в футпринт нет.
Парень,
у тебя в голове вот эти две фразы:
МК ATTiny13 ... подходит больше всего
но память ATTiny13 ... может не хватить. А так же МК потребляет повышенный ток постоянно.
хорошо совмещаются?
У меня вот как-то не очень.
Возьми такую же по размеру ATtiny85 с её памятью и режимом picopower и не выноси сам себе мозг.
Остання редакція Kaka (2020-03-17 14:37:12)
Неактивний
Парень,
у тебя в голове вот эти две фразы:
Abramonromka пише:МК ATTiny13 ... подходит больше всего
но память ATTiny13 ... может не хватить. А так же МК потребляет повышенный ток постоянно.
хорошо совмещаются?
У меня вот как-то не очень.
Возьми такую же по размеру ATtiny85 с её память и режимом picopower и не выноси сам себе мозг.
А почему они не должны совмещаться?) Может я конечно чего-то не знаю о 13тиньке...
85тинька дороже. Но если других вариантов сократить потребление энергии нет, то придется ломать мозг с 85.
Неактивний
Abramonromka пише:Если речь о оплате упрощения кода, то боюсь это не уместно. Тем более рубль упал, вирусы вокруг) Да и код-то написан уже, другое дело если бы я с нуля просил написать, да, это была бы наглость с моей стороны просить бесплатно.
Чтобы влезло нужно переделать всё, включая Ардуиновское ядро, и то не факт. Станет известно только после того. Волшебной формулы, превращающей фантазии в футпринт нет.
Понял. Ну пока памяти хватает, поэтому больше вопрос по активации режимов энергосбережения.
Неактивний
Watchdog пише:Abramonromka пише:Если речь о оплате упрощения кода, то боюсь это не уместно. Тем более рубль упал, вирусы вокруг) Да и код-то написан уже, другое дело если бы я с нуля просил написать, да, это была бы наглость с моей стороны просить бесплатно.
Чтобы влезло нужно переделать всё, включая Ардуиновское ядро, и то не факт. Станет известно только после того. Волшебной формулы, превращающей фантазии в футпринт нет.
Понял. Ну пока памяти хватает, поэтому больше вопрос по активации режимов энергосбережения.
Я могу прочитать вам даташит и апликэйшин экзамлэс по этому поводу, если не выходит самому. А так подскажу. Энергоэконмичное выполнение программ базируется на принципах управления вычисленими событиями. Т.е. процессор запускается в работу только в случае переходов машинины сосояний приложения, отрабатывая необходимые вычисления. Всё остальное время "спит". Это ещё иногда называют ленивыми вычислениями. Ферштейн?
Abramonromka пише:Watchdog пише:Чтобы влезло нужно переделать всё, включая Ардуиновское ядро, и то не факт. Станет известно только после того. Волшебной формулы, превращающей фантазии в футпринт нет.
Понял. Ну пока памяти хватает, поэтому больше вопрос по активации режимов энергосбережения.
Я могу прочитать вам даташит и апликэйшин экзамлэс по этому поводу, если не выходит самому. А так подскажу. Энергоэконмичное выполнение программ базируется на принципах управления вычисленими событиями. Т.е. процессор запускается в работу только в случае переходов машинины сосояний приложения, отрабатывая необходимые вычисления. Всё остальное время "спит". Это ещё иногда называют ленивыми вычислениями. Ферштейн?
Ну т.е. как только на вход приходит сигнал, процессор запускается в работу, отработав все вычисления, снова уходит в сон, в ожидание сигнала с датчика. Это в принципе ферштейн. Но как это реализовать в коде я не совсем ферштейн, или в МК это заложено изначально? переход в режим ожидания.
Неактивний
... отработав все вычисления, снова уходит в сон, в ожидание сигнала с датчика. Это в принципе ферштейн. Но как это реализовать в коде я не совсем ферштейн, или в МК это заложено изначально? переход в режим ожидания.
Заложено, только требует управленя программистом. В ATtiny13, к сожалению, не предумотрен AI.
А почему они не должны совмещаться?)
Ну, потому и не должны. Если что-то "лучше всего подходит", то у него всего хватает и жрёт он сколько надо. А если не хватает и жрёт через чур, то это называется "не подходит".
Как тебе вот такая фраза? "Для задачи перевозки пяти тонн навоза лучше всего подходит Mercedes-AMG GT roadster, только вот пять тонн навоза в него не влазит, да и дороговат он для такой работы"?
Вот ты примерно также написал :-)
Неактивний
Abramonromka пише:... отработав все вычисления, снова уходит в сон, в ожидание сигнала с датчика. Это в принципе ферштейн. Но как это реализовать в коде я не совсем ферштейн, или в МК это заложено изначально? переход в режим ожидания.
Заложено, только требует управленя программистом. В ATtiny13, к сожалению, не предумотрен AI.
Грусть. Т.е. если его увести в сон, сам он уже из него не выйдет?
Неактивний
Abramonromka пише:А почему они не должны совмещаться?)
Ну, потому и не должны. Если что-то "лучше всего подходит", то у него всего хватает и жрёт он сколько надо. А если не хватает и жрёт через чур, то это называется "не подходит".
Как тебе вот такая фраза? "Для задачи перевозки пяти тонн навоза лучше всего подходит Mercedes-AMG GT roadster, только вот пять тонн навоза в него не влазит, да и дороговат он для такой работы"?
Вот ты примерно также написал :-)
Возможно не правильно выразился, за что прошу прощения) Просто старался как можно подробнее всё расписать.
Неактивний
... Грусть. Т.е. если его увести в сон, сам он уже из него не выйдет?
Не делайте поспешных выводов и глубже изучайте предмет. И тогда выйдет.
В ютубе хватает примеров про сон Attiny и прерывания. Например, поиск по словах Attiny13A save mode показывает много примеров.
Abramonromka пише:... Грусть. Т.е. если его увести в сон, сам он уже из него не выйдет?
Не делайте поспешных выводов и глубже изучайте предмет. И тогда выйдет.
Мотивировали)
Неактивний
В ютубе хватает примеров про сон Attiny и прерывания. Например, поиск по словах Attiny13A save mode показывает много примеров.
Спасибо большое за совет. Обязательно им воспользуюсь!
Неактивний
Сторінки 1