Основы программирования. Урок 6.

Основы программирования. Урок 6.

Тема 6. IDE Arduino. Скетч и его структура.

 План

1. Внешний вид IDE Arduino

2. Структура программы

3. Основные функции

 

Теоретическая часть

 

1 Внешний вид IDE Arduino

Для программирования плат Arduino существует специальная интегрированная среда разработки IDE Arduino. Рассмотрим внешний вид программы(рис 1). 

 

ide Arduino 

Рисунок 1 — Внешний вид IDE Arduino

 

Вверху, под строкой заголовка находится строка Меню, со следующими пунктами: Файл, Правка, Скетч, Настройки, Сервис. 

Под строкой меню располагается строка инструментов, на которую вынесены частоиспользуемые команды: 

проверкапроверить

загрузитьЗагрузить

создатьСоздать

созранитьСохранить

Открыть

монитор порта. 

Ниже располагается строка с названиями открытых вкладок. В конце строки находится пиктограмма , по нажатии на которую открывается меню, относящееся ко вкладкам. 

В центре окна находится рабочая область, в которой пишется код программы. Под рабочей областью находится окно сообщений, куда выводятся сообщения о результате компиляции, загрузки и т.д. 

 

2 Структура программы

Программа, написанная в IDE Arduino называется скетчем. Каждый скетч должен состоять как минимум из двух функций:

void setup() 

 { 

   операторы; 

 } 

void loop() 

  { 

   операторы; 

  } 

В начале программы, перед функцией setup, обычно, объявляются переменные. После включения питания платы первой выполняется функция setup. Она выполняется только один раз. Обычно в ней инициализируются режимы работы портов, устанавливается скорость работы с последовательным портом и т.д. 

Код, написанный в функции loop() начинает выполняться после выполнения функции setup(), и выполняется в бесконечном цикле снова и снова. В этой функции выполняется основная работа: различные вычисления, получение значений датчиков, вывод значений на порты. 

 

3 Основные функции

 pinMode(номер_порта, режим) — установка дискретного(цифрового) порта с номерами от 0 до 13, как вход( INPUT) или выход (OUTPUT).

  pinMode(0, OUTPUT);  //0 порт устанавливается как выход 
  pinMode(1, INPUT);   //1 порт устанавливается как вход

 

Аналоговые порты могут использоваться как дискретные , при обращении к ним по номерам, начиная с 14 (аналоговый вход 0) .

 

digitalWrite(номер_порта, значение) — посылает на указанный номер порта значение HIGH или LOW.

 

Пример:

digitalWrite(2, HIGH);  /* выставляем 2й вывод в «высокое» состояние. Например зажигаем светодиод */

 

digitalRead (номер_порта) — получает значение с указанного порта: HIGH (1) или LOW(0).

Пример:

  int val;
  val = digitalRead(3);  /*получаем значение с 3го порта. Например определяем нажата или не нажата кнопка*/

Следует заметить, что если к порту ничего не подключено, то функция digitalRead () может хаотично возвращать значения HIGH или LOW.

 

analogRead(порт) — cчитывает значение с указанного аналогового порта. Может принимать значение от 0 до 1023. Максимальная скорость считывания с аналогового порта примерно 10000 раз в секунду.

Пример:

  int val;
  val = analogRead(4);  /*считываем значение на 4м аналоговом входе, например поворот потенциометра */

Аналоговые порты по умолчанию определенны как входы.

 

analogWrite(порт, значение) — выводит на порт аналоговое значение от 0 до 255. 

 

Пример:

  analogWrite(5, 128); /*посылает на 5й порт значение 128. Например светодиод, подключенный к 5му выходу будет светиться со средней яркостью*/

Для аналоговых выходов не обязательно вызывать функцию pinMode(). 

 

delay(время_мс) — приостанавливает выполнение программы на заданное число миллисекунд.

Пример:

  delay(1000);  //пауза 1 секунда

delayMicroseconds(время_мкс) — приостанавливает выполнение программы на заданное число микросекунд.

Пример:

  delayMicroseconds(500);  //пауза 500 микросекунд

Последовательная передача данных

Arduino может принимать и посылать данные через последовательный порт. На компьютере он представлен USB COM-портом.

Serial.begin(скорость_передачи) — устанавливает скорость передачи информации COM-порта в битах в секунду для последовательной передачи данных. Нормированные скорости: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, или 115200. Для связи с другими микроконтроллерами могут использоваться другие скорости. 

Пример:

Serial.begin(9600); //устанавливаем скорость 9600 бит/сек

Serial.available() — принимаемые по последовательному порту байты попадают в буфер микроконтроллера, откуда программа может их считать и обработать. Функция Serial.available() возвращает количество накопленных в буфере байт. В буфере может храниться до 128 байт.

Пример:

  if (Serial.available() > 0) { // Если в буфере есть данные
    // операторы приема и обработки данных
  }

Serial.read() — cчитывает следующий байт из буфера последовательного порта.

Пример:

  incomingByte = Serial.read(); // считываем байт

Serial.flush() — очищает входной буфер последовательного порта. Находящиеся в буфере данные стираются, и дальнейшие вызовы Serial.read() или Serial.available() будут иметь смысл для данных, полученных после вызова Serial.flush().

 

Практическое задание

1. Написать программу, которая поворачивает серводвигатель на угол, задаваемый поворотом потенциометра.

 

 

#include  

Servo myservo;  

int potpin = 0;  

int val;     

void setup() 

  myservo.attach(9); 

 void loop() 

  val = analogRead(potpin);          

  val = map(val, 0, 1023, 0, 179);     

  myservo.write(val);                  

  delay(15);                          

Домашнее задание

2. Написать программу, которая поворачивает серводвигатель на угол, задаваемый через монитор порта. 

 


Учебная программа курса BotBase

Центр робототехники "BOTEON".
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: