03-22-2020 03:41 AM
Hello! I'm having trouble connecting the arduino Nano to Labview. I work through the Labview 2014 interface to receive a signal from a fluid flow sensor transmitting a discrete signal through an arduino nano. I loaded the Labview interface for Arduino library through VI Package Manager. Then, in the Arduino 1.0.1 program, I launched the sketch of Lifa Base, which, as I understand it, allows the signal to be transmitted through the ports to the COM port. I wrote a script that, in theory, should transmit units with a certain frequency, while I blow through a sensor connected to port D2. A separate script for arduino for calculating the flow rate works and produces normal values (available in the attachment). But Labview passes zeros, as if I did not blow and gives an error 5002.
Maybe the problem is that Labview doesn't see the board like Nano? Help solve this problem!
const uint8_t pinSensor = 2; // Определяем № вывода Arduino, к которому подключён датчик расхода воды
uint8_t intSensor; // Объявляем переменную для хранения № прерывания для вывода pinSensor
volatile uint16_t varCount = 0; // Определяем переменную для подсчёта количества импульсов поступивших от датчика
uint32_t varTime = 0; // Определяем переменную для хранения времени последнего расчёта
uint8_t varResult = 0; // Определяем переменную для хранения рассчитанной скорости потока воды
//
void funCountInt(){varCount++;} // Определяем функцию, которая будет приращать значение счётчика импульсов
//
void setup(){ //
Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта
pinMode(pinSensor, INPUT); // Конфигурируем вывод к которому подключён датчик, как вход
intSensor = digitalPinToInterrupt(pinSensor); // Определяем № прерывания который использует вывод pinSensor
attachInterrupt(intSensor, funCountInt, RISING); // Назначаем функцию funCountInt как обработчик прерываний intSensor при каждом выполнении условия RISING - переход от 0 к 1
if(intSensor<0){Serial.print("CEHCOP HE HA TOM HOMEPE");} // Выводим сообщение о том, что датчик подключён к выводу не поддерживающему внешнее прерывание
} //
//
void loop(){ //
if((varTime+1000)<millis() || varTime>millis()){ // Если c момента последнего расчёта прошла 1 секунда, или произошло переполнение millis то ...
varResult=varCount/7.5; // Рассчитываем скорость потока воды: Q = F/7,5 л/мин
varCount=0; varTime=millis(); // Сбрасываем счётчик и сохраняем время расчёта
} // (количество импульсов от датчика varCount равно частоте в Гц, так как расчёт происходит 1 раз в секунду)
Serial.println((String) "CKOPOCTb = "+varResult+" L/MIN"); // Выводим скорость потока воды, показания которой будут меняться 1 раз в секунду
}