Методические указания проведения лабораторных работ по программированию микроконтроллеров на Arduino-совместимой платформе PIC32 ChipKIT Uno32.
Составители: Автомобильный Институт (АМИ), Нижегородский государственный технический университет им Р.Е. Алексеева.
Робототехника в школьном образовании - Robotics Expo
Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino
1. Методические указания проведения лабораторных
работ по программированию микроконтроллеров на Arduino-совместимой
платформе PIC32 ChipKIT Uno32
Составители: Кафедра АМИ,
НГТУ им Алексеева.
2. Введение
Язык программирования устройств Ардуино основан на C/C++. Он прост в
освоении, и на данный момент Arduino — это, пожалуй, самый удобный способ
программирования устройств на микроконтроллерах. Микроконтроллерные
платы ChipKIT Uno32 с процессором PIC32 полностью совместимы с
платформой Arduino, при этом являются более производительными, чем
оригинальные платы Arduino.
Язык Arduino можно разделить на три раздела:
Операторы
setup()
loop()
Управляющие операторы
if
if...else
for
switch case
while
do... while
break
continue
return
goto
Синтаксис
; (semicolon)
{} (curly braces)
// (single line comment)
/* */ (multi-line
comment)
Арифметические операторы
= (assignment)
+ (addition)
- (subtraction)
* (multiplication)
/ (division)
% (modulo)
Операторы сравнения
== (equal to)
!= (not equal to)
Данные
Константы
HIGH | LOW
INPUT | OUTPUT
true | false
Целочисленные
константы
Константы с
плавающей запятой
Типы данных
boolean
char
byte
int
unsigned int
word
long
unsigned long
float
double
string - массив
символов
String - объект класса
массив (array)
void
Преобразование типов
данных
char()
byte()
int()
long()
float()
Функции
Цифровой ввод/вывод
pinMode()
digitalWrite()
digitalRead()
Аналоговый ввод/вывод
analogRead()
analogReference()
analogWrite()
Дополнительные фунции
ввода/вывода
tone()
noTone()
shiftOut()
pulseIn()
Работа со временем
millis()
micros()
delay()
delayMicroseconds()
Математические функции
min()
max()
abs()
constrain()
map()
pow()
sq()
3. < (less than)
> (greater than)
<= (less than or equal to)
>= (greater than or equal
to)
Логические операторы
&& (И)
|| (ИЛИ)
! (Отрицание)
Унарные операторы
++ (increment)
-- (decrement)
+= (compound addition)
-= (compound
subtraction)
*= (compound
multiplication)
/= (compound division)
Область видимости
переменных и
квалификаторы
Область видимости
static
volatile
const
sqrt()
Тригонометрические
функции
sin()
cos()
tan()
Генераторы случайных
значений
randomSeed()
random()
Внешние прерывания
attachInterrupt()
detachInterrupt()
Функции передачи данных
Serial
Библиотеки Arduino
Servo — библиотека управления сервоприводами.
EERPOM — чтение и запись энергонезависимой памяти микроконтроллера.
SPI — библиотека, реализующая передачу данных через интерфейс SPI.
Stepper — библиотека управления шаговыми двигателями.
7. Лабораторная работа №2
«Работа светодиодного индикатора светового датчика»
Цель работы: Написать программу, позволяющую прерывисто светиться диоду.
Задача : При срабатывании датчика света от него подается сигнал на
платформу и посредством программы должен загораться диод.
Ход работы.
1)Устанавливаем диод на платформу пинов.
Рисунок 3 – расположение диода на платформе пинов
2) Подключение датчика света к платформе PIC32 ChipKIT (рисунок 3).
Рисунок 4 – Датчик света
8. Рисунок 5 – Подключение диода и датчика света
3) Написание программы
4) Загрузка программы в память платформы PIC32 ChipKIT
9. Рисунок 6 – Процесс загрузки программы
Рисунок 7 – Успешная загрузка программы
10. 5) Проверка работоспособности системы
Результатом правильной работы системы будет являться загорание
светодиода при отсутствии попадания света на датчик.
а) б)
Рисунок 8 – Проверка работы системы: (а) – свет попадает на датчик; (б) –
свет не попадает на датчик.
11. Лабораторная работа №3
«Работа электромотора с двумя светодиодными индикаторами и
светодатчиком»
Цель работы: Написать программу, позволяющую идентифицировать работу
электромотора светодиодами.
Задача: При выключенном электромоторе горит светодиод красного цвета. При
срабатывании электромотора, красный светодиод гаснет и загорается зеленый
светодиод. Электромотор включается при срабатывании датчика света.
Ход работы.
1) Собираем электрическую цепь.
а) Подключаем SIG датчика света к Pin3, VСC датчика света к Pin 5V0,
GND датчика света к «-» на платформе пинов.
б)Устанавливаем зеленый диод на платформу пинов «-» к «-», «+» к «+».
в)Подключаем «-» платформы пинов на GND платформы Arduino. «+»
платформы пинов к Pin 2 Arduino.
г)Устанавливаем красный диод «-» к «-», а «+» подходит к Pin1 платформы
Arduino.
г)Подключаем электромотор. «+» подходит к плюсу зеленого светодиода, а
«-» подходит к общему минусу на платформе пинов.
Рисунок 9 – готовая электрическая цепь
2) Текст программы:
12. void setup() {
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, INPUT);
}
void loop() {
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
int val=digitalRead(3);
if (val==1) {
digitalWrite(2, LOW);
digitalWrite(1, HIGH);
delay(100);
}
}
3) Загружаем программу и выполняем проверку :
13. Рисунок 10 – На световой датчик попадает свет и электромотор не работает
14. При срабатывании датчика загорается зеленый диод и электромотор
начинает вращаться.
Рисунок 11 – Загорается зеленый диод и начинает работу электромотор
15. Лабораторная работа №4
«Цифровое табло»
Цель работы: Написать программу, позволяющую отобразить цифровой ряд
от 0 до 9.
Задача: Собрать электрическую цепь и написать программу включающую
определенные сегменты цифрового табло, образующие ту или иную цифру
Ход работы.
1) Устанавливаем цифровое табло на платформу пинов.
Рисунок 12 – цифровое табло на платформе
2) Подключаем «-»цифрового табло к выходу GND платы ChipKIT
3) Остальные 8 пинов, отвечающие за соответствующие сегменты, подключаем
к свободным пинам платы (1→Pin5, 2→Pin7,3→Pin1, 4→Pin8, 5→Pin6,
6→Pin4, 7→Pin3, 8→Pin2,)