Виртуальный прибор в среде разработки LabVIEW для АСУ с сервомотром на базе микроконтроллера
Задание. В электронный отчет поместите
исходный код прошивок Arduino,
снимки экранов с выводом в Монитор порта среды Arduino IDE,
снимок экрана с программой в среде LabVIEW c выводом данных от Arduino из последовательного порта.
1. Создайте в среде LabVIEW виртуальный прибор, который посредством последовательного интерфейса UART и драйвера NI VISA отправляет команды для поворота сервомотора, подключенного к плате Aruino. Значение угла поворта вала сервомотора в виртуальном приборе изменется с помощью слайдера.
2. Написать программу для Arduino, под управлением которой сервомотор вращается последовательно по часовой стрелке, а затем против часовой стрелки. В рабочем цикле программы позиция сервомотора изменяется по формуле: pos = pos + step, или pos =+ step где pos - текущая позиция, угол поворота, сервомотора, в градусах, step - шаг изменения угла поворота. Измените нижеприведенный пример прошивки так, чтобы 1) вращение сервомотора происходило в пределах от 45 до 135 градусов; 2) по часовой стрелке сервомотор вращался с больше скоростью, чем в противоположном направлении Пример 1 #include <Servo.h> #define SERVO_PIN 9 #define MAX_POS 180 #define MIN_POS 0 int pos = 0; int h = 1; // Step of servo position. Servo myservo; void setup() { Serial.begin(9600); myservo.attach(SERVO_PIN); } void loop() { pos += h; if (pos > MAX_POS) { pos = MAX_POS; h = -1; } if (pos < MIN_POS) { pos = MIN_POS; h = 1; } myservo.write(pos); delay(15); }
2. Написать программу для Arduino, которая одновременно управляет поворотом сервомотора и скоростью мигания светодиода. Скорость мигания программно не должна зависеть от скорость вращения сервомотора. Создайте соответствующую клиентскую часть приложения в среде LabVIEW для управления сервомотором и светодиодом.
Пример 2. Получение контроллером от компьютера 2 однобайтовых чисел в 2-х байтовом пакете через последовательный интерфейс. Анализ пакета с помощью побитовых операций.
int byte1 = 0; int byte2 = 0; int inWord = 0; void setup() { Serial.begin(9600); byte1 = 130; byte2 = 221; } void loop() { if (Serial.available() > 0) { inWord = Serial.parseInt(); } byte1 = inWord && 0xFF; byte2 = (inWord && 0xFF00) >> 8; Serial.print("inWord = "); Serial.println(inWord); Serial.print("byte1 = "); Serial.println(byte1); Serial.print("byte2 = "); Serial.println(byte2); }
3. Написать клиент-серверное приложение, которое состоит из прошивки для Arduino и виртуального прибора LabVIEW. Приложение предназначено для управления одновременно двумя сервомоторами.