Программирование микроконтроллерной платы Arduino и

advertisement
Выполнил:
Ученик 10 «А» класса
Суслов Кирилл
Руководитель:
Гадалов А.Г.






Цель: Получить базовые знания о платформе arduino.
Задачи:
Научиться основам электротехники;
Получить знания по программированию на языке
Arduino(С++);
Создать устройство на основе платы Arduino.
Актуальность темы: В связи с возросшим интересов к
программированию появилась возможность изучения
азов программирования в средней школе с помощью
платформы Arduino для создания простых
программируемых схем и даже полноценных роботов.
Электронный конструктор и
удобная платформа быстрой
разработки электронных
устройств для новичков и
профессионалов
◦ Среда разработки
◦ Платы
◦ Электронные компоненты
•Низкий порог входа в мир МК
•Разнообразие плат. Две версии
носимых плат: LilyPad и Seeeduino Film
•Кроссплатформенность среды
разработки.
• Переносимость кода для разных
плат Arduino.
•Отсутствие необходимости в
программаторе.
•Почти все платы имеют USB разъем
•Отсутствие необходимости в пайке
схемы собираются на беспаячной
макетной плате.
•Язык программирования C/C++
Для начала работы с Arduino нужно подготовить:
 скачать Arduino IDE(Средство разработки программ
для arduino)
 подготовить электронные компоненты.
 Установить драйвера для ПК .
Arduino IDE(Интегрированная среда разработки Arduino)
Интегрированная среда разработки Arduino — это кроссплатформенное
приложение на Java, включающее в себя редактор кода, компилятор и
модуль передачи прошивки в плату.
Язык программирования Ардуино является стандартным C++ (используется компилятор AVR-GCC) с некоторыми
особенностями, облегчающими новичкам написание первой работающей программы.

Программы, написанные программистом Ардуино называются наброски (или иногда скетчи варваризм от англ. sketch) и сохраняются в файлах с расширением ino. Эти файлы перед компиляцией
обрабатываются препроцессором Ардуино. Также существует возможность создавать и подключать к проекту
стандартные файлы C++.

Обязательную в C++ функцию main() препроцессор Ардуино создает сам, вставляя туда необходимые «черновые»
действия.

Программист должен написать две обязательные для Ардуино функции setup() и loop(). Первая вызывается
однократно при старте, вторая выполняется в бесконечном цикле.

В текст своей программы (скетча) программист не обязан вставлять заголовочные файлы используемых стандартных
библиотек. Эти заголовочные файлы добавит препроцессор Ардуино в соответствии с конфигурацией проекта.
Однако пользовательские библиотеки нужно указывать.

Менеджер проекта Arduino IDE имеет нестандартный механизм добавления библиотек. Библиотеки в виде исходных
текстов на стандартном C++ добавляются в специальную папку в рабочем каталоге IDE. При этом название
библиотеки добавляется в список библиотек в меню IDE. Программист отмечает нужные библиотеки и они вносятся
в список компиляции.

Arduino IDE не предлагает никаких настроек компилятора и минимизирует другие настройки, что упрощает начало
работы для новичков и уменьшает риск проблем.

Простейшая Ардуино-программа состоит из двух функций:

setup(): функция вызывается однократно при старте микроконтроллера.

loop(): функция вызывается после setup() в бесконечном цикле все время работы микроконтроллера.

/*

Зажигаем светодиод на одну секунду, затем выключаем его на

одну секунду в цикле.

*/


void setup() {

// Инициализируем цифровой вход/выход в режиме выхода.

// Выход 13 на большинстве плат Arduino подключен к светодиоду на плате.

pinMode(13, OUTPUT);

}


void loop() {

digitalWrite(13, HIGH); // зажигаем светодиод

delay(1000);

digitalWrite(13, LOW);

delay(1000);

}
// ждем секунду
// выключаем светодиод
// ждем секунду
int ledPins[] = {2,3,4,5,6,7,8,9};
delay(delayTime);
void setup()
digitalWrite(ledPins[6], LOW);
{
delay(delayTime);
digitalWrite(ledPins[index], LOW);
}
}
int index;
digitalWrite(ledPins[5], LOW);
for(index = 0; index <= 7; index++)
delay(delayTime);
void pingPong()
{
digitalWrite(ledPins[4], LOW);
{
pinMode(ledPins[index],OUTPUT);
}
}
delay(delayTime);
int index;
digitalWrite(ledPins[3], LOW);
int delayTime = 100;
delay(delayTime);
digitalWrite(ledPins[2], LOW);
for(index = 0; index <= 7; index++)
delay(delayTime);
{
void loop()
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[index], HIGH);
{
delay(delayTime);
delay(delayTime);
oneAfterAnotherNoLoop();
digitalWrite(ledPins[0], LOW);
oneAfterAnotherLoop();
delay(delayTime);
digitalWrite(ledPins[index], LOW);
}
oneOnAtATime();
}
pingPong();
void oneAfterAnotherLoop()
for(index = 7; index >= 0; index--)
marquee();
{
{
int index;
digitalWrite(ledPins[index], HIGH);
}
int delayTime = 100;
delay(delayTime);
void oneAfterAnotherNoLoop()
for(index = 0; index <= 7; index++)
{
{
int delayTime = 100;
digitalWrite(ledPins[index], LOW);
}
digitalWrite(ledPins[index], HIGH);
}
delay(delayTime);
digitalWrite(ledPins[0], HIGH);
}
void marquee()
delay(delayTime);
for(index = 7; index >= 0; index--)
{
digitalWrite(ledPins[1], HIGH);
{
int index;
delay(delayTime);
digitalWrite(ledPins[index], LOW);
digitalWrite(ledPins[2], HIGH);
delay(delayTime);
delay(delayTime);
digitalWrite(ledPins[3], HIGH);
int delayTime = 200;
}
}
for(index = 0; index <= 3; index++)
delay(delayTime);
{
digitalWrite(ledPins[4], HIGH);
void oneOnAtATime()
digitalWrite(ledPins[index], HIGH);
delay(delayTime);
{
digitalWrite(ledPins[index+4], HIGH);
digitalWrite(ledPins[5], HIGH);
int index;
delay(delayTime);
delay(delayTime);
int delayTime = 100;
digitalWrite(ledPins[index], LOW);
digitalWrite(ledPins[6], HIGH);
digitalWrite(ledPins[index+4], LOW);
delay(delayTime);
for(index = 0; index <= 7; index++)
digitalWrite(ledPins[7], HIGH);
{
delay(delayTime);
digitalWrite(ledPins[7], LOW);
}
}
digitalWrite(ledPins[index], HIGH);
delay(delayTime);
Подготовка
компонентов:





1 плата Arduino uno.
1 Доска для
прототипирования.
8 различных
светодиодов.
9 соединительных
проводов.
8 резисторов.
Download