Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,397 views

Published on

Методические указания проведения лабораторных работ по программированию микроконтроллеров на Arduino-совместимой платформе PIC32 ChipKIT Uno32.

Составители: Автомобильный Институт (АМИ), Нижегородский государственный технический университет им Р.Е. Алексеева.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Методические указания проведения лабораторных работ по программированию микроконтроллеров на Arduino-совместимой платформе PIC32 ChipKIT Uno32 Составители: Кафедра АМИ, НГТУ им Алексеева.
  2. 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. 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 — библиотека управления шаговыми двигателями.
  4. 4. Интерфейс среды программирования
  5. 5. Лабораторная работа №1 «Работа светодиодного индикатора» Цель работы: Написать программу, позволяющую прерывисто светиться диоду. Задача: Собрать электрическую схему диода с платформой. Ход работы. 1) Устанавливаем светодиод на контакторную платформу Рисунок 1 – Расположение светодиода на контакторной платформе 2) Подключение проводов к пинам платы PIC32 ChipKIT. Рисунок 2 – сосединение электрической схемы Строка состояния
  6. 6. 3) Загрузка текста программы void setup() { pinMode(1, OUTPUT); } void loop() { digitalWrite(1, HIGH); delay(2000); digitalWrite(1, LOW); delay(2000); }
  7. 7. Лабораторная работа №2 «Работа светодиодного индикатора светового датчика» Цель работы: Написать программу, позволяющую прерывисто светиться диоду. Задача : При срабатывании датчика света от него подается сигнал на платформу и посредством программы должен загораться диод. Ход работы. 1)Устанавливаем диод на платформу пинов. Рисунок 3 – расположение диода на платформе пинов 2) Подключение датчика света к платформе PIC32 ChipKIT (рисунок 3). Рисунок 4 – Датчик света
  8. 8. Рисунок 5 – Подключение диода и датчика света 3) Написание программы 4) Загрузка программы в память платформы PIC32 ChipKIT
  9. 9. Рисунок 6 – Процесс загрузки программы Рисунок 7 – Успешная загрузка программы
  10. 10. 5) Проверка работоспособности системы Результатом правильной работы системы будет являться загорание светодиода при отсутствии попадания света на датчик. а) б) Рисунок 8 – Проверка работы системы: (а) – свет попадает на датчик; (б) – свет не попадает на датчик.
  11. 11. Лабораторная работа №3 «Работа электромотора с двумя светодиодными индикаторами и светодатчиком» Цель работы: Написать программу, позволяющую идентифицировать работу электромотора светодиодами. Задача: При выключенном электромоторе горит светодиод красного цвета. При срабатывании электромотора, красный светодиод гаснет и загорается зеленый светодиод. Электромотор включается при срабатывании датчика света. Ход работы. 1) Собираем электрическую цепь. а) Подключаем SIG датчика света к Pin3, VСC датчика света к Pin 5V0, GND датчика света к «-» на платформе пинов. б)Устанавливаем зеленый диод на платформу пинов «-» к «-», «+» к «+». в)Подключаем «-» платформы пинов на GND платформы Arduino. «+» платформы пинов к Pin 2 Arduino. г)Устанавливаем красный диод «-» к «-», а «+» подходит к Pin1 платформы Arduino. г)Подключаем электромотор. «+» подходит к плюсу зеленого светодиода, а «-» подходит к общему минусу на платформе пинов. Рисунок 9 – готовая электрическая цепь 2) Текст программы:
  12. 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. 13. Рисунок 10 – На световой датчик попадает свет и электромотор не работает
  14. 14. При срабатывании датчика загорается зеленый диод и электромотор начинает вращаться. Рисунок 11 – Загорается зеленый диод и начинает работу электромотор
  15. 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,)
  16. 16. Рисунок 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);
  17. 17. 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);
  18. 18. 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);
  19. 19. 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);
  20. 20. 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); }

×