Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Програмуваня на Arduino для початківців - Міхаїл Ях’яєв

GDG Ternopil
September 11, 2016

Програмуваня на Arduino для початківців - Міхаїл Ях’яєв

Програмуваня на Arduino для початківців - Міхаїл Ях’яєв

GDG Ternopil

September 11, 2016
Tweet

More Decks by GDG Ternopil

Other Decks in Programming

Transcript

  1. Что такое микроконтроллер • Маленький компьютер (процессор, память) выполненный на

    одной микросхеме (SoC): ◦ Низкая частота (8 Mhz) ◦ Очень мало памяти (4 KB Flash памяти, 256 байт оперативки) • Любая программируемая микросхема слабее "нормального" процессора • Минимум внешних компонент для работы • Применение: ◦ Автомобили ◦ Бытовая техника (микроволновки, стир. машины) ◦ Электронные компоненты (hard drives, SSD) ◦ И т.д.
  2. Arduino • Open-source платформа для создания электронных прототипов • Без

    Arduino ◦ Разбираться с подключением питания, программатора, как задать нужную частоту, как скомпилировать и загрузить программу, и т.д. ◦ Почему он никак не заработает?!?! • С Arduino: ◦ Подключить плату через USB ◦ Написать программу в GUI, upload, посмотреть что будет!
  3. Особенности программирования • 2 разные памяти: flash для программного кода

    и SRAM для данных (переменные, объекты, ...) • Flash: ◦ Программируется в самом начале ◦ Не меняется ◦ Программа выполняется из него • SRAM: ◦ Гораздо меньше чем flash ◦ Arduino Micro: 32KB flash, 2.5KB SRAM CPU Instruction Memory (flash) Data Memory Микроконтроллер на Arduino Micro "Обычный" компьютер External Devices (HDD, flash, etc). CPU Memory
  4. Питание, ground, т.д. • Питание от USB: +5V • Дополнительный

    регулятор на 3.3V ◦ Многие устройства требуют 3.3V • При подключении разных устройств, GND должны быть соединены вместе!
  5. Что делает микроконтроллер Pin микроконтроллера может: • OUTPUT: Выдавать напряжение.

    ◦ В каждый момент времени либо 0 либо 5V. ◦ "переключатель" - присоединяет 0 или 5V ◦ Drives the pin • INPUT: cчитывать напряжение поданное на него другим устройством
  6. Первая Arduino программа void setup() { pinMode(3, OUTPUT); } void

    loop() { digitalWrite(3, HIGH); delay(200); digitalWrite(3, LOW); delay(500); }
  7. (Arduino main изнутри) int main(void) { ... // Some initialization

    setup(); for (;;) { loop(); ... // May do something else } return 0; }
  8. Как работать в Arduino GUI CPU Instruction Memory (flash) Data

    Memory (4) Программа записывается сюда (через USB) (5) Контроллер перезагружается и выполняет программу (1) Пишем программу (3) Нажимаем upload (2) Выбираем плату и порт
  9. Serial Port • Вместо printf в С и Serial.out.prinln в

    Java. void setup() { Serial.begin(115200); } void loop() { Serial.println("Hello, world "); delay(500); }
  10. analogRead unsigned short v2 = analogRead(A0); Намного дольше чем digitalRead

    (100 vs 1-2 микросекунды). 0V 5V 2.5V 0 1023 512 256 768
  11. Пример: analogRead void setup() { Serial.begin(115200); } void loop() {

    unsigned short val = analogRead(A0); Serial.println(val); delay(500); }
  12. PWM и analogWrite • Быстро переключаем между 0V и 5V

    ◦ Переключение на уровне "железа". ◦ Частота по умолчанию 500Hz - 1kHz, может быть до ~60kHz. • Среднее значение между 0 и 5V ◦ Duty Cycle - "процент 5V" • Только некоторые контакты поддерживают PWM. ◦ Arduino Micro: 3, 5, 6, 9, 10, 11, 13 ◦ Arduino Nano: 3, 5, 6, 9, 10, 11.
  13. Пример PWM void setup() { pinMode(3, OUTPUT); } void loop()

    { for (int i = 1; i < 200; i++) { analogWrite(3, i); delay(5); } analogWrite(3, 1); delay(200); }
  14. Сервомотор • Поворачивается на заданную позицию и держит её. •

    Используется: ◦ Модели ◦ Fly-by-wire, drive-by-wire ◦ Robot arms
  15. Управление сервомотором • Импульс 1.5ms - средняя позиция. • В

    Arduino имеются готовые библиотеки. 20 ms 0.7ms <- 1.5ms -> 2.3ms
  16. Управление сервомотором #include <Servo.h> Servo myservo; void setup() { myservo.attach(2);

    } void loop() { short val = analogRead(A0); short servo_val = map(val, 0, 1023, 0, 180); myservo.write(servo_val); delay(10); }
  17. Демо: генератор искр Искра возникает если кратковременно подать ток на

    катушку и потом отключить. Свеча зажигания Катушка зажигания
  18. Передача данных • Передать число от устройства к микроконтроллеру ◦

    Например величину ускорения • Хотим использовать цифровой способ передачи ◦ Легче на практике ◦ Можем 1 бит - через digital read/write • Передача битов один за другим ◦ Последовательный способ передачи данных (serial communication) • Проблема: интерпретация 380 ?
  19. I2C протокол • Использует 2 провода: один для данных, другой

    для частоты • Интерпретация сигнала на SDA проходит когда SCL переключается 0 -> 1
  20. I2C Protocol • Шина с открытым коллектором ◦ Устройства "подключают"

    SDA и SCL только к земле ◦ Если никто не "подключает" к земле, линия принимает +5V за счёт резистора • Нет опасности короткого замыкания • Arduino Wire library чтобы работать с I2C.