Вы находитесь на странице: 1из 41

Введение

в дисциплину
Характеристика дисциплины
• Название: «Прикладные интеллектуальные системы»

• Лекции: 2 в неделю (практики = лекции),


5 преподавателей

• Лабораторные работы: 8 занятий, нет отчетов,


защита на том же занятии

• Форма контроля: экзамен в виде


автоматизированного тестирования, контрольные
опросы на усмотрение преподавателя
Особенности дисциплины

• Роботы как синтез механики, электроники,


программирования, интеллектуальных алгоритмов

• Эксперимент - Модульное обучение

• Просто о сложном и актуальном


Тематика по лекторам
Введение
в микроконтроллеры
Что такое микроконтроллер

• Микроконтроллер - компьютер на одной микросхеме.


Процессор + память + периферийные устройства в
одном чипе
Что такое контроллер

• Контроллер – электронная плата с микроконтроллером,


которая решает конкретную практическую задачу
Особенности микроконтроллера

• Применение: автомобили, стиральные машины,


телефоны, станки, продвинутые игрушки

• Дешевизна + простота устройств

• Большая номенклатура – около 100 разных чипов у


каждого производителя

• От 8-ми разрядных с 512 байтами памяти


до 32-вух разрядных с 512 килобайтами памяти

• 1 MIPS – 100 MIPS быстродействия


Обзор

• 1976 год, через 5 лет после создания первого


микропроцессора. Микросхема фирмы Intel, i8048.

• Intel i8051 – классика, популярный старичѐк

• Линейка чипов PIC компании Microchip

• Линейка чипов AVR компании Atmel

• Семейство ARM Cortex M


Структура чипа Atmel AVR
Процессор

• 8-ми битный

• RISC (Reduced Instruction Set Computer)

• 1 MIPS на 1 МГц

• Регистры общего назначения

• АЛУ

• Счетчик команд

• Регистр команд
Память

• Гарвардская архитектура

• Память программ

• Память данных

• Регистры ввода/вывода

• Энергонезависимая память данных


Периферия. Порты ввода/вывода

• Большинством выводов чипа можно управлять


программно

• Режимы: ввода, вывода, специальные

• Прямое управление внешними устройствами

• Регистры ввода/вывода

• Энергонезависимая память данных


Периферия. Прерывания

• Опрос устройства

• Прерывание и его обработчик

• Возврат из прерывания

• Запрет и разрешение прерываний

• Приоритеты прерываний
Периферия. Таймеры/счетчики

• Измерение временных интервалов – микроволновка,


стиральная машина

• Генерация сигнала заданной частоты – звук, передача


данных

• Широтно-импульсная модуляция – регулирующее


воздействие
Аналого-цифровой преобразователь

• Получение числового
значения напряжения,
поданного на вход

• Например: от 0 до 5В -> от 0
до 1023
Универсальный последовательный
приемопередатчик (UART или USART)

• Последовательный дуплексный интерфейс

• Связь с другим микроконтроллером

• Связь с компьютером через адаптер

• RS-232, USB, RS-485


Интерфейсы

• Последовательный периферийный интерфейс SPI

• Двухпроводной последовательный интерфейс TWI

• Интерфейс JTAG
Специальная периферия

• Аналоговый компаратор (AC)

• Сторожевой таймер

• Тактовый генератор

• Система реального времени (RTC)

• Сброс при снижении напряжения питания (BOD)


Пример применения.
Драйвер двигателя
Пример применения.
Автомат светодиодных эффектов
Arduino
Контроллер Arduino
• AVR ATmega328
• Частота 16 МГц
• Программа 32 Кбайта
• ОЗУ 2 Кбайта
• 14 цифровых
входов/выходов
• Из них 6 ШИМ
• 6 аналоговых входов
Контроллер Arduino

• Открытые исходники
• Большое сообщество
• Развитые библиотеки
• Программирование
через USB
• Подмножество С++
• Собственная IDE
• Дешевые клоны
Структура Arduino
1. Питание
2. USB
3. Стабилизатор
питания
4. Цифровой
ввод/вывод
5. Аналоговый ввод
6. Разъем питания
7. Сброс
Virtual Breadboard
Ключевые понятия

• Задача - идея
• IDE - инструмент
• Приложение - скетч
• Компилятор - прошивка
• Программатор – «заливка»
• Исполнение - профит
Arduino IDE
Структура скетча

void setup()

void loop()

}
Setup

void setup() • В начале работы скетча


{ • Только один раз при
включении или после сброса
}
• Инициализация переменных,
периферии, библиотек
Setup. Пример

int LEDPin;

void setup()

{
LEDPin = 13;
pinMode(LEDPin, OUTPUT);
digitalWrite(LEDPin, LOW);
}
Loop

void loop() • Вызывается в бесконечном


цикле непрерывно
{

}
• Получает данные от датчиков
• Передает команды на
исполнительные устройства
(актуаторы)
Loop. Пример

void loop()

{
delay(500);
digitalWrite(LEDPin, HIGH);
delay(500);
digitalWrite(LEDPin, LOW);
}
Встроенные функции

• void pinMode(pin, mode)


• void digitalWrite(pin, value)
• int digitalRead(pin)
• int analogRead(pin)
• void analogWrite(pin, value)
• delay(value)
ШИМ
Моргаем светодиодом
Моргаем светодиодом. Код
int LEDPin;

void setup()
{
LEDPin = 13;
pinMode(LEDPin, OUTPUT);
digitalWrite(LEDPin, LOW);
}

void loop()
{
delay(500);
digitalWrite(LEDPin, HIGH);
delay(500);
digitalWrite(LEDPin, LOW);
}
Кнопка
Кнопка. Код

int pushButton = 2;

void setup() {
Serial.begin(9600);
pinMode(pushButton, INPUT);
}

void loop() {
int buttonState = digitalRead(pushButton);
Serial.println(buttonState);
delay(1);
}
Регулируем яркость
Регулируем яркость. Код
int led = 9;
int brightness = 0;
int fadeAmount = 5;

void setup() {
pinMode(led, OUTPUT);
}

void loop() {
analogWrite(led, brightness);

brightness = brightness + fadeAmount;

if (brightness == 0 || brightness == 255) {


fadeAmount = -fadeAmount ;
}
delay(30);
}