Инструменты пользователя

Инструменты сайта


ob:o7:example:pccontrol

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
ob:o7:example:pccontrol [2022/03/12 10:04]
iadenisov создано
ob:o7:example:pccontrol [2022/03/13 13:59] (текущий)
iadenisov
Строка 1: Строка 1:
-Если подключить к микроконтроллеру драйвер L293D, то возможно управлять мотором, путем создания разных или одинаковых сигналов на двух выводах. В этом примере управляющие каналы драйвера подключены к выводам PC14 и PC15. +====== Передача данных между МК и ПК ======
  
-С помощью модуля MicroSTM32F1TPorts возможно принимать пакеты с идентификаторами от ПК.+ 
 +Если подключить к микроконтроллеру драйвер L293D, то возможно управлять мотором, путем создания разных или одинаковых сигналов на двух выводах Input 1/2. В этом примере управляющие каналы драйвера подключены к выводам PC14 и PC15.  
 + 
 +{{ :ob:o7:example:l293d.png?600 |}} 
 + 
 +С помощью модуля ''MicroSTM32F1TPorts'' возможно принимать пакеты с идентификаторами от ПК через USB-UART преобразователь. Тот же, который [[ob:o7:stm32flash|используется для прошивки]]. Для ПК он определяется как COM-порт (в настоящем примере это ''COM10'').
  
 Код для микроконтроллера: Код для микроконтроллера:
Строка 69: Строка 74:
 END Main. END Main.
 </code> </code>
 +
 +
 +Программа для ПК на языке Компонентный Паскаль:
 +<code>
 +MODULE KrisControl1;
 +
 + IMPORT MicroTPorts;
 +
 + TYPE MessagesHandler = POINTER TO RECORD (MicroTPorts.MessagesHandler) END;
 +
 + CONST
 + motorStartForward = 021X;
 + motorStartBackward = 022X;
 + motorStop = 023X;
 +
 + VAR
 + p: MicroTPorts.Port;
 + mh: MessagesHandler;
 +
 + PROCEDURE (h: MessagesHandler) MessageReceived (id: SHORTCHAR; IN a: ARRAY OF SHORTCHAR; len: INTEGER);
 + BEGIN
 + END MessageReceived;
 +
 + PROCEDURE Open*(port: ARRAY OF CHAR);
 + BEGIN
 + IF p = NIL THEN
 + p := MicroTPorts.NewPort(port, 19200, {}, mh);
 + IF p # NIL THEN
 + Log.String("успешно соединенился"); Log.Ln;
 + END
 + END
 + END Open;
 +
 + PROCEDURE Close*;
 + BEGIN
 + MicroTPorts.Close(p);
 + Log.String("успешно закрыл соединение"); Log.Ln;
 + END Close;
 +
 + PROCEDURE Forward*;
 + VAR a: ARRAY 1 OF SHORTCHAR;
 + BEGIN
 + MicroTPorts.SendMessage(p, motorStartForward, a, 1)
 + END Forward;
 +
 + PROCEDURE Backward*;
 + VAR a: ARRAY 1 OF SHORTCHAR;
 + BEGIN
 + MicroTPorts.SendMessage(p, motorStartBackward, a, 1)
 + END Backward;
 +
 + PROCEDURE Stop*;
 + VAR a: ARRAY 1 OF SHORTCHAR;
 + BEGIN
 + MicroTPorts.SendMessage(p, motorStop, a, 1)
 + END Stop;
 +
 +BEGIN
 + NEW(mh)
 +CLOSE
 + Close
 +END KrisControl1.
 +
 +Комнады для управления:
 +
 +"KrisControl1.Open('\\.\COM10')"
 +
 +KrisControl1.Forward
 +
 +KrisControl1.Backward
 +
 +KrisControl1.Stop
 +
 +KrisControl1.Close
 +</code>
 +
 +Эти команды возможно привязать к кнопкам, чтобы сделать графический интерфейс управления моторами:
 +
 +{{ :ob:o7:example:panel.png?600 |}}
ob/o7/example/pccontrol.1647068651.txt.gz · Последнее изменение: 2022/03/12 10:04 — iadenisov