1. Программирование Arduino — введение
2. Структура программы
Загрузив любой тестовый скетч Вы сразу увидите, что там обязательно присутствуют 2 функции: setup() и loop().
Т.о. и в своей программе Вы должны объявить эти две основные функции.
Функция setup() запускается один раз, после каждого включения питания или сброса платы Arduino/Freeduino. Используйте её, чтобы инициализировать переменные, установить режимы работы цифровых портов, и т.д.
Функция loop() в бесконечном цикле последовательно раз за разом исполняет команды, которые описаны в ее теле. Т.е. после завершения функции снова произойдет ее вызов.
Разберем простой пример:
void setup() // начальные установки { Serial.begin(9600); // установка скорости работы серийного порта на 9600 бит/сек pinMode(3, INPUT); // установка 3-его порта на ввод данных } // Программа проверяет 3-й порт на наличие на нём сигнала и посылает ответ в // виде текстового сообщения на последовательный порт компьютера void loop() // тело программы { if (digitalRead(3) == HIGH) // условие на опрос 3-го порта Serial.print('H'); // отправка сообщения в виде буквы «Н» на COM-порт else Serial.print('L'); // отправка сообщения в виде буквы «L» на COM-порт delay(1000); // задержка 1 сек. }
Константы
Константы – предопределенные значения. Они используются, чтобы делать программы более легкими для чтения.
Объявление констант (а так же базовых макросов и функций) можно посмотреть в файле
\hardware\cores\arduino\wiring.h
как видите, там же объявляются и наши функции:
void setup(void); void loop(void);
Классифицируем константы в группах:
Уровни сигналов порта HIGH и LOW
#define HIGH 0x1 #define LOW 0x0
При чтении или записи к цифровому порту применимо только два возможных значения – порт может быть установлен как HIGH (высокий уровень) или LOW (низкий уровень).
Уровень HIGH соответствует 5 вольтам на выходе. При чтении значения на цифровом порте, начиная с 3 вольт и выше (до напряжения питания), микропроцессор воспримет это напряжение как HIGH. Эта константа представлена целым числом 1.
Уровень LOW соответствует 0 вольтам на выходе порта. При чтении значения на цифровом порте, начиная с 2 вольт и меньше (до 0V), микропроцессор воспримет это напряжение как LOW. Эта константа представлена целым числом 0.
Таким образом, оба следующих вызова будут эквивалентны:
digitalWrite(13, HIGH); // можно так, digitalWrite(13, 1); // а можно и так
Согласитесь — первый вариант более нагляден.
Настройка цифровых портов на ввод (INPUT) и вывод (OUTPUT) сигналов
#define INPUT 0x0 #define OUTPUT 0x1
Цифровые порты могут использоваться на ввод или вывод сигналов.
Изменение порта с ввода на вывод производится при помощи функции pinMode().
Порты, сконфигурированные на ввод сигналов, имеют большое входное сопротивление, что позволяет подключать к ним источник сигнала, и порт не будет потреблять большой ток.
Порты, сконфигурированные на вывод сигналов, имеют малое выходное сопротивление. Это означает, что такие порты могут обеспечивать подключенные к ним элементы электроэнергией. В этом состоянии порты поддерживают положительное или отрицательное направление тока до 40 мА (миллиампер) на другие устройства или схемы. Это позволяет подключить к ним какую-либо нагрузку, например светодиод (через резистор, ограничивающий ток). Порты, сконфигурированные как выводы, могут быть повреждены, если их замкнуть накоротко на «землю» (общая шина питания), на источник питания +5 В, или подсоединить к мощной нагрузке с малым сопротивлением.
Пример:
pinMode(13, OUTPUT); // 13й вывод будет выходом pinMode(12, INPUT); // а 12й – входом
читать далее: 3. Программирование Arduino — цифровой ввод/вывод
Ссылки
http://arduino.cc/en/Reference/HomePage (или же в каталоге ArduinoIDE \reference\HomePage.html )
http://freeduino.ru/arduino/lang.html
По теме
Программирование Arduino — Последовательная передача данных
0 комментариев на «“Программирование Arduino — структура программы, константы”»
Начал пробовать пример и компилятор выдает ошибку. Вместо Serial.begin(9600);, написано beginSerial(9600);
В общем должно быть так "Serial.begin(9600); // установка скорости работы серийного порта на 9600 бит/сек"
Спасибо! Пофиксил.