Arduino:Примеры/DigitalReadSerial: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 19 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Arduino панель перехода}}
{{Arduino панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}


== Считывание последовательной передачи данных через цифровой контакт <ref>[http://www.arduino.cc/en/Tutorial/DigitalReadSerial Arduino - DigitalReadSerial]</ref>==
=Считывание последовательной передачи данных через цифровой контакт <ref>[http://www.arduino.cc/en/Tutorial/DigitalReadSerial Arduino - DigitalReadSerial]</ref>=


Данный пример показывает, как отслеживать состояние переключателя путем установления последовательной передачи данных между платой [[Arduino]] и вашим [[компьютер]]ом через [[USB]].
Данный пример показывает, как отслеживать состояние переключателя путем установления последовательной передачи данных между платой [[Arduino]] и вашим [[компьютер]]ом через [[USB]].
Строка 10: Строка 9:
== Необходимое оборудование ==
== Необходимое оборудование ==


* Плата '''Arduino''';
* [[Arduino:Продукты/Продукты Arduino|Плата Arduino]] - 1 шт.
* Переключатель мгновенного действия, кнопка или тумблер;
* [[Переключатель мгновенного действия]], [[кнопка]] или [[тумблер]] - 1шт.
* Резистор номиналом '''10 кОм''';
* [[Резистор]] [[10 кОм]] - 1шт.
* Макетная плата '''Breadboard''';
* [[Макетная плата]]([[Breadboard]]) - 1шт.
* Соединительные провода;
* Соединительные провода - 7шт.


== Цепь ==
== Цепь ==


[[File:DigitalReadSerial_circuit.png]]
[[File:DigitalReadSerial_circuit.png|center|frame|'''Рис. 1.''' Плата [[Arduino Diecimila]] с подключенной кнопкой.|alt=Рис. 1. Плата Arduino Diecimila с подключенной кнопкой.]]


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


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


Если отсоединить цифровой контакт ото всего, то [[светодиод]] (если подключить его к цепи), скорее всего, начнет беспорядочно мигать. Это потому что цифровой вход будет находиться в '''«подвешенном» состоянии»''', т.е. не иметь жесткой связи ни с '''5-вольтовым напряжением''', ни с '''«землей»''', и потому вразнобой переключаться то в [[Arduino:Справочник языка Arduino/Константы/LOW|LOW]], то в [[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]]. Именно поэтому в цепь и ставится стягивающий [[резистор]].
Если отсоединить цифровой контакт ото всего, то [[светодиод]] (если подключить его к цепи), скорее всего, начнет беспорядочно мигать. Это потому что цифровой вход будет находиться в '''«подвешенном» состоянии»''', т.е. не иметь жесткой связи ни с '''5-вольтовым напряжением''', ни с '''«землей»''', и потому вразнобой переключаться то в [[Arduino:Справочник языка Arduino/Константы/LOW|LOW]], то в [[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]]. Именно поэтому в цепь и ставится стягивающий [[резистор]].
Строка 28: Строка 27:
== Схема ==
== Схема ==


[[File:DigitalReadSerial_schematic.png|center]]
[[File:DigitalReadSerial_schematic.png|center|frame|'''Рис. 2.''' Схема подключения к плате кнопки.|alt=Рис. 2. Схема подключения к плате кнопки.]]


== Код ==
== Код ==
Строка 34: Строка 33:
Самая первая вещь, которую нужно сделать – это при помощи функции [[Arduino:Справочник языка Arduino/setup()‎|setup()]] начать последовательную передачу данных (со скоростью '''9600 бит в секунду''') между [[Arduino]] и вашим [[компьютер]]ом. Делается это при помощи строчки:
Самая первая вещь, которую нужно сделать – это при помощи функции [[Arduino:Справочник языка Arduino/setup()‎|setup()]] начать последовательную передачу данных (со скоростью '''9600 бит в секунду''') между [[Arduino]] и вашим [[компьютер]]ом. Делается это при помощи строчки:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Serial.begin(9600);
Serial.begin(9600);
</syntaxhighlight>
</syntaxhighlight>
Строка 40: Строка 39:
Далее нужно инициализировать '''2-ой цифровой контакт''' (который будет считывать выходные данные от кнопки) как вход:  
Далее нужно инициализировать '''2-ой цифровой контакт''' (который будет считывать выходные данные от кнопки) как вход:  


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
pinMode(2,INPUT);
pinMode(2,INPUT);
</syntaxhighlight>
</syntaxhighlight>
Строка 47: Строка 46:
Самая первая вещь, которую нужно сделать в секции главного цикла – это задать переменную для регистрации информации, идущей от кнопки. А поскольку информация, идущая от кнопки, будет лишь или '''«1»''', или '''«0»''', вы можете использовать тип данных [[Arduino:Справочник языка Arduino/Типы данных/int|int]]. Назовем эту переменную '''sensorValue''' и присвоим ей значение, считанное со '''2-го цифрового контакта'''. Сделаем это при помощи этой строчки кода:
Самая первая вещь, которую нужно сделать в секции главного цикла – это задать переменную для регистрации информации, идущей от кнопки. А поскольку информация, идущая от кнопки, будет лишь или '''«1»''', или '''«0»''', вы можете использовать тип данных [[Arduino:Справочник языка Arduino/Типы данных/int|int]]. Назовем эту переменную '''sensorValue''' и присвоим ей значение, считанное со '''2-го цифрового контакта'''. Сделаем это при помощи этой строчки кода:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
int sensorValue = digitalRead(2);
int sensorValue = digitalRead(2);
</syntaxhighlight>
</syntaxhighlight>


Теперь настроим запись этой информации на компьютер в десятичном значении. Это можно сделать с помощью команды [[Arduino:Справочник языка Arduino/Функции/Функции передачи данных/Serial/println()|Serial.printIn()]] в последней строчке кода:
Теперь настроим запись этой информации на [[компьютер]] в десятичном значении. Это можно сделать с помощью команды [[Arduino:Справочник языка Arduino/Функции/Функции передачи данных/Serial/println()|Serial.printIn()]] в последней строчке кода:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Serial.println(sensorValue);
Serial.println(sensorValue);
</syntaxhighlight>
</syntaxhighlight>
Строка 59: Строка 58:
Теперь, открыв меню '''«Мониторинг последовательной передачи данных» (Serial Monitor)''' в среде разработки [[Arduino]], вы увидите информационный поток из '''«0»''' (если кнопка не была нажатой) и '''«1»''' (если на кнопку нажимали).
Теперь, открыв меню '''«Мониторинг последовательной передачи данных» (Serial Monitor)''' в среде разработки [[Arduino]], вы увидите информационный поток из '''«0»''' (если кнопка не была нажатой) и '''«1»''' (если на кнопку нажимали).


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
  Считывание последовательной передачи данных через цифровой контакт.
  Считывание последовательной передачи данных через цифровой контакт.
Строка 88: Строка 87:
</syntaxhighlight>
</syntaxhighlight>


==См.также==
=См.также=


# [[Arduino:Справочник языка Arduino/setup()‎|setup()‎]]
# [[Arduino:Справочник языка Arduino/setup()‎|setup()‎]]
Строка 105: Строка 104:
# [[Arduino:Примеры/ReadAnalogVoltage|ReadAnalogVoltage]]
# [[Arduino:Примеры/ReadAnalogVoltage|ReadAnalogVoltage]]


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


<references />
<references />


{{Навигационная таблица/Справочник языка Arduino}}
{{Навигационная таблица/Портал/Arduino}}
{{Навигационная таблица/Arduino библиотеки}}


[[Категория:Пример]]
[[Категория:Пример]]
Строка 116: Строка 114:
[[Категория:Пример программирования Arduino]]
[[Категория:Пример программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:setup()]]
[[Категория:setup]]
[[Категория:loop]]
[[Категория:loop()]]
[[Категория:Serial.begin(9600)]]
[[Категория:Serial.begin]]
[[Категория:Serial.begin()]]
[[Категория:Serial]]
[[Категория:begin(9600)]]
[[Категория:begin]]
[[Категория:begin()]]
[[Категория:digitalRead()]]
[[Категория:digitalRead]]
[[Категория:delay()]]
[[Категория:delay(1)]]
[[Категория:delay]]
[[Категория:digitalRead()]]
[[Категория:digitalRead]]

Текущая версия от 18:26, 2 сентября 2023

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


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

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

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

Цепь

Рис. 1. Плата Arduino Diecimila с подключенной кнопкой.
Рис. 1. Плата Arduino Diecimila с подключенной кнопкой.

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

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

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

Схема

Рис. 2. Схема подключения к плате кнопки.
Рис. 2. Схема подключения к плате кнопки.

Код

Самая первая вещь, которую нужно сделать – это при помощи функции 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» (если на кнопку нажимали).

/*
 Считывание последовательной передачи данных через цифровой контакт.
 Считывает данные на 2-ом цифровом входном контакте, передает эти данные на Serial Monitor.
 
 Данный пример кода не защищен авторским правом.
 */

// ко 2-му цифровому контакту подсоединена кнопка, дадим ей имя:
int pushButton = 2;

// эта функция запускается один раз – при рестарте:
void setup() {
  // инициализируем последовательную передачу данных со скоростью 9600 бит в секунду:
  Serial.begin(9600);
  // делаем контакт, к которому подсоединена кнопка, входным: 
  pinMode(pushButton, INPUT);
}

// этот цикл, запустившись, будет повторятся снова и снова:
void loop() {
  // считываем данные с входного контакта:
  int buttonState = digitalRead(pushButton);
  // регистрируем состояние кнопки:
  Serial.println(buttonState);
  delay(1);        // задержка между считываниям – для стабильности программы
}

См.также

  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

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