Краткий обзор возможностей объектно-ориентированного программирования в Arduino для начинающих.
Объектно-ориентированное программирование (ООП) основано на работе с объектами,
а не просто с данными, фунциями и переменными.
Каждый объект может включать в себя все необходимые функции, процедуры и параметры.
Такой подход облегчает написание, усовершенствование, поиск ошибок и правку программ.
Рассмотрим использование ООП на примере использования датчика влажности почвы для работы
с проектом “Автоматический полив растений”.
Для работы с датчиком влажности, создадим объект, который будет иметь все необходимые нам
функции и параметры внутри себя.
Прежде чем создать объект, необходимо обозначить новый класс для объекта.
class Sensor // название класса { public: int pin; // данные - пин подключения датчика, по которому получаем значение датчика int data; // данные - значение датчика };
В самом простом варианте наш объект содержит номер пина для считывания значений и значение датчика.
Теперь для считывания или указания этих данных можно будет использовать такие записи:
- название_объекта.pin = … ; // присвоить значение для pin
- … = название_объекта.data ; // считать значение data
Чтобы объект мог действовать, а не только хранить в себе данные, добавим в описание класса некоторые функции.
class Sensor // название класса { public: int pin; int data; void read() // добавляем функцию read { data=analogRead(pin); } };
Класс нового типа объектов задан. Теперь можно создать наш собственный объект нового класса.
Sensor water;
Мы создали объект water класса Sensor.
Теперь зададим номер пина, к которому подключен наш сенсор.
water.pin=A0;
A0 – константа, которая содержит порядковый номер пина, соответствующий аналоговому пину A0 платы Arduino.
Раздел начальных установок теперь будет выглядеть следующим образом:
Sensor water; void setup() { water.pin=A0; pinMode(water.pin, INPUT); }
Если выполнить для объекта команду water.read(), то значение датчика можно получить из переменной water.data.
Используем для чтения данных последовательный порт.
Полностью программа теперь выглядит так:
class Sensor // название класса { public: int pin; // переменная с номером пина int data; // переменная с показаниями датчика void read() // добавляем функцию read { data=analogRead(pin); // считываем показания датчика в переменную data } }; Sensor water; // создаем объект класса void setup() { Serial.begin(9600); // устанавливаем передачу по последовательному портк water.pin=A0; // задаем пин, к которому подключен датчик pinMode(water.pin, INPUT); // устанавливаем пин в качестве входа для считывания показаний } void loop() { delay(500); // пауза water.read(); // считываем показания Serial.println(water.data); // посылаем показания в последовательный порт }
Эта программа достаточно простая, чтобы понять основной принцип создания классов и объектов при программировании Ардуино.
Код можно усовершенствовать дополнив возможности класса.
Продолжение следует…
Leave a Reply