Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Sb99180

.pdf
Скачиваний:
25
Добавлен:
13.02.2021
Размер:
982.06 Кб
Скачать

Во время загрузки в нижней части окна IDE появятся ползунок загрузки и сообщения. Вначале появляется слово «Компилирование» («Compiling scetch…»), что означает процесс конвертирования скетча в формат, подходящий для загрузки на плату. Далее статус сменится на «Загрузка» («Uploading»), в этот момент светодиоды на плате замигают, так как начнется перенос скетча в микропроцессор платы. В конце статус сменится на «Загрузка завершена» («Done uploading»). В сообщении, которое появится в текстовой строке, отобразится информация о том, что загруженный скетч занимает 1084 байта из 32256 доступных. Если загрузка прошла корректно, то плата Arduino перезагрузится и светодиод «L» начнет мигать, как показано на рис. 2.2.

Рис. 2.2. Расположение L-светодиода

Ниже приведен текст программы «Blink».

/* Blink

Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain. */

//Pin 13 has an LED connected on most Arduino boards.

//give it a name:

11

int led = 13;

//the setup routine runs once when you press reset: void setup() {

//initialize the digital pin as an output. pinMode(led, OUTPUT);

}

//the loop routine runs over and over again forever: void loop() {

digitalWrite(led, HIGH); // turn the LED on (HIGH is the

voltage level)

delay(1000); // wait for a second

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

Первое, на что стоит обратить внимание в данном скетче, это множество комментариев. Комментарии не являются инструкцией по работе программы! Это исключительно пояснения отдельных функций и задач, которые выполняются на определенном этапе кода. Это необязательная часть кода. Весь текст между символами /* и */ в верхней части скетча – это комментарии, в которых описаны задачи программы. Также есть комментарии, которые ограничиваются одной строкой. Они начинаются с символов // и заканчиваются по умолчанию в конце строки.

Первая важная часть этого кода – это строка: int led = 13;

В комментариях над строкой указано, что мы присваиваем имя пину, к которому подключен светодиод. На большинстве плат это будет 13 пин. Далее используется функция setup. Опять-таки в комментариях указано, что функция срабатывает после нажатия кнопки «reset». Также эта функция срабатывает, когда плата перезагрузится по каким-либо другим причинам, например, при подаче питания или после загрузки скетча.

//the setup routine runs once when you press reset: void setup() {

//initialize the digital pin as an output. pinMode(led, OUTPUT);}

Каждый скетч Arduino, как уже было сказано ранее, обязательно включает в себя функцию setup и часть, в которую можно добавлять собственные инструкции, заключенные между фигурными скобками { }. В нашем примере в функции присутствует только одна команда, и в ней

12

указано, что пин, который мы используем, настраивается на «Вывод»

(«Output»).

Также обязательным для любого скетча является функция цикла loop. В отличие от функции setup, которая отрабатывает один раз после перезагрузки, функция loop после окончания работы команд вновь запустится.

// the loop routine runs over and over again forever: void loop() {

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

В теле функции loop светодиод включается (HIGH), данное значение задерживается на 1000 мс (1 с), светодиод отключается (LOW) и остается выключенным на 1 с, после чего цикл повторится.

Для того чтобы обеспечить более частое мигание светодиода, необходимо изменить параметр, указываемый в скобках ( ) в команде delay (рис. 2.3).

Рис. 2.3. Задание частоты мигания светодиода

Период задержки указывается в миллисекундах; для того, чтобы заставить светодиод мигать в два раза чаще, необходимо изменить значение с 1000 на 500. В результате пауза между включением и выключением светодиода составит половину секунды и светодиод будет мигать быстрее.

Для проверки не забудьте загрузить измененный скетч на плату Arduino.

13

2.2.Предварительная подготовка к работе

1.Ознакомиться с комплектующими, представленными в выданном варианте лабораторной работы.

2.Взять у преподавателя набор проводов, необходимых для подключения комплектующих к микроконтроллеру.

2.3.Порядок выполнения работы

1.Загрузить среду разработки Arduino IDE на свой персональный компьютер или использовать компьютер, имеющийся в лаборатории.

2.Подключить плату Arduino UNO к ПК, открыть среду разработки Arduino IDE и в разделе «Инструменты» -> «Порт» выбрать нужный порт, к которому подключена плата.

3.В зависимости от номера варианта задания с помощью проводов подключить один из датчиков к плате Arduino UNO.

4.Скомпилировать код (скетч) для датчика, отрабатывающий его возможности (примеры скетчей для каждого из датчиков представлены далее, после таблицы). Выводить в консоль («Инструменты» -> «Монитор порта») информацию, описывающую действия, производимые с датчиком.

5.Реализовать взаимодействие датчика и светодиода (датчика и звукового излучателя), исходя из их функционала варианта работы. Например, в варианте 3 можно осуществить мигание светодиода определенным цветом при нажатии на кнопку.

Варианты заданий приведены в таблице.

Датчик

 

Вариант

 

1

2

3

4

 

 

 

 

 

 

Датчик с пассивным звуковым излучателем (KY-006)

+

 

 

 

 

 

 

 

 

 

 

 

 

Светодиодный модуль (KY-016)

+

 

 

 

 

 

 

 

 

Джойстик (KY-023)

 

+

 

 

 

 

 

 

 

Датчик с переключателем (KY-021)

 

+

 

 

 

 

 

 

 

 

 

 

 

Датчик с кнопкой (KY-004)

 

 

+

 

 

 

 

 

 

 

 

 

 

Светодиодный модуль RGB (KY-009)

 

 

+

 

 

 

 

 

 

Датчик вибраций (KY-002)

 

 

 

+

 

 

 

 

 

Датчик с двухцветным светодиодом (KY-011)

 

 

 

+

 

 

 

 

 

14

 

 

 

 

KY-006 Датчик с пассивным звуковым излучателем

Пример кода микропрограммы (скетч) для KY-006 и Arduino UNO: int buzzer = 10;

void setup ()

{

pinMode (buzzer, OUTPUT);

}

void loop ()

{

unsigned char i; while (1)

{

for (i = 0; i <80; i++) // генерируем звук(1 КГц),

частота задается задержками

{

digitalWrite (buzzer, HIGH); // Звук есть delay (1) ;// 1ms

digitalWrite (buzzer, LOW); // Звука нет delay (1); //1 ms

}

}

}

15

KY-016 Светодиодный модуль

KY-016

Arduino

R

Pin 11

B

Pin 10

G

Pin 9

GND

Пример кода микропрограммы (скетч) для KY-016 и Arduino UNO: int redpin = 11; // select the pin for the red LED

int bluepin =10; // select the pin for the blue LED int greenpin =9; // select the pin for the green LED

int val;

void setup() { pinMode(redpin, OUTPUT); pinMode(bluepin, OUTPUT); pinMode(greenpin, OUTPUT); Serial.begin(9600);

}

void loop() {

for(val = 255; val > 0; val--)

{

analogWrite(11, val); analogWrite(10, 255 - val); analogWrite(9, 128 - val);

16

Serial.println(val, DEC); delay(5);

}

for(val = 0; val < 255; val++)

{

analogWrite(11, val); analogWrite(10, 255 - val); analogWrite(9, 128 - val);

Serial.println(val, DEC); delay(5);

}

}

KY-023 Джойстик

KY-023

Arduino

GND

GND

+5V

5V

VRx

A0

VRy

A1

SW

7

Пример кода микропрограммы (скетч) для KY-023 и Arduino UNO: int value = 0;

void setup() {

//pinMode(A0, INPUT); //pinMode(A1, INPUT);

17

pinMode(7, INPUT); Serial.begin(9600);

}

void loop() {

value = analogRead(A0); // read X axis value [0..1023]

Serial.print("X:"); Serial.print(value, DEC);

value = analogRead(A1); // read Y axis value [0..1023]

Serial.print(" | Y:"); Serial.print(value, DEC);

value = digitalRead(7); // read Button state [0,1]

Serial.print(" | Button:");

Serial.println(value, DEC); delay(100);

}

KY-021 Датчик с переключателем

KY-021

Arduino

S

2

middle

+5V

GND

Пример кода микропрограммы (скетч) для KY-021 и Arduino UNO: int led = 13; // LED pin

int reelSwitch = 2; // magnetic sensor pin

int switchState; // variable to store reel switch value void setup()

{

pinMode (led, OUTPUT);

18

pinMode (reelSwitch, INPUT);

}

void loop()

{

switchState = digitalRead(reelSwitch); // read the value of digital interface 2 and assign it to switchState

if (switchState == HIGH) // when the magnetic sensor detect a signal, LED is flashing

{

digitalWrite(led, HIGH);

}

else

{

digitalWrite(led, LOW);

}

}

KY-004 Датчик с кнопкой

KY-004

Arduino

S

Pin 3

middle

+5V

GND

Пример кода микропрограммы (скетч) для KY-004 и Arduino UNO: int led = 13; //Define the LED pin

int buttonpin = 3; //Define the push button pin int val; //Define a numeric variable

void setup()

{

19

pinMode(led,OUTPUT);

pinMode(buttonpin,INPUT);

}

void loop()

{

val = digitalRead(buttonpin); // check the state of the button

if(val==HIGH) // if button is pressed, turn LED on

{

digitalWrite(led,HIGH);

}

else

{

digitalWrite(led,LOW);

}

}

KY-009 Светодиодный модуль RGB

KY-009

Breadboard

Arduino

 

 

Pin 9

R

180Ω resistor

 

 

Pin 10

G

110Ω resistor

 

 

Pin 11

B

110Ω resistor

 

 

GND

GND

Пример кода микропрограммы (скетч) для KY-009 и Arduino UNO: int redpin = 11; //select the pin for the red LED

int bluepin =10; // select the pin for the blue LED int greenpin = 9; // select the pin for the green LED

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]