Форум ModelldepO  

Вернуться   Форум ModelldepO > Моделизм > Электрика и DCC
Электрика и DCC Обсуждение цифрового и аналогового управления

Ответ
 
Опции темы Опции просмотра
Старый 18.08.2021, 18:18   #1
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
Лампочка Контроллер освещения на ATtiny13

Пришла мысль оживить "темное время" на макете путем переключения отдельных элементов освещения строений. Например, у церквушки 3 "лампы": одна над входом, вторая в башне, третья в основном помещении. Если над входом свет может гореть всегда, то в башне и основном помещении будет логично иногда его выключать. Аналогично со зданием вокзала, где первый этаж всегда включен, а на втором окна могут загораться и гаснуть. Ну или свет в жилых домах и уличные фонари по той же логике.

Немного поразмыслив получился следующий алгоритм управления лампочками:
  • на старте включаем 2/3 всех ламп случайным образом,
  • выставляем метку времени через сколько минут каждая лампа должна сменить свое состояние так же случайным образом,
  • при этом интервал, который лампа будет выключена принудительно уменьшаем вдвое,
  • при наступлении метки времени меняем состояние лампы и заново вычисляем интервал смены состояния,
  • интервалы вычисляем таким образом, чтоб они были не менее 1 минуты и не более 15 (или 60) минут.

Логика простая, с ней прекрасно справится самый простой и дешевый микроконтроллер ATtiny13, который тут же был заказан, но еще в пути...

Основываясь на опыте платы для подключения диодов, решил дополнить ее микроконтроллером. У ATtiny13 есть 5 ножек, которые можно использовать, 4 под диоды, 1 под переключение режима работы (цикл 15 или 60 минут). Таким образом плата освещения будет иметь все те же 8 выходов, только 4 будут управляться контроллером, а остальные 4 всегда включены.

Нажмите на изображение для увеличения
Название: Снимок экрана от 2021-08-18 17-53-13.jpg
Просмотров: 152
Размер:	60.2 Кб
ID:	194030


Пока ко мне едут ATtiny13, набросал скетч для ардуино, чтоб оценить что получается:

Скрытый текст

Код:
#define DEBUG 115200

#define MAX_LAMP 4

#define LED1_PIN 9
#define LED2_PIN 8
#define LED3_PIN 7
#define LED4_PIN 6
#define MODE_PIN 2
#define RESET_PIN A0

#define MAX_MINUTES 60
#define LONG_DELAY 60
#define SHORT_DELAY 15

struct Lamp
{
    uint8_t pin;
    uint8_t minute;
    bool state;
};

Lamp lamps [] = {
    {LED1_PIN, 0, false},
    {LED2_PIN, 0, false},
    {LED3_PIN, 0, false},
    {LED4_PIN, 0, false}
};

uint8_t old_minute = MAX_MINUTES;

void setup() 
{ 
    #ifdef DEBUG
    Serial.begin(DEBUG);
    #endif
    
    pinMode(RESET_PIN, INPUT);
    pinMode(MODE_PIN, INPUT_PULLUP);  

    randomSeed(analogRead(RESET_PIN));

    for (uint8_t i = 0; i < MAX_LAMP; i++) {
        pinMode(lamps[i].pin, OUTPUT);
        lamps[i].state = !random(3); // 2/3 off
    }
}

void loop() 
{
    uint8_t minute = (millis() / 1000 / 60) % MAX_MINUTES;

    if (minute != old_minute) {
        old_minute = minute;

        #ifdef DEBUG
        Serial.print("Minute ");
        Serial.println(minute, DEC);
        #endif

        for (uint8_t i = 0; i < MAX_LAMP; i++) {
            if (lamps[i].minute == minute) {
                change(lamps[i]);

                #ifdef DEBUG
                Serial.print("Lamp ");
                Serial.print(i, DEC);
                Serial.print(" changed to ");
                Serial.print(lamps[i].state ? "ON" : "OFF");
                Serial.print(", next minute ");
                Serial.println(lamps[i].minute, DEC);
                #endif
            }
        }
    }
}

void change(Lamp &lamp)
{
    lamp.state = !lamp.state;
    digitalWrite(lamp.pin, lamp.state ? HIGH : LOW);
    uint8_t max_delay = !digitalRead(MODE_PIN) ? LONG_DELAY : SHORT_DELAY;    
    uint8_t delay = random(1, max_delay);
    if (!lamp.state) delay = delay / 2; // short off interval
    if (!delay) delay = 1;
    lamp.minute += delay;
    if (lamp.minute >= MAX_MINUTES) lamp.minute -= MAX_MINUTES;
}
Адаптированная под ATtiny13 версия кода занимает 93% памяти по данным IDE, влезло, что называется, впритык)


Столкнулся с неожиданной проблемой получения случайного числа, на основе которого работает алгоритм освещения. Классический арудино подход, когда для инициализации генератора случайных чисел используется чтение с неподключенной аналоговой ножки, тут сложно применим т.к. у ATtiny13 остается всего одна ножка и это ресет, который желательно подключить через сопротивление к питанию, чтоб избежать случайных перезагрузок. Хотя в случае с освещением они не страшны, если будут не часто. И второй вариант - использование специальной библиотеки для ATtiny, которая генерит случайные числа и запоминает вектор инициализации в EEPROM, чтоб после каждой перезагрузки не повторять пройденную последовательность.

Сейчас все собрано на ардуино нано и успешно моргает диодами, оценить не воткнув в здание нереально, но макет пока не готов к размещению домиков, поэтому буду рад советам по алгоритму...
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
2 пользователя(ей) сказали cпасибо:
Старый 18.08.2021, 19:13   #2
Alexmit
Местный
 
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,837
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 972
Поблагодарили 2,652 раз(а) в 1,569 сообщениях
Репутация: репутация неоспорима (2678)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
Сейчас все собрано на ардуино нано и успешно моргает диодами,
Вот отсюда:
http://forum.modelldepo.ru/showpost....4&postcount=95
вариантик попробуйте.
Alexmit вне форума   Вверх
Пользователь сказал cпасибо:
Старый 18.08.2021, 19:29   #3
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от Alexmit Посмотреть сообщение
вариантик попробуйте.
у вас там прям все расписано и повторяется каждый цикл, да еще и нужно знать куда что подключено, чтоб расписать интервалы...
у меня планируется использовать контроллер под каждым зданием т.е. их будет около 10 и для каждого писать индивидуальную логику не хочется, поэтому пока остаюсь приверженцем рандома.

по текущему впечатлению от алгоритма выше и наблюдению за диодами на 15 минутном цикле, кажется что слишком долго диоды остаются выключенными, возможно стоит уменьшить выключенное время не в 2 а в 4 раза от случайного...
или брать за основу время, которое диод был включен и вычислять рандом от него... и делить еще может...
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Старый 19.08.2021, 07:22   #4
Qvan22
Заглянувший
 
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
Репутация: - луч света в тёмном царстве (454)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
Основываясь на опыте платы для подключения диодов, решил дополнить ее микроконтроллером. У ATtiny13 есть 5 ножек, которые можно использовать, 4 под диоды, 1 под переключение режима работы (цикл 15 или 60 минут). Таким образом плата освещения будет иметь все те же 8 выходов, только 4 будут управляться контроллером, а остальные 4 всегда включены.
Как вариант, при уже заказанных ATtiny13, добавить на плату копеечный сдвиговый регистр 74HC595 и получиться 2 аналоговых входа и 8 выходов для светодиодов.

Цитата:
Сообщение от Rebel Посмотреть сообщение
их будет около 10 и для каждого писать индивидуальную логику не хочется, поэтому пока остаюсь приверженцем рандома.
Все равно, потом когда поставите здания на макет, руки начнут чесаться...

оффтопик
Qvan22 вне форума   Вверх
Старый 19.08.2021, 09:28   #5
Crown
инженер-электроник
 
Аватар для Crown
 
Регистрация: 19.07.2012
Адрес: Тула
Сообщений: 562
Сказал(а) 'не согласен(а)'!: 30
Сказали 'не согласен'! 28 раз(а) в 17 сообщениях
Сказал(а) спасибо: 359
Поблагодарили 715 раз(а) в 280 сообщениях
Репутация: - просто великолепная личность (741)
По умолчанию

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
esp8266...
Вот! Вот на ней то и имеет смысл сейчас что то делать. А аттиньки, атмеги и т.д. забыть, как страшный сон...
Crown вне форума   Вверх
Старый 19.08.2021, 09:45   #6
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
получиться 2 аналоговых входа и 8 выходов для светодиодов.
под мои цели это перебор, мне 4 мигающих и 4 постоянно включенных более чем)


Цитата:
Сообщение от Qvan22 Посмотреть сообщение
ATtiny13 стоит уже как esp8266...
я может что не понимаю но быстро гугулиг показал что за цену одного esp8266 получится 5 attiny13, да и esp8266 это про вайфай вроде, который тут нефик не нужен
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Старый 19.08.2021, 17:46   #7
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от Crown Посмотреть сообщение
А аттиньки, атмеги и т.д. забыть, как страшный сон...
что в них такого плохого?
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Пользователь сказал cпасибо:
Старый 19.08.2021, 18:26   #8
Qvan22
Заглянувший
 
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
Репутация: - луч света в тёмном царстве (454)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
под мои цели это перебор, мне 4 мигающих и 4 постоянно включенных более чем)
Апетит приходит во время еды. Мне раньше и одной ардуинки хватало на целый модуль. А теперь в каждом углу свой микроконтроллер.

оффтопик

оффтопик
Qvan22 вне форума   Вверх
2 пользователя(ей) сказали cпасибо:
Старый 19.08.2021, 19:01   #9
TTenkov
Пользователь
 
Аватар для TTenkov
 
Регистрация: 28.08.2010
Адрес: Челябинск
Сообщений: 626
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 692
Поблагодарили 813 раз(а) в 346 сообщениях
Репутация: - просто великолепная личность (818)
По умолчанию

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
А теперь в каждом углу свой микроконтроллер.
У меня приблизительно такой же подход. Но мне хотелось, чтобы еще было можно у любого канала яркость регулировать, не заморачиваясь с подбором резисторов. Ну, и для различных эффектов (огонь, телевизор и т.д.). И такое решение (для себя, по крайне мере) я нашел. Это Tiny, которая управляет микросхемами WS2811 (для адресных светодиодов).
Потом на Stummi-форуме нашел похожее решение, но более сложное.
TTenkov вне форума   Вверх
Старый 19.08.2021, 19:10   #10
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
оже планируется рандомное включение и выключение света в комнатах, схожее с вашей идеей.
очень интересно какой алгоритм рандомизации будете использовать?

---------- Сообщение добавлено в 19:10 ---------- Предыдущие сообщение было в 19:04 ----------

Цитата:
Сообщение от TTenkov Посмотреть сообщение
у любого канала яркость регулировать, не заморачиваясь с подбором резисторов
каким образом регулировать? ну тоесть мне пока кажется самой простой идея поставить по потенциометру на каждый канал что б крутить "не отходя от кассы", только это уж какоето неоправданное нагромождение выходит для того что нужно 1 раз сделать, а если программно то больно сложная процедура настройки выхоит
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Старый 19.08.2021, 20:38   #11
Crown
инженер-электроник
 
Аватар для Crown
 
Регистрация: 19.07.2012
Адрес: Тула
Сообщений: 562
Сказал(а) 'не согласен(а)'!: 30
Сказали 'не согласен'! 28 раз(а) в 17 сообщениях
Сказал(а) спасибо: 359
Поблагодарили 715 раз(а) в 280 сообщениях
Репутация: - просто великолепная личность (741)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
что в них такого плохого?
оффтопик
Crown вне форума   Вверх
Старый 20.08.2021, 11:39   #12
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от Crown Посмотреть сообщение
эспруино
JS захватывает мир) но учитывая особенности языка, для МК это не лучшее решение, имхо, не говоря про потребность в ресурсах и цены на их платки...
наверное единственный просто доступный вариант это закатить его на stm32, но проделав все эти танцы с бубнами появится вопрос "зачем мне вся эта мощь и жаваскрипт, чтоб просто лампочками мигать?"
в общем выглядит как из пушки по воробьям имхо
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Старый 21.08.2021, 08:52   #13
Crown
инженер-электроник
 
Аватар для Crown
 
Регистрация: 19.07.2012
Адрес: Тула
Сообщений: 562
Сказал(а) 'не согласен(а)'!: 30
Сказали 'не согласен'! 28 раз(а) в 17 сообщениях
Сказал(а) спасибо: 359
Поблагодарили 715 раз(а) в 280 сообщениях
Репутация: - просто великолепная личность (741)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
но проделав все эти танцы с бубнами появится вопрос "зачем мне вся эта мощь и жаваскрипт, чтоб просто лампочками мигать?"
Ну хотя бы затем, что это первая ступенька на лестнице, ведущей к намного более интересным и полезным проектам, чем лампочками моргать.
Какой самый-самый первый проект/скетч на ардуино? Правильно, зажечь лампочку. Дальше объяснять?
Crown вне форума   Вверх
Старый 21.08.2021, 11:43   #14
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от Crown Посмотреть сообщение
Дальше объяснять?
да что уж там, давайте сразу поставим под каждый домик малинку, чтоб 4 лампочками мигать, ну и что, что она займет кучу места, зато можно будет на питоне писать или на любом другом любимом языке )))


Цитата:
Сообщение от Crown Посмотреть сообщение
более интересным и полезным проектам, чем лампочками моргать
если вы почитаете писанину из первого поста, то тут задача именно лампочками моргать, я пытаюсь решить ее максимально дешево и компактно, т.е. выбрать оптимальное аппаратное решение под требования.
достоинства espruino очевидны - это понижение порога входа в тему для тех, кто не знает си и не хочет заморачиваться как работает мк,
но это же и основной недостаток - на ней после загрузчика 300кб интерпретатора жс, который исполняет ваш предкомпилированный скрипт на лету, ровно поэтому возможна такая удобная отладка, но это полный провал по ресурсам, в отличие от компилятора си.

Безусловно, если цена и размер будут одинаковым, то выбор будет за еспруино, но а пока за цену одного еспруино £20.00 можно купить примерно 20 ATtiny13. Для мигания лампочками, кажется, выбор очевиден)
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
2 пользователя(ей) сказали cпасибо:
Старый 21.08.2021, 18:04   #15
railmodel
Пользователь
 
Регистрация: 23.12.2011
Адрес: Киев, Украина
Сообщений: 626
Сказал(а) 'не согласен(а)'!: 135
Сказали 'не согласен'! 48 раз(а) в 42 сообщениях
Сказал(а) спасибо: 371
Поблагодарили 634 раз(а) в 328 сообщениях
Репутация: - просто великолепная личность (857)
По умолчанию

оффтопик
railmodel вне форума   Вверх
6 пользователя(ей) сказали cпасибо:
Старый 02.09.2021, 12:39   #16
osmanpasha
Заглянувший
 
Регистрация: 16.07.2019
Адрес: -
Сообщений: 80
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 50
Поблагодарили 125 раз(а) в 46 сообщениях
Репутация: скоро придёт к известности (125)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
простой и дешевый микроконтроллер ATtiny13,
Эх, а ведь еще в прошлом году их можно было купить по 16р/штука... Чертов дефицит микроэлектроники.

По делу - ногу RESET тоже можно использовать как GPIO, точнее, как вход кнопки. Тут возможно 2 варианта:
1. выключить функцию RESET совсем, тогда ногу можно использовать как угодно, но никак нельзя будет перезагрузить МК. Но это перебор, на мой вкус, перепрошивка будет очень проблематичной.
2. подключать кнопку к ноге так, чтобы она ни в отжатом, ни в нажатом состоянии не просаживала напряжение ниже 4-4.5В (логический 0 на этой ноге приведет к перезагрузке), а состояние кнопки считывать АЦП. Освободившуюся АЦП-ногу можно использовать как источник энтропии для RNG. Можно, по идее, и цифровую висящую ногу использовать как источник энтропии.

О! Вот еще нашел статью о том, как неточность таймера вочдога используют как источник энтропии на AVR: https://sites.google.com/site/astudy...ntropy-library https://hackaday.com/tag/entropy-library/ https://sites.google.com/site/astudy...no-random-seed Автор проверял в том числе на Attiny (Не 13, но на ней должно тоже работать). Никаких модификаций железа не надо. Кажется, как раз то, что доктор прописал.
osmanpasha вне форума   Вверх
Пользователь сказал cпасибо:
Старый 02.09.2021, 12:49   #17
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от osmanpasha Посмотреть сообщение
1. выключить функцию RESET совсем
согласен перебор, от этой идеи сразу отказался

Цитата:
Сообщение от osmanpasha Посмотреть сообщение
2. подключать кнопку к ноге так
тоже не хочется городить огород на маленькой платке, хочется чтоб попроще

и тут либо последнюю свободную ногу использовать (но вроде есть какие-то сложности с тем что analogRead 0 всегда возвращает) и потерять пин для настройки длительности интервлаа (хотя может и не нужно, по факту смотреть надо)
либо софтовую приблуду вроде вашей библиотеки, прелесть которой в том, что в еепром ничего не пишет, в отличие от других
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Старый 02.09.2021, 14:27   #18
osmanpasha
Заглянувший
 
Регистрация: 16.07.2019
Адрес: -
Сообщений: 80
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 50
Поблагодарили 125 раз(а) в 46 сообщениях
Репутация: скоро придёт к известности (125)
По умолчанию

Еще одно решение, проще некуда:

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

Пруф оф концепт:

Arduino код:

int bootrandom __attribute__ 
((section (".noinit"))); ///< random at power up


void setup() {
  
Serial.begin(115200);  

  
srand(bootrandom);
  
bootrandom rand(); // get new seed at next boot
}

void loop() {
  
Serial.print(bootrandom);
  
Serial.print(' ');
  
Serial.println(rand());
  
delay(1000);

osmanpasha вне форума   Вверх
Пользователь сказал cпасибо:
Старый 02.09.2021, 19:03   #19
Qvan22
Заглянувший
 
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
Репутация: - луч света в тёмном царстве (454)
По умолчанию

А если просто опросить аналоговую ножку перед ее инициализацией как выхода?
Попробовал подключить диод+1к резистор на А0 и к 5в с другой стороны и получил разные значения после ресета.
Скрытый текст

Arduino код:
void setup() {
  
  
Serial.begin(9600);
  
int sensorValue analogRead(A0);
  
Serial.println(sensorValue);
  
delay(200);  
  
pinMode(A0OUTPUT);
  
digitalWrite(A0LOW);  
}
void loop() {  

В мониторе порта:
742
845
913
773
904
753
754
902
Qvan22 вне форума   Вверх
Старый 02.09.2021, 21:38   #20
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
опросить аналоговую ножку перед ее инициализацией как выхода
мне казалось что если на ней чтото висит, то значения будет всегда одно...
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Старый 02.09.2021, 23:18   #21
Qvan22
Заглянувший
 
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
Репутация: - луч света в тёмном царстве (454)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
мне казалось что если на ней чтото висит, то значения будет всегда одно...
Если светодиод коммутировать на минус то будет всегда 0, а если на плюс - то значения вполне могут плавать.
Qvan22 вне форума   Вверх
Пользователь сказал cпасибо:
Старый 05.09.2021, 14:54   #22
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от osmanpasha Посмотреть сообщение
Пруф оф концепт:
не работает(
выдает одно и то же после перезагрузки на моей нано

Цитата:
Сообщение от osmanpasha Посмотреть сообщение
О! Вот еще нашел статью о том
а вот это похоже работает, но требует больше времени на инициализацию
и не на attiny13 (
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Старый 07.09.2021, 00:44   #23
osmanpasha
Заглянувший
 
Регистрация: 16.07.2019
Адрес: -
Сообщений: 80
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 50
Поблагодарили 125 раз(а) в 46 сообщениях
Репутация: скоро придёт к известности (125)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
выдает одно и то же после перезагрузки на моей нано
О как. На моей Uno проверял, работало. А что пишет?

Цитата:
Сообщение от Rebel Посмотреть сообщение
но требует больше времени на инициализацию
и не на attiny13 (
Ну автор пишет, что пол-секунды это дело стартует, что, в относительных числах очень много, но в абсолютных, наверное, приемлемо? Я сейчас далеко от компа, через пару дней посмотрю, что там с Attiny13. Возможно, имена регистров другие.
osmanpasha вне форума   Вверх
Старый 07.09.2021, 14:11   #24
Rebel
Местный
 
Аватар для Rebel
 
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
По умолчанию

Цитата:
Сообщение от osmanpasha Посмотреть сообщение
О как. На моей Uno проверял, работало. А что пишет?
изначально в неинициализированной переменной 5, кandomSeed, получаем случайное число 11, записываем в ту самую переменную, выключаем.
ждем, включаем, в переменной теже 11, следующее случайное 5, записываем выключаем и так по кругу.
тоесть оно ведет себя как постоянная память и какаято невнятная штука с генерацией первого случайного числа.
может между выключениями надо было ждать более минуты или на тини будет по-другому себя вести...


Цитата:
Сообщение от osmanpasha Посмотреть сообщение
что там с Attiny13. Возможно, имена регистров другие.
ругается на чтото около WDT из чего бегло делаю вывод, что в ней вочдогтаймаута нет (


по итого пока рабочее решение оставить ресет в воздухе и аналогРидом с него читать значение для рандомСид...
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog
Rebel вне форума   Вверх
Старый 09.09.2021, 11:42   #25
osmanpasha
Заглянувший
 
Регистрация: 16.07.2019
Адрес: -
Сообщений: 80
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 50
Поблагодарили 125 раз(а) в 46 сообщениях
Репутация: скоро придёт к известности (125)
По умолчанию

Цитата:
Сообщение от Rebel Посмотреть сообщение
изначально в неинициализированной переменной 5, кandomSeed, получаем случайное число 11, записываем в ту самую переменную, выключаем.
ждем, включаем, в переменной теже 11, следующее случайное 5, записываем выключаем и так по кругу.
тоесть оно ведет себя как постоянная память и какаято невнятная штука с генерацией первого случайного числа.
Это оочень странное поведение. Вы randomSeed и random используете? После randomSeed(5) первый вызов random у меня возвращает 84035, а после randomSeed(11) - 184877. Если использовать srand и rand, то числа 18499 и 21037. Может быть, код неверный?

То, что память хранит значение, пока есть питание - это нормально. При этом, для сохранения значений памяти достаточно не 5В, а гораздо меньше, т.е. ядро МК уже не работает, а память сохраняет значение. Если отключить питание от МК, но оставить подключенными землю и, скажем, ноги UART, подключенные к USB-UART-преобразователю, то память вполне может питаться паразитно от этих ног.
osmanpasha вне форума   Вверх
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Освещения в вагоне djluna1627800 ЧАВО 29 15.12.2019 17:08
мощный стационарный декодер как pwm (ШИМ) - контроллер. vspider Электрика и DCC 11 14.04.2014 11:54
сопутствующие проблема с китом освещения Alex_S Личный опыт 11 15.08.2012 16:47
Столбы освещения Jevgen ЧАВО 3 14.04.2012 16:21
подключение освещения malder Электрика и DCC 5 18.09.2008 20:56


Текущее время: 12:24. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Copyright © ModelldepO.ru 2006 -