Sb99180
.pdf
Во время загрузки в нижней части окна 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
