Программа для управления портами Arduino/CraftDuino


Программа для управления портами Arduino

Здесь уже рассматривалось как на разных языках программирования можно общаться с Arduino через COM-порт и даже приводился пример, что можно выдавать в COM-порт абсолютно разные данные – например сигнал о появлении ключевого слова в RSS-потоке 😉
Теперь же напишем программу для управления портами ардуины.

Для работы с COM-портом на С++ под win32 используем немного доработанную библиотеку SerialGate, а интерфейс по-быстрому набросаем в MFC.

Архив с программой, скетчем и исходниками можно скачать здесь.

Библиотека SerialGate представлена двумя файлами SerialGate.h и SerialGate.cpp
Весь функционал программы сосредоточен в arduinoportsDlg.cpp.

При изменении поля с номером COM-порта вызывается функция
OnChangeEditComPort() в которой вызывается
open_port() где и происходит попытка открыть порт строчкой

bool b = sg.Open(atoi(m_COM_port),9600);

Далее все функции однотипны:

void CArduinoportsDlg::On13() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_13)
	{
		sg.Send("13H",3);
	}
	else
	{
		sg.Send("13L",3);
	}
}

— если напротив порта с данным номером (в примере — 13) ставится галочка – в порт отправляется строчка
«13H»
,если же снимается, то «13L»

В Arduino/CraftDuino нужно залить скетч arduinoports.pde

/*
 * считывает данные из порта и устанавливает соответствующий уровень на порту
 * 00H - установит высокий уровень на 0-м порту
 * 01L - установит низкий уровень на 1-м порту
 * 
 */

char val = 0;       // variable to store the data from the serial port
char port1 = 0;
char port2 = 0;
int p=0;

void setup() {
  Serial.begin(9600);        // connect to the serial port
}

void loop () {
  if( Serial.available() ) {
    port1 = Serial.read();     // read the  port 
    port2 = Serial.read(); 
    val = Serial.read(); 
    Serial.print(port1); Serial.print(" "); Serial.println((int)port1);
    Serial.print(port2); Serial.print(" "); Serial.println((int)port2);
    Serial.println(val);
    int p1=(int)port1-48;
    int p2=(int)port2-48;
    p=p1*10+p2;
    pinMode(p,OUTPUT); 
    if( val == 'H' || val == 'h' ) 
    {
      digitalWrite(p, HIGH);
    } 
    else
    {
      if(val=='L' || val == 'l')
      {
        digitalWrite(p, LOW);
      }
    }
  }
  delay(10);
}

, который опрашивает СОМ-порт, считывает из него три байта, первые два приводит из символов в цифру и переводит в десятичный формат

p=p1*10+p2;

переводит порт p в режим вывода, а затем в зависимости от того – какая буква H или L поступила в третьем байте посылки – выставляет на порту соответствующий уровень напряжения – HIGH или LOW.

Ссылки
Архив с программой, скетчем и исходниками
SerialGate

По теме
Практическое программирование Arduino- программирование работы с COM-портом


0 комментариев на «“Программа для управления портами Arduino/CraftDuino”»

    • Спасибо за ссылку! не нашёл этот проект 🙂

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение