Вы уже знаете, что выводы платформы Arduino - пины (pin), это конкретные выводы
микроконтроллера, к которым можно обратиться и которые могут работать как входы
или как выходы. Мы уже использовали их как выходы, настало время поработать с
ними как с входами. И начнем, по традиции, с цифровых входов.
Чтобы назначить вывод входом, используется уже известная вам функция:
pinMode(pin, mode)
где pin - это номер вывода, а mode - режим, который может принимать одно из
двух значений: INPUT - режим вход или OUTPUT - режим выход.
Для первого эксперимента нам потребуется кнопка:
Кнопки с 4 контактами стоит рассматривать, как 2 пары рельс, которые
соединяются при нажатии.
Есть несколько способов подключения кнопки, самый простой - просто просто
подключить кнопку между выводом и общим проводом или проводом питания, строго
говоря не правильный, так как пока кнопка не нажата вывод контроллера как бы
висит в воздухе, а значит на нем могут наводиться различные помехи.
Чтобы этого избежать, применяют "подтягивающие" резисторы, которые, когда
кнопка не нажата, подтягивают вывод к плюсу питания или общему проводу,
формирую на выводе уровень логической единицы или логического нуля.
Первый способ (подтягивание вывода к общему проводу, когда кнопка не нажата
на выводе логический ноль):
Второй способ (подтягивание вывода к плюсу питания, когда кнопка не нажата
на выводе логическая единица):
На самом деле, mode может принимать еще одно значение: INPUT_PULLUP -
подтянутый к питанию вход. Режим INPUT_PULLUP позволяет подключить к выводу
встроенный в микроконтроллер резистор, подтягивающий вывод к питанию. Но дело
в том, что не все контроллеры имеют такой резистор, да и Tinkercad такой режим
тоже не понимает, поэтому лучше все-таки использовать подтягивающие резисторы.
Для экспериментов соберем следующую схему:
Будем выводить значение, которое формируется на входе D8, в монитор порта:
Нажимая кнопку, в мониторе мы увидим, что если кнопка не нажата - в монитор
выводится единица, если нажата - ноль.
Здесь функция digitalRead(8); считывает состояние вывода D8.
Массив символов string() и класс String()
Любой символ является переменной типа char, которая хранит в себе код этого
символа, согласно таблице символов. отдельные символы вогут соединяться в строки,
для работы с которыми есть два набора инструментов: обычные строки (массивы
символов) и String-строки. Обратите внимание при обращение к классу String -
он пишется с заглавной S. Массив символов string - с прописной s.
Массив символов - это просто массив данных типа char. Любой текст, заключенный
в "двойные кавычки" воспринимается программой как массив символов, а размер
строки должен быть известен заранее.
String-строка - это динамический массив, размер которого указывать не нужно,
более того, размер может меняться в процессе работы программы. Класс String
появился в версии Arduino 0019 и это довольно мощный инструмент работы со
строками, такие как поиск вхождения в строку, объединение строк и др.
Но это и очень "тяжелый" инструмент для контроллера, занимающий достаточно
большой объем памяти, поэтому очень аккуратно надо работать с этим инструментом,
особенно, если проект достаточно большой.