Порты ввода и вывода у микроконтроллеров
Общая схема игрушки «Бегущий человек»:
Микроконтроллер это схема, которая в данном случае получает команды от двух
кнопок и выводит какую-то информацию на экран. На самом деле у дисплея есть
свой внутренний микроконтроллер и по всем этим проводам передаются команды
именно ему. И уже микроконтроллер дисплея что-то на нём рисует.
Если бы эта игрушка была в коробке, для подключения её хватило бы двух
управляющих проводов (для кнопок). А контроллеру дисплея потребовалась бы шина аж из 6 проводов.
И все они были бы для вывода информации
(тип OUTPUT), потому что от такого дисплея информация не поступает. А от
кнопок, по которым «человек» должен подпрыгивать или приседать, информация
поступает, потому это порты ввода (тип INPUT).
Контролер крупнее (с номерами ножек):
При включении дисплей инициализируется такой командой:
LiquidCrystal lcd(12, 11,
5, 4, 3, 2);
Предлагаю поверить мне на слово, что внутри (в драйвере) всем этим ножкам
присваивается тип OUTPUT.
А тип портов, подключенных к кнопкам устанавливается в самой программе:
void setup(){
pinMode(PIN_READWRITE,
OUTPUT);
digitalWrite(PIN_READWRITE,
LOW);
pinMode(PIN_CONTRAST,
OUTPUT);
digitalWrite(PIN_CONTRAST,
LOW);
pinMode(PIN_BUTTON_UP, INPUT);
digitalWrite(PIN_BUTTON_UP,
HIGH);
pinMode(PIN_AUTOPLAY,
OUTPUT);
digitalWrite(PIN_AUTOPLAY,
HIGH);
pinMode(PIN_BUTTON_DOWN, INPUT);
digitalWrite(PIN_BUTTON_DOWN, HIGH);
PCintPort::attachInterrupt(PIN_BUTTON_UP, &buttonPush,
FALLING);
PCintPort::attachInterrupt(PIN_BUTTON_DOWN, &BUTTON_DOWN_ISR,
CHANGE);
initializeGraphics();
lcd.begin(16,
4);
}
В ней же цепляются обработчики событий – нажатия кнопок. Это программы,
которые будут выполняться, если кнопка отпущена, нажата или то или другое (change – изменение).
А теперь ещё раз про первую картинку. Все это будет работать, если один хвост
кнопки прицеплен к ножке, а другой к земле.
Это, вроде, нелогично. Если интуитивно, то входящему сигналу полагается
быть напряжением. И ему, вроде бы, надо поступать при нажатии кнопки (кнопка
просто контакт замыкает). Но подключать надо, как на картинке показано.
|