Lazarus + Arduino

Lazarus + Arduino: виртуальный COM порт

Вступление

Недавно приобрел себе платку Arduino UNO. В свободное от учебы и работы время пытаюсь с ней разбираться, особенно интересует управление сервоприводами.

Я ни в коем случае не претендую на уникальность и правильность приводимых мною строк кода и алгоритмов. Я - новичок, "программист-любитель".

Ближе к теме

Задался вопросом: "Как управлять платой Ардуино с компьютера?", а точнее, как управлять положением сервопривода или яркостью светодиода, нажимая на компьютере кнопку. Решил написать небольшую программку, которая бы связывалась с ардуино по COM-порту.

В качестве среды программирования остановился на Lazarus (практически аналог Delphi), т.к. на первом курсе немного его изучал. Напомню, в данной IDE язык программирования - Pascal (паскаль).

Подготовка

Будем считать, что Lazarus, драйвер и программное обеспечение Arduino у вас уже установлены. Если нет, то скачиваем с официальных сайтов и устанавливаем, все бесплатно и понятно: Lazarus, Arduino

Далее скачиваем и устанавливаем необходимую для работы с COM-портами библиотеку Lazarus'а - 5dpo. Прямая ссылка на архив 5dpo.

Распаковываем скачанный архив в папку с установленным Лазарусом, у меня получился такой путь к папке: C:\lazarus\Sdpo.

Запускаем Lazarus. Чтобы установить новую библиотеку переходим Пакет -> Открыть файл пакета (.lpk)..., в окне выбираем файл sdposeriallaz.lpk, у меня он в папке C:\lazarus\Sdpo\SdpoSerial и жмем кнопку Открыть.

Установка Sdpo

В открывшемся окне пакета переходим Использовать -> Установить, во всех всплывающих окнах соглашаемся со всем, что там предлагают и ждем, когда Лазарус перезапустится, после этого на панели компонентов появится новая вкладка 5dpo.

Установка Sdpo

Установка Sdpo

Программа в Lazarus'е

Размещаем элементы, как на скриншоте.

Форма Lazarus

В свойствах формы Form1 меняем надпись (Caption) на Яркость диода.

В свойствах кнопки Button1 меняем надпись (Caption) на Соединить. Надпись Label1 меняем в свойствах (Caption) на 0 (ноль).

В свойствах ползунка меняем минимальное и максимальное значение Min: 0 и Max: 255.

Настраиваем SdpoSerial1. Свойство BaundRate - это скорость передачи данных, устанавливаем на br_9600. Свойство Device - это наш COM-порт, пишем порт, к которому подключена Arduino (можно посмотреть в диспетчере устройств), обычно это COM3.

Форма Lazarus

Свойства SdpoSerial

Двойным кликом по кнопке Соединить создаем процедуру TForm1.Button1Click(Sender: TObject) и после begin активируем соединение:

SdpoSerial1.Active:=true;

Двойным кликом на ползунке создаем процедуру TForm1.TrackBar1Change(Sender: TObject) и после begin пишем:

sleep(1);                                               //пауза перед считыванием значения ползунка
SdpoSerial1.WriteData(IntToStr(TrackBar1.Position)+'.');//отправляем значение ползунка в COM-порт
label1.Caption:=IntToStr(TrackBar1.Position);           //записываем значение ползунка в label1 

Точка, после значения ползунка, - это символ, обозначающий конец строки.

Теперь необходимо разорвать соединение с COM-портом при закрытии программы. В инспекторе объектов выбираем Form1: TForm1, переходим на вкладку События, выбираем событие OnClose и кликаем на кнопке с троеточием (...) - появится новая процедура TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction). В этой процедуре, после begin пишем:

SdpoSerial1.WriteData('0.'); //отключаем светодиод
SdpoSerial1.Active:=false;   //разрываем соединение

Программа для компьютера готова, жмем Запустить, чтобы компилировать проект.

Программа для Arduino. Все пояснения в комментариях.

//объявляем переменную.
String brightness = "";

void setup() {                
  //инициализируем 9-й пин в качестве выхода.
  pinMode(9, OUTPUT); 
  //устанавливаем скорость соединения.  
  Serial.begin(9600);  
}

void loop() {
  while (Serial.available() > 0) {  //если есть доступные данные
    char inChar = Serial.read();    //считываем байт
    brightness += inChar;           //собираем информацию в строку
    delay(1);
    if (inChar == '.') {            //если пришел символ "точка"
      //управляем яркостью светодиода
      analogWrite(9, brightness.toInt());
      brightness = "";              //обнуляем переменную
    }
  }
}

Собираем схему

Установка Sdpo

Время тестов!!!

Загружаем скетч в ардуино, запускаем программу на компе, жмем Соединить и тащим ползунок! О результатах и проблемах отписывайтесь в комментариях.

Файл скетча ардуино скачать.
Исходники программы на Lazarus скачать.

"Кликайте по иконкам социальных сетей - делитесь с друзьями полезной информацией."


Назад к списку статей

comments powered by Disqus
наверх

Примерные цены

Эти цены совсем примерные для общей оценки стоимости! Для уточнения стоимости вашего сайта пишите мне, контактные данные представлены ниже на странице.


Сайт визитка
Описание: - Дополнительные модули по договоренности.
Цена: от 3000 руб.

Корпоративный
Описание: Визитка + - Дополнительные модули по договоренности.
Цена: от 5000 руб.




Магазин
Описание: Корпоративный + - Дополнительные модули по договоренности.
Цена: от 12000 руб.



×

Модуль SMS Back

Модуль SMS Back - предназначен для отправки пользователем номера телефона администратору сайта.

Как им пользоваться?


1. Установка и настройка

2. Заполнение формы


3. Получение СМС

Ограничения по количеству бесплатных смс: 60 смс в сутки.


Версии модуля

На данный момент идет разработка трех версий модуля: "SMS Back Standart", "SMS Back +" и "SMS Back Full".


"SMS Back Standart"
  • - Отправка смс сообщения на один номер*.
  • - Обновления модуля бесплатны.
  • - Установка*** и подключение модуля бесплатно.

  • Цена: $50
"SMS Back +"
  • - Отправка смс сообщения на два номера**.
  • - Обновления модуля бесплатны.
  • - Установка*** и подключение модуля бесплатно.

  • Цена: $60
"SMS Back Full" в разработке
  • - Отправка смс сообщения на два номера**.
  • - Отправка сообщения на электронный ящик.
  • - Обновления модуля бесплатны.
  • - Установка*** и подключение модуля бесплатно.
  • Цена: $75



* Бесплатная отправка смс на один номер. Возможна отправка смс на два номера и более, плата за отправку смс на дополнительный номер составит 0,25 руб за смс. Стоимость подключения дополнительного номера: $10 за 1 номер телефона.

** Бесплатная отправка смс на два номера. Возможна отправка смс на три номера и более, плата за отправку смс на дополнительный номер составит 0,25 руб за смс. Стоимость подключения дополнительного номера: $10 за 1 номер телефона.

*** Бесплатная установка на Joomla.


Ожидаемые дополнения и обновления

- Усиление защиты от СПАМ-ботов.

- Запись отправленных сообщений в таблицу для создания базы клиентов и отслеживания СПАМа.

- Возможность отправки тестового сообщения для проверки настройки модуля.

×