ESP 8266 + 74hc595
- Войдите на сайт для отправки комментариев
Ср, 01/05/2019 - 14:23
ESP 8266 + 74hc595
Всё отлично работает по снизу.
Всё отлично работает, за исключением того, что при загрузке ESP8266 светодиоды рандомно зажигаются.
В одной из тем тут на форуме, участник andriano подсказал интересующемуся как такое избежать на Arduino UNO
Так вот какой резистор использовать в моём случае и от какого пина питать OE ?
Мде, картинки не загрузились, а изменить нельзя(
Сейчас поправлю...
UPDATE
Тема: ESP 8266 + 74hc595
Всё отлично работает по схеме.
За исключением того, что при загрузке ESP8266 светодиоды рандомно зажигаются.
В одной из тем тут на форуме, участник andriano подсказал интересующемуся как такое избежать на Arduino UNO
Так вот какой резистор использовать в моём случае и от какого пина питать OE ?
andriano попал :)
А чем Вас не устраивает процитированный Вами ответ?
А чем Вас не устраивает процитированный Вами ответ?
Не достаточно пока разбираюсь.
Не понимаю к какому пину на ESP8266 подключать OE
andriano Как то так имеется ввиду ?
Оранжевый вопросик (непонимание к какому пину на ESP8266)
Предлагаю оживить дискуссию.
У меня как раз рояль в кустах (На макетке 74НС595 с восьми диодами на выходах и NodeMCU ESP8266 рядом. Есть все резисторы и конденсаторы). Обязуюсь оперативно прверять все идеи.
Мне эта тема тоже интересна.
Хотел её попробывать реализовать прямо в Сетапе. прокрутить 0000 0000 цикл.
Вторым способом ОЕ подключить к встроенному синему диодику (он нуликом зажигается).
А чем Вас не устраивает процитированный Вами ответ?
Не достаточно пока разбираюсь.
Не понимаю к какому пину на ESP8266 подключать OE
1. Это не ко мне. Книжки читайте. Какие именно - написано в прикрепленной теме в ПЕСОЧНИЦЕ.
2. К любому свободному. Естественно, в схеме и в коде должен фигурировать один и тот же пин.
Проверил одну идею.
Проблема решается просто.
Если в чердаке (или как там называется место над Сетапом) записать строку:
int number595 = (B00000000); // Вместо (00000000) можно ставить нужный вам безопасный стартовый код. Хоть (10010011)
... то при загрузке выходы микросхемы так и загрузятся. Потом начинает работать согласно скетча. Проверил только что. Несколько раз перезагружал комп, выдёргивал питание ESP. Сброс на нём нажимал. Результат тот же. При загрузке все ноли (00000000). если их так установил.
ОЕ наглухо закопано в землю
Только у меня подключение ESP k 74HC595 не такое, как у автора темы.
Муж_Долговой А где то этот number595 присваиваете регистру и как ?
У меня выходит только с так, как говорил andriano, а не получалось, потому что я зыбыл включить LOW на пине xD
Рассекреть свой скетч. На нём покажу. На пальцах не сумею ... русский язык мне не родной.
Вот здесь http://arduino.ru/forum/programmirovanie/uvelichenie-analogovykh-i-tsifrovykh-vkhodov я при очень большой помощи Sadman41 привёл реальный способ увеличения входов/выходов Ардуино ... ну и ESP 8266. Правда я тогда не знал про существование библиотеки для 595. Сам новичок.
Рассекреть свой скетч. На нём покажу. На пальцах не сумею ... русский язык мне не родной.
Нелогично.
Какое отношение пальцы имеют к языку?
А если серьезно, то "рассекречивать" нужно не скетч, а схему.
А эксперимент из поста №8 поставлен неправильно:
вот помести в скетч:
int number595 = (10010011);
подключи к выходам светодиоды (достаточно хотя бы к D7, D4 или D0 на землю или один из оставшихся - в питание) и сразу в начале скетча обнули регистр, если использовал D7, D4 или D0 или запиши в него 0xFF, если подключал оставшиеся.
Если бы указанная выше строка имела бы хоть какой-то смысл, мы бы видели при включении вспышку. А ее нет.
Делайте выводы.
Другой пример: с выхода МК два резистора - один в питание, другой на базу npn. в коллекторе - светодиод.
Нам нужно, чтобы контроллер выдавал "0", при котором светодиод не горит (предположим, он должен индицировать аварию).
Попытайтесь написать скетч, чтобы светодиод при включении МК не вспыхнул.
Рассекреть свой скетч. На нём покажу. На пальцах не сумею ... русский язык мне не родной.
Нелогично.
Какое отношение пальцы имеют к языку?
А если серьезно, то "рассекречивать" нужно не скетч, а схему.
А эксперимент из поста №8 поставлен неправильно:
вот помести в скетч:
int number595 = (10010011);
подключи к выходам светодиоды (достаточно хотя бы к D7, D4 или D0 на землю или один из оставшихся - в питание) и сразу в начале скетча обнули регистр, если использовал D7, D4 или D0 или запиши в него 0xFF, если подключал оставшиеся.
Если бы указанная выше строка имела бы хоть какой-то смысл, мы бы видели при включении вспышку. А ее нет.
Делайте выводы.
Другой пример: с выхода МК два резистора - один в питание, другой на базу npn. в коллекторе - светодиод.
Нам нужно, чтобы контроллер выдавал "0", при котором светодиод не горит (предположим, он должен индицировать аварию).
Попытайтесь написать скетч, чтобы светодиод при включении МК не вспыхнул.
Диванный теоретик!!!!!
А без этой строки ESP запускаетс с состоянием регистров на момент предыдущего выключения.
Как написано ... так и протестировал!!!!!!!!!!!! Тебе видео заснять как выходы в исходное состояние при запуске выставляются!?
Я же говорил, попал :)
Я же говорил, попал :)
А как правильно называется тот чердак над Сетапом, где и глобальные переменные прописывают?
Там много чего может быть, но думаю, что Вы имеете в виду глобальное пространство имён.
Там много чего может быть, но думаю, что Вы имеете в виду глобальное пространство имён.
А на жаргоне?
"Чердак" не понятно будет?
Мне - нет.
Что, прямо вот так int number595 = (B00000000) пишу и всё? А если я бахну byte shiftReg164 = 0xFF - какие выводы у меня встанут в '1'?
Значит так ... с такой строчкой в области глобальных переменных int number595 = (B00000000) при включении питания на ESP кратковременно, до включения Лупа, устонавливаются нули. Это я проверил на железе. Напишишешь как мне написать твоё FF ... сразу и проверю. Макетку ещё не разобрал. Чтобы не было недопонимания ... измени мой последний скетч, где помогал с расширением входов, как ты хочешь.
Если в чердаке (или как там называется место над Сетапом) записать строку:
int number595 = (B00000000); // Вместо (00000000) можно ставить нужный вам безопасный стартовый код. Хоть (10010011)
... то при загрузке выходы микросхемы так и загрузятся.
Афигеть! Потрясен до глубины души.
Если в чердаке (или как там называется место над Сетапом) записать строку:
int number595 = (B00000000); // Вместо (00000000) можно ставить нужный вам безопасный стартовый код. Хоть (10010011)
... то при загрузке выходы микросхемы так и загрузятся.
Афигеть! Потрясен до глубины души.
Понял в чём ваша бестолковость. Строка int number595 = (B00000000) не сама по себе же!
Это переменная, которая потом в скетче может иметь любое значение
Имеется ввиду, что потом в Лупе это применится:
***
Ну вот и писали бы, что строка "при нём", а не просто так болтается. Тут всё как в суде - рассматривается так, как написано.
Ну вот и писали бы, что строка "при нём", а не просто так болтается. Тут всё как в суде - рассматривается так, как написано.
Так я ещё и виноват!!!!?
Потому и спрашивал у автора его скетч ... что бы на нём показать.
Разберёшься, что я написал - тогда и .... ну и молодец тогда.
Вот знал, что Гуру налетят!
Думаю, ТС уже прочитал. Хотел удалить. Не вышло.
А кто заблокировал мне возможность это удалить?
Ну теперь сами и удаляйте.
Муж_Долговой - ерунду вы пишете, ваш метод не работает и не может работать.
Светодиоды на выводах 595-регистра вспыхивают ДО загрузки скетча в ардуину, так что никакая строчка в коде этого поведения не меняет. Это совершенно очевидный вывод, но если вы будете упорствовать - могу собрать схему и продемонстрировать видео, 595 регистры у меня как раз на столе лежат.
Явление, с которым столкнулся ТС - известно давно. Бороться с ним можно только АППАРАТНЫМИ методами.
Муж_Долговой - ерунду вы пишете, ваш метод не работает и не может работать.
Светодиоды на выводах 595-регистра вспыхивают ДО загрузки скетча в ардуину, так что никакая строчка в коде этого поведения не меняет. Это совершенно очевидный вывод, но если вы будете упорствовать - могу собрать схему и продемонстрировать видео, 595 регистры у меня как раз на столе лежат.
Явление, с которым столкнулся ТС - известно давно. Бороться с ним можно только АППАРАТНЫМИ методами.
Пойду видео снимать.
Пойду видео снимать.
Давай я тебе четкое ТЗ дам. что именно снимать.
На выходы 595 регистра устанавливаешь светодиоды. В коде скетча эти светодиоды ЗАЖИГАЕШЬ (то есть в момент выключения питания на выходах регистра единицы).
Выключаешь питание, ждешь минуту, включаешь снова. Наблюдаешь вспышку диодов ДО ЗАГРУЗКИ ардуины или ЕСП.
Задание - написать такой скетч, чтобы эту вспышку убрать программно. Код выкладываем в свободный доступ.
Собрал схему, проделал эксперимент. Вспышки после добавления в начало кода int number595 =0; остаются. как и следовало ожидать.
Однако, что могу сказать в поддержку "Мужа"- действительно, эффект от той строчки несомненно есть. Без нее диоды на регистре горят все время загрузки, которая может длится до секунды. С этой строчкой - диоды вспыхивают буквально на мгновение. Но вспыхивают все же.
Так что метод с OE пином надежнее, что и требовалось доказать.
Вывод - если в момент загрузки появление сигналов на выходах регистра недопустимо - помогут только аппаратные методы.
Если у кого есть сомнения или вопросы - сниму видео и выложу код, хотя снимать это крайне неудобно из-за того, что нужно держать мобильник и включать отключать питание. Вообще лень, по-моему результат особых сомнений не вызывает, как мне кажется.
Муж пропал.... видимо жена вмешалась и пристроила мужа к чему-то более полезному, чем ардуино :)
Не пропал. Грузится видео долго. Одно (с обнулением) загрузилось.
Не пропал. Грузится видео долго. Одно (с обнулением) загрузилось.
так ты сделай видео на 10-15 секунд - зачем больше? такое грузится мгновенно
https://photos.app.goo.gl/T1vqqNtdLWmdTJB49
В момент включения вспыхивает, насколько я вижу. Или я ничего не понял.
Светодиоды включаются нулевым уровнем
Чтобы понять ... надо инвертировать мозг. Сам путаюсь
Держите мое видео . Тут все просто и наглядно. Сначала светодиоды горят. Потом выключаем питание. Потом включаем обратно - видим вспышку.
Ваша строчка стоит первой в коде.
https://youtu.be/o8p23aK7XTk
код
Update - прошу прощения, при переносе кода в конфу взялся выкидывать комменты и немного порушил код. Сейчас исправил - выше код правильный и соответвует видео.
Это чтобы не было сомнений, почему сообщение несколько раз редактировалось.
Т.е. Если у меня светодиоды включаются нолём ... то я мог про вспышку при подаче напряжения и не знать. Сперва Не горят, потому что нет напряжения, потом не горят потому что 11111111, потом честно загораются при обнулении. Интересно. Сейчас в чердаке половине единички выставлю. Увидим. Обидно будет, если из за такой досадной мелочи Андриано диванным теоретиком обозвал.
Зачем так сложно программировать Ардуино? Совсем ничего не понятно.
Зачем так сложно программировать Ардуино? Совсем ничего не понятно.
надеюсь, вы не о моем коде?
А о Чьём же ещё!
А о Чьём же ещё!
b707, неточности в строках 16 и 18, поправьте.
b707, неточности в строках 16 и 18, поправьте.
в комментах бит на байт, если вы об этом? - поправил, спасибо за подсказку
https://youtu.be/gyXWxR0UWUM
Это видео без предварительного обнуления. Хаос продолжается первые 21 секунду. Потом работает как надо.
А о Чьём же ещё!
Сравнил! Мой скетч управляет восьми микросхемами расширителями входов/выходов.
А о Чьём же ещё!
Сравнил! Мой скетч управляет восьми микросхемами расширителями входов/выходов.
В теме "при загрузке ESP8266 светодиоды рандомно зажигаются" не должно быть ничего лишнего. После решения этой проблемы (для кого она важна) при одном регистре 595 можно переходить к управлению многими микросхемами.
При экспериментах неплохо бы через сколько-то секунд после отключения питания реально обнулять напряжение на 595, т.е. замыкать VCC и GND пинцетом.