1. Уважаемые форумчане! Убедительная просьба, используйте наиболее подходящие темы для своих сообщений. Спасибо за понимание.
    Скрыть объявление

Контроллер своими руками

Тема в разделе "Автоматика", создана пользователем Yuriiv, 6 апр 2014.

Поделиться этой страницей

  1. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    а где про это почитать? нашел только вот Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок! но там такого нет
     
  2. flexx

    flexx Active Member

    Регистрация:
    22.08.2014
    278
    25
    можно почитать даташит на контроллеры AVR там все расписано. Но если коротко, то каждый пин в контроллере имеет встроенный очень маломощный подключаемый резистор. Т.е. пин может работать на вход или на выход, при этом он может "болтаться в воздухе" (в теории на пине может оказаться любое напряжение), а может быть замкнут на + через этот резистор ("подтянут к высокому уровню"). Делается это для того что-бы быть уверенным, что на пине высокий уровень.

    на этой схеме пин "притянут" к земле через резистор 10 Ом. Точно такой же только болшего сопротивления (что-то около 100 кОм) стоит и в самом контроллере, только подтягивает он не к земле, а к +.
     
  3. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    мне просто не понятно почему автор сделал именно так? ведь дополнительно нагружается МК, а что нужно поменять в скетче чтоб подключить кнопки с общим + и и пины МК были я так понимаю подтянуты через внутренний резистор
     
  4. Andynovosib

    Andynovosib Участник

    Регистрация:
    08.02.2014
    215
    10
    А в каком месте МК нагружается? У автора все грамотно сделано, только можно выкинуть подтягивающие резисторы и включить внутренние в программе (Каждый из 14 цифровых выводов Pro, используя функции Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок!, Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок!, и Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок!, может настраиваться как вход или выход. Выводы работают при напряжении 3,3 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА.)
     
  5. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    блин опять двадцать пять! к чему я всё это ? везде в примерах +( плюс) идёт через кнопку на аналоговые входы МК,у автора -( минус) через кнопку на контакты МК ! у меня есть клавиатура с цельным не разъёмным 5 пиновым штекером клавиатура.JPG когда я подключаю на пины ардуины у меня получается А0,А1,А2,А3 и общий (этой клавиатуры) встаёт на vcc(+5в) ! я хочу подключить эту клавиатуру без каких-то переходников ,переделок и перепаек разъёма клавиатуры (подсоединяю я её к ардуино про мини ) вот отсюда и вопрос : что нужно поменять в скетче или может есть уже оптимизированный скетч под такого типа клавиатуры?
     
  6. Andynovosib

    Andynovosib Участник

    Регистрация:
    08.02.2014
    215
    10
    Тогда придется припаивать резисторы на землю на каждую шину кнопок, и в скетче в подпрограммах опроса кнопок " if (digitalRead(Button_press)==0) " 0 заменить на HIGH или 1
    По моему проще сделать переходничок
     
  7. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    а если переназначить пины ардуины? 2,3,4,5 переназначить под клавиатуру, а А0,А1,А2,А3 на дисплей так не выйдет?
     
  8. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    при такой перестановке общий от клавы встаёт как раз на gnd
     
  9. Andynovosib

    Andynovosib Участник

    Регистрация:
    08.02.2014
    215
    10
    Почему бы и нет, можно попробовать, должно сработать
     
  10. flexx

    flexx Active Member

    Регистрация:
    22.08.2014
    278
    25
    выйдет. у меня именно так и работает. LCD (пины D4-D1) висит на портах А1-А4, а кнопки на D2-D5
     
  11. flexx

    flexx Active Member

    Регистрация:
    22.08.2014
    278
    25
    на самом деле все просто. Надо найти строчку pinMode(pinX, INPUT), где pinX - номер порта который хочешь поменять, ее на pinMode(pinX, INPUT_PULLUP).

    При аргументе INPUT - пин "болтается в воздухе" и напрямую соединен с потром. Как правило если сигнала по порте нет, то пин определяется как "0".
    При аргументе INPUT_PULLUP- пин "подтянут" через резистор к высокому уровню. Если сигнала нет, то на пине будет "1".

    Но судя по тому что ты задаешь этот вопрос, я понимаю что от программирования и электроники ты далек. Потому ОЧЕНЬ не советую менять что-либо в работающем скетче. Т.к. это может привести к полной неработоспособности прошивки или выгоранию чего-либо при неправильной заточке рук.
    С другой стороны если скетч не скомпилируется и выдаст кучу ошибок, это может сподвигнуть на курение даташитов и ковыряние в коде. Что само по себе небесполезно :)
     
    Последнее редактирование: 1 ноя 2014
  12. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    спасибо за ответ,буду изучать и пробовать ардуин 5 штук назаказывал на всякий случай если чего-то погорит,впереди зима а МК это хорошая разминка для мозга
     
  13. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    так с ходу вопрос строку пинов дисплея менять в самом скетче?
     
  14. Andynovosib

    Andynovosib Участник

    Регистрация:
    08.02.2014
    215
    10
    не-не, номер порта в скетче прописывается в самом начале при обозначении переменных - const char Button_up = A2; // Кнопка "ВВЕРХ", а потом уже используется только имя переменной. Вот в этом самом начале и надо переназначить пины. Погореть там ничего не может, если только ты не назначишь выход пину 1 и физически замкнешь его на землю, или наоборот, подашь 5В, а назначишь 0 ( без резистора ограничивающего ток в 40 мА(мах))
     
    • Баян Баян x 1
  15. Andynovosib

    Andynovosib Участник

    Регистрация:
    08.02.2014
    215
    10
    конечно в начале, а гдеж еще
     
    • Учи язык Учи язык x 1
  16. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    тоесть получается переписать для дисплея эту строку и всё? LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
    и потом кнопки
     
  17. Andynovosib

    Andynovosib Участник

    Регистрация:
    08.02.2014
    215
    10
  18. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    ребят не пойму в чём секрет подключаю дисплей как в инструкции блока,показывает иероглифы (прошивка MyBeerMashine_v2_5),подключаю как в примере hello world в программе ардуино иде,всё работает,в чём причина?
     
  19. Владимир ZDF

    Владимир ZDF Участник

    Регистрация:
    11.06.2014
    130
    22
    см на какие пины а примере hello world экран расключен и на какие в прошивке

    // sensor and lcd per PCB Brauholic
    OneWire ds(11);
    LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
     
  20. alexgo

    alexgo Active Member

    Регистрация:
    07.10.2014
    631
    27
    Имя:
    Александр
    меняю в прошивке значения на значения как в " hello world" компилирую,загружаю в очищенную МК (датчик,кнопки,релюшки не подключены) на экране пустота