Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/DigitalReadSerial

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2202 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.

Считывание последовательной передачи данных через цифровой контакт [1]

Данный пример показывает, как отслеживать состояние переключателя путем установления последовательной передачи данных между платой Arduino и вашим компьютером через USB.

Необходимое оборудование

  • Плата Arduino;
  • Переключатель мгновенного действия, кнопка или тумблер;
  • Резистор номиналом 10 кОм;
  • Макетная плата Breadboard;
  • Соединительные провода;

Цепь

DigitalReadSerial circuit.png

Подключите к Arduino три провода. Первые два (красный и черный) подключите к двум вертикальным рядам на правой стороне Breadboard – для доступа к контактам с 5-вольтным напряжением и «землей». Третий провод пойдет от 2-го цифрового контакта к одной из ног кнопки. Ту же ногу кнопки подключите к «земле», но через стягивающий резистор (в данном примере – на 10 кОм). Другую ногу кнопки подсоедините к контакту с 5-вольтовым напряжением.

Если нажать на кнопку (или щелкнуть тумблер), то она соединит две точки цепи (контакт с 5-вольтовым напряжением и 2-ой цифровой контакт). Однако, если на нее не нажимать, связи между двумя ногами кнопки не будет, поэтому контакт останется подсоединенным к «земле» (через стягивающий резистор) и будет считываться как LOW или «0». Но если на кнопку все же нажать, то связь между ногами появится, соединяя цифровой контакт с 5-вольтовым напряжением, что будет считываться как HIGH или «1».

Если отсоединить цифровой контакт ото всего, то светодиод (если подключить его к цепи), скорее всего, начнет беспорядочно мигать. Это потому что цифровой вход будет находиться в «подвешенном» состоянии», т.е. не иметь жесткой связи ни с 5-вольтовым напряжением, ни с «землей», и потому вразнобой переключаться то в LOW, то в HIGH. Именно поэтому в цепь и ставится стягивающий резистор.

Схема

DigitalReadSerial schematic.png

Код

Самая первая вещь, которую нужно сделать – это при помощи функции setup() начать последовательную передачу данных (со скоростью 9600 бит в секунду) между Arduino и вашим компьютером. Делается это при помощи строчки:

Serial.begin(9600);

Далее нужно инициализировать 2-ой цифровой контакт (который будет считывать выходные данные от кнопки) как вход:

pinMode(2,INPUT);

Теперь, когда начальные параметры заданы, перемещаемся к главному циклу. Если кнопка будет нажата, 5 Вольт будут свободно проходить через вашу цепь, а если нет, входной контакт через стягивающий резистор соединится с «землей». Это цифровой контакт, поэтому кнопка может быть лишь в одном из двух состояний – любо во включенном (Arduino будет считывать его как «1» или HIGH), либо в выключенном (Arduino будет считывать его как «0» или LOW), и никак иначе. Самая первая вещь, которую нужно сделать в секции главного цикла – это задать переменную для регистрации информации, идущей от кнопки. А поскольку информация, идущая от кнопки, будет лишь или «1», или «0», вы можете использовать тип данных int. Назовем эту переменную sensorValue и присвоим ей значение, считанное со 2-го цифрового контакта. Сделаем это при помощи этой строчки кода:

int sensorValue = digitalRead(2);

Теперь настроим запись этой информации на компьютер в десятичном значении. Это можно сделать с помощью команды Serial.printIn() в последней строчке кода:

Serial.println(sensorValue);

Теперь, открыв меню «Мониторинг последовательной передачи данных» (Serial Monitor) в среде разработки Arduino, вы увидите информационный поток из «0» (если кнопка не была нажатой) и «1» (если на кнопку нажимали).

  1. /*
  2.  Считывание последовательной передачи данных через цифровой контакт.
  3.  Считывает данные на 2-ом цифровом входном контакте, передает эти данные на Serial Monitor.
  4.  
  5.  Данный пример кода не защищен авторским правом.
  6.  */
  7.  
  8. // ко 2-му цифровому контакту подсоединена кнопка, дадим ей имя:
  9. int pushButton = 2;
  10.  
  11. // эта функция запускается один раз – при рестарте:
  12. void setup() {
  13.   // инициализируем последовательную передачу данных со скоростью 9600 бит в секунду:
  14.   Serial.begin(9600);
  15.   // делаем контакт, к которому подсоединена кнопка, входным:
  16.   pinMode(pushButton, INPUT);
  17. }
  18.  
  19. // этот цикл, запустившись, будет повторятся снова и снова:
  20. void loop() {
  21.   // считываем данные с входного контакта:
  22.   int buttonState = digitalRead(pushButton);
  23.   // регистрируем состояние кнопки:
  24.   Serial.println(buttonState);
  25.   delay(1);        // задержка между считываниям – для стабильности программы
  26. }

См.также

  1. setup()‎
  2. loop()
  3. pinMode()
  4. digitalRead()
  5. delay()
  6. int
  7. Serial
  8. DigitalPins
  9. BareMinimum
  10. Blink
  11. DigitalReadSerial
  12. AnalogReadSerial
  13. Fade
  14. ReadAnalogVoltage

Внешние ссылки

  1. Arduino - DigitalReadSerial