Bom dia pessoal,

Bem, estou configurando o Arduíno para se comunicar com o LabView.

Consegui fazer um potenciômetro passar os dados para o programa(valor de 0 até 1023). Para isso usei a maneira mais simples de mandar dados para a Serial do Arduíno e no LabView apenas peguei os dados.

void setup()
{
 Serial.begin(9600)
}

void loop()
{
 Serial.println(analogRead(2));

 delay(100);
}

Agora o problema..., gostaria de obter o valor de 2 ou mais potenciômetros no Labview. Com isso tenho duvida de como proceder no código dentro do Arduino.

Devo criar uma string com todos os valores, depois os separo no programa do LAbView? ex: 4 primeiros números são do POT 1, os próximos 4 do POT 2 e assim por diante.

Existe maneiras melhores de fazer essa comunicação ?

Exibições: 460

Responder esta

Respostas a este tópico

Estou tentando fazer uma comunicação melhor. 

Estou tendo problemas quanto a trabalhar com Char, neste novo código que montei esta vindo com "interferências" no valor. Nao sei ao certo como fazer isso nao ocorrer.

Neste aqui basta digitar a case e o valor que eu quero para ascender(1) ou apagar(0) o led correspondente.

exemplo:     digito A1  -  O led da case A vai para HIGH

                  digito B0 - O led da case B vai para LOW

Mas com essa interferência nao declara corretamente o valor 1 ou 0, na case estra entrando normalmente.

Código: 

void setup()
{
Serial.begin(9600);

pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);

digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 0);
digitalWrite(11, 0);
}

void loop()
{
if(Serial.available()>0)
{
char local = Serial.read(); //Local define onde ira atuar o dado recebido
char val = Serial.read(); // VAlor para o digital Write - Low(0)-High(1)

Serial.println(" Case letra : ");
Serial.println(local);
Serial.println(" Valor numero : ");
Serial.println(val);

switch(local)
{
case 'A':
digitalWrite(8, val);
Serial.println(val);
break;
case 'B':
digitalWrite(9, val);
break;
case 'C':
digitalWrite(10, val);
break;
case 'D':
digitalWrite(11, val);
break;
}
}
}

Alguém tem alguma dica do que pode ser ?

Consegui resolver o problema, pelo menos usando o Serial Monitor consigo comandar corretamente, Agora é mais programar no labView.

String EntradaString = "";
boolean EntradaCompleta = false;

void setup()
{
Serial.begin(9600);

pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);

digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 0);
digitalWrite(11, 0);
}

void loop()
{
if(EntradaCompleta)
{
Serial.println(EntradaString);

int val = EntradaString[1] - 48;

switch(EntradaString[0])
{
case 'A':
digitalWrite(8, val);
break;
case 'B':
digitalWrite(9, val);
break;
case 'C':
digitalWrite(10, val);
break;
case 'D':
digitalWrite(11, val);
break;
}

EntradaString = "";
EntradaCompleta = false;
}

}


void serialEvent()
{
while (Serial.available())
{
char char_de_Fora = (char)Serial.read();
EntradaString += char_de_Fora;
if (char_de_Fora == '\n')
{
EntradaCompleta = true;
}
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço