Эмуляция контроллера Arduino Uno в Proteus

Slavat
Offline
Зарегистрирован: 15.12.2015

Доброе время суток. помогите начинающему ...Ардуина пока летит из Поднебесной, а пока решил сємулировать ее в Протеусе. Написал Хелоуворд в виде светодиода на 13-м пине - все отлично  работает, все мигает. Написал управление пином через кнопку - пример из учебника :

int ledPin = 13; // светодиод подсоединен к цифровому выводу 13
int inPin = 7;   // кнопка подсоединена к цифровому выводу 7
int val = 0;     // переменная для хранения считанного значения
 
void setup()
{
  pinMode(ledPin, OUTPUT);      // конфигурируем цифровой вывод 13 как выход
  pinMode(inPin, INPUT);      // конфигурируем цифровой вывод 7 как вход
}
 
void loop()
{
  val = digitalRead(inPin);   // считываем значение со входа
  digitalWrite(ledPin, val);    // выводим на светодиод уровень сигнала на кнопке
}

результат - пока не нажал на кнопку - светодиод не горит , нажал на кнопку - зажегся ... ОТПУСТИЛ кнопку - горит  ... КАК ?
почему горит ?? баг эмулятора ? очень интересно ... он не считывает состояние кнопки при сл. шаге цикла ...

кнопка нажата

кнопка нажата

кнопка отжата

Кнопка отжата

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

забыли резистор подтягивающий 7 пин на VCC 10К

Slavat
Offline
Зарегистрирован: 15.12.2015

пробовал .. так вообще не понятно что .. с резистором на 7 пине не пропадает сигнал вообще

на номинал R1 не обращайте внимание - поменял на 10К

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

слово подтягивающий говорит о том, что надо соеденить вывод 7 через резистор с плюсом питания, а кнопку на землю

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Valera19701 пишет:

забыли резистор подтягивающий 7 пин на VCC 10К

А не земле? Там разве кнопка у него не на Vcc выведена?

Slavat
Offline
Зарегистрирован: 15.12.2015

не совсем понимаю... параллельно кнопке ?? тогда там сигнал будет вечно ...

разве на пин , который как INPUT мы не подаем питание ?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

ЕвгенийП пишет:

А не земле? Там разве кнопка у него не на Vcc выведена?

там не подписано

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

в первых картинках было не подписано, дополнил пост #3

можно и наоборот , кнопку к плюсу, резистор к массе, главное чтобы пин в воздухе не был при отжатой кнопке

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Slavat пишет:

не совсем понимаю... параллельно кнопке ?? тогда там сигнал будет вечно ...

разве на пин , который как INPUT мы не подаем питание ?

Два варианта:

1.
Кнопку одним концом на землю, а другим на пин. От того места, где кнопка соединяется с пином идёт резистор 10-20К на Vcc.

2.
Кнопку одним концом на VCC, другим на пин. 
От того места, где кнопка соединяется с пином идёт резистор 10-20К на Землю.

В первом варианте: кнокпа не нажата - на пине HIGH, нажата - на пине LOW

Во втором варианте - наоборот.
 

Slavat
Offline
Зарегистрирован: 15.12.2015

ЕвгенийП пишет:

Два варианта:

1.
Кнопку одним концом на землю, а другим на пин. От того места, где кнопка соединяется с пином идёт резистор 10-20К на Vcc.

2.
Кнопку одним концом на VCC, другим на пин. 
От того места, где кнопка соединяется с пином идёт резистор 10-20К на Землю.

В первом варианте: кнокпа не нажата - на пине HIGH, нажата - на пине LOW

Во втором варианте - наоборот.

шайтан-машина !!!! заработало по второму варианту ... СПАСИБО!

если не сложно- расскажите, зачем пин на землю сажать ?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Slavat пишет:

если не сложно- расскажите, зачем пин на землю сажать ?

Вы уверены, что протеус - это ваш инструмент?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Slavat пишет:

если не сложно- расскажите, зачем пин на землю сажать ?

Представьте себе, что Вы НЕ посадили пин на землю, а кнопка разомкнута.

Что имеем: провод от пина идёт к кнопке и на ней просто обрывается (она же разомкнута!), т.е. проводок не подключён ни к чему - болтается в воздухе.

В этом случае он (провод) по сути является антенной для помех. У Вас где-то рядом проходят провода домашней электросети, которые прилично излучают, где то работает микроволновка, мобильник. Атмосферное электричество тоже никто не отменял. Так вот Ваш проводок всё это ловит как антенна - и если он что-то поймает (например, Вы свою руку рядом с ним пронесёте) контроллер воспримет это как нажатие кнопки.

Если же он подключён к земле, всё пойманные им помехи благополучно уйдут в землю, т.к. сопротивление резистора 10-20К, а сопртивление INPUT'а контроллера - кажется 100Мом или вроде того. Понятно, что ток пойдёт туда, где 20К, а не туда, где 100Мом (вернее он, конечно, везде пойдёт, но в пин пойдёт в 5 тыс. раз меньше, чем в землю, ибо закон Ома он и в Африке ...)

Выбор резистора диктуется двумя противоречивыми соображениями. чем меньше - тем надёжнее притянуто, но при этом бОльший ток пойдёт при нажатии кнопки просто от VCC к земле через этот резистор (ведь когда Вы нажимаете кнопку вы по сути соединяете VCC с землёй через этот самый резистор!).

Это вообще, общее правило - провода не должны болтаться в воздухе. Помните об этом всегда и в любых конструкциях.

 

Slavat
Offline
Зарегистрирован: 15.12.2015

ЕвгенийП пишет:

Slavat пишет:

если не сложно- расскажите, зачем пин на землю сажать ?

Это вообще, общее правило - провода не должны болтаться в воздухе. Помните об этом всегда и в любых конструкциях.

понял, спасибо !

maxvalin
Offline
Зарегистрирован: 22.02.2016

вопрос по теме:
Как в протеусе добавить второе питание? Например есть vcc 24v. а мне надо ещё и 5v, земля общая выходит. Не могу найти в гугле подобный вопрос. Я понимаю что можно ограничится и пятью вольтами, но вот мне для полноты счастья хотелось именно два)

a5021
Offline
Зарегистрирован: 07.07.2013

Хоть двадцать два:

MENU -> Design -> Configure Power Rails...

maxvalin
Offline
Зарегистрирован: 22.02.2016

Дык с того и начал!

Проэкт/ конфигурция шин питания/ новый/ имя 24V/ питание 24, класс POWER.

а в "цепи связанные с 24" добавить нечего (фото приложу) и когда на поле добавляю лебду- шину. 

то при выборе нету моей 24V.

maxvalin
Offline
Зарегистрирован: 22.02.2016

maxvalin
Offline
Зарегистрирован: 22.02.2016

версия протеуса 7.10 (на 8ой пееходить неть желания, там русика нету) 

a5021
Offline
Зарегистрирован: 07.07.2013

maxvalin пишет:

Дык с того и начал!

Проэкт/ конфигурция шин питания/ новый/ имя 24V/ питание 24, класс POWER.

а в "цепи связанные с 24" добавить нечего (фото приложу) и когда на поле добавляю лебду- шину. 

то при выборе нету моей 24V.

Сначала рисуете на схеме все подключения к рельсам, а потом создавайте свою 24 класс POWER.

maxvalin
Offline
Зарегистрирован: 22.02.2016

мда... создал на схеме без имени лейбду- зашел в парметры , не видно моих лейбд, вышел, включил эмуляцию - ошибка. Зашел обратно в параметры шины питания- появилось мои неопознаные лейбды. Связал с 24V - заработало.  Гемор еще тот. С проэкта пришлось ардуино удалять чтоб не вылазила ошибка питания. В общим протеус еще то чудо.... Не говоря о корпусах в библиотеке- большая часть тупо матрешки- не эмултся.

a5021
Offline
Зарегистрирован: 07.07.2013

maxvalin пишет:
С проэкта пришлось ардуино удалять чтоб не вылазила ошибка питания. В общим протеус еще то чудо....

Больше похоже, что вы его готовить не умеете. Давно пользую протеус и никогда ничего подобного не наблюдал.

maxvalin
Offline
Зарегистрирован: 22.02.2016

в итоге удалил сам проэкт, ибо по питанию пошли ошибки на всех девайсах. Напутал когда с питанием разбирался.
п.с
понятное дело что не умею. умел бы , не спрашивал как питание добавлять)

a5021
Offline
Зарегистрирован: 07.07.2013

Ничего, научитесь.

maxvalin
Offline
Зарегистрирован: 22.02.2016

вы не поняли, проэкт удалил ибо шина питания заглючила основательно. Но никто же не сказал что на этом и все. Проэкт создан поновой , все оптопары и реле работают с мегой. теперь к программе!