20
Методические указания проведения лабораторных работ по программированию микроконтроллеров на Arduino-совместимой платформе PIC32 ChipKIT Uno32 Составители: Кафедра АМИ, НГТУ им Алексеева.

Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Embed Size (px)

DESCRIPTION

Методические указания проведения лабораторных работ по программированию микроконтроллеров на Arduino-совместимой платформе PIC32 ChipKIT Uno32. Составители: Автомобильный Институт (АМИ), Нижегородский государственный технический университет им Р.Е. Алексеева.

Citation preview

Page 1: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Методические указания проведения лабораторных

работ по программированию микроконтроллеров на Arduino-совместимойплатформе PIC32 ChipKIT Uno32

Составители: Кафедра АМИ,

НГТУ им Алексеева.

Page 2: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Введение

Язык программирования устройств Ардуино основан на 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 | LOWINPUT | OUTPUTtrue | 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 ()

Page 3: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

< (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 — библиотека управления шаговыми двигателями.

Page 4: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Интерфейс среды программирования

Page 5: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Лабораторная работа №1

«Работа светодиодного индикатора»

Цель работы: Написать программу, позволяющую прерывисто светиться диоду.

Задача: Собрать электрическую схему диода с платформой.

Ход работы.

1) Устанавливаем светодиод на контакторную платформу

Рисунок 1 – Расположение светодиода на контакторной платформе

2) Подключение проводов к пинам платы PIC32 ChipKIT.

Рисунок 2 – сосединение электрической схемы

Строка состояния

Page 6: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

3) Загрузка текста программы

void setup() {

pinMode(1, OUTPUT);

}

void loop() {

digitalWrite(1, HIGH);

delay(2000);

digitalWrite(1, LOW);

delay(2000);

}

Page 7: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Лабораторная работа №2

«Работа светодиодного индикатора светового датчика»

Цель работы: Написать программу, позволяющую прерывисто светиться диоду.

Задача : При срабатывании датчика света от него подается сигнал на платформу и посредством программы должен загораться диод.

Ход работы.

1)Устанавливаем диод на платформу пинов.

Рисунок 3 – расположение диода на платформе пинов

2) Подключение датчика света к платформе PIC32 ChipKIT (рисунок 3).

Рисунок 4 – Датчик света

Page 8: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Рисунок 5 – Подключение диода и датчика света

3) Написание программы

4) Загрузка программы в память платформы PIC32 ChipKIT

Page 9: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Рисунок 6 – Процесс загрузки программы

Рисунок 7 – Успешная загрузка программы

Page 10: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

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

а) б)Рисунок 8 – Проверка работы системы: (а) – свет попадает на датчик; (б) –

свет не попадает на датчик.

Page 11: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Лабораторная работа №3

«Работа электромотора с двумя светодиодными индикаторами исветодатчиком»

Цель работы: Написать программу, позволяющую идентифицировать работуэлектромотора светодиодами.

Задача: При выключенном электромоторе горит светодиод красного цвета. Присрабатывании электромотора, красный светодиод гаснет и загорается зеленыйсветодиод. Электромотор включается при срабатывании датчика света.

Ход работы.

1) Собираем электрическую цепь.а) Подключаем SIG датчика света к Pin3, VСC датчика света к Pin 5V0, GND датчика света к «-» на платформе пинов.б)Устанавливаем зеленый диод на платформу пинов «-» к «-», «+» к «+».в)Подключаем «-» платформы пинов на GND платформы Arduino. «+» платформы пинов к Pin 2 Arduino.г)Устанавливаем красный диод «-» к «-», а «+» подходит к Pin1 платформы Arduino.г)Подключаем электромотор. «+» подходит к плюсу зеленого светодиода, а «-» подходит к общему минусу на платформе пинов.

Рисунок 9 – готовая электрическая цепь2) Текст программы:

Page 12: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

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) Загружаем программу и выполняем проверку :

Page 13: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Рисунок 10 – На световой датчик попадает свет и электромотор не работает

Page 14: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

При срабатывании датчика загорается зеленый диод и электромоторначинает вращаться.

Рисунок 11 – Загорается зеленый диод и начинает работу электромотор

Page 15: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Лабораторная работа №4

«Цифровое табло»

Цель работы: Написать программу, позволяющую отобразить цифровой рядот 0 до 9.

Задача: Собрать электрическую цепь и написать программу включающуюопределенные сегменты цифрового табло, образующие ту или иную цифру

Ход работы.

1) Устанавливаем цифровое табло на платформу пинов.

Рисунок 12 – цифровое табло на платформе2) Подключаем «-»цифрового табло к выходу GND платы ChipKIT3) Остальные 8 пинов, отвечающие за соответствующие сегменты, подключаем

к свободным пинам платы (1→Pin5, 2→Pin7,3→Pin1, 4→Pin8, 5→Pin6, 6→Pin4, 7→Pin3, 8→Pin2,)

Page 16: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

Рисунок 13 – Электрическая цепь в сборе

4) Текст программы

void setup() {

pinMode(1, OUTPUT);

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop() {

digitalWrite(1, LOW);

Page 17: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

digitalWrite(2, LOW);

digitalWrite(3, HIGH);

digitalWrite(4, HIGH);

digitalWrite(5, HIGH);

digitalWrite(6, HIGH);

digitalWrite(7, HIGH);

digitalWrite(8, LOW);

delay(1000);

digitalWrite(1, HIGH);

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, HIGH);

digitalWrite(5, LOW);

digitalWrite(6, LOW);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

delay(1000);

digitalWrite(1, LOW);

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, HIGH);

digitalWrite(5, HIGH);

digitalWrite(6, LOW);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

Page 18: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

delay(1000);

digitalWrite(1, LOW);

digitalWrite(2, LOW);

digitalWrite(3, HIGH);

digitalWrite(4, LOW);

digitalWrite(5, HIGH);

digitalWrite(6, LOW);

digitalWrite(7, HIGH);

digitalWrite(8, LOW);

delay(1000);

digitalWrite(1, LOW);

digitalWrite(2, HIGH);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

digitalWrite(5, HIGH);

digitalWrite(6, LOW);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

delay(1000);

digitalWrite(1, LOW);

digitalWrite(2, HIGH);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

digitalWrite(5, LOW);

digitalWrite(6, LOW);

Page 19: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

digitalWrite(7, LOW);

digitalWrite(8, LOW);

delay(1000);

digitalWrite(1, LOW);

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, HIGH);

digitalWrite(5, HIGH);

digitalWrite(6, HIGH);

digitalWrite(7, HIGH);

digitalWrite(8, LOW);

delay(1000);

digitalWrite(1, LOW);

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

digitalWrite(5, LOW);

digitalWrite(6, LOW);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

delay(1000);

digitalWrite(1, LOW);

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

Page 20: Лабораторная работа по программирования pic32 ChipKIT Uno32 в среде Arduino

digitalWrite(5, HIGH);

digitalWrite(6, LOW);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

delay(1000);

digitalWrite(1, LOW);

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

digitalWrite(5, LOW);

digitalWrite(6, HIGH);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

delay(1000);

}