Bom dia!
Amigos ola tudo bem? Vocês pode me ajudar pois fiz um programa em vb e Arduíno usando 2 sensores e enviando para serial. Como separa as duas leitura e exibir numa textbox?Vc tem um exemplo?
bem como esto começando agora to fazendo só uns programinhas de testes.
Bem, vou te explicar como fiz o programa estou enviando do Arduíno para serial a leitura de 2 sensores
no VB eu to conseguindo ler estes valores mas só que ta tudo junto gostaria de saber como enviar as leituras para 2 texbox diferente cada uma lendo um sensor.
Tags:
Bom dia amigo
bem como esto começando agora to fazendo só uns programinhas de testes.
Bem, vou te explicar como fiz o programa estou enviando do Arduíno para serial a leitura de 2 sensores
no VB eu to conseguindo ler estes valores mas só que ta tudo junto gostaria de saber como enviar as leituras para 2 texbox diferente cada uma lendo um sensor.
Bem amigo segue códigos só me desculpe pelo código fraco pois estou pegando códigos de vários posts
e tentando se vc poder me ajudar te agradeço eu quero que os sensores fiquem sendo monitorados constantemente.
Codigo arduino
int led = 12;
void setup()
{
pinMode(led,HIGH);
Serial.begin(9600);
}
void loop()
{
char aux = Serial.read();
if (aux =='a' )
{
digitalWrite(led,HIGH);
Serial.println("Ligado");
}
if (aux == 'b')
{
digitalWrite(led,LOW);
Serial.println("Desligado");
}
{ int sensorValue = analogRead(A0);
// print out the value you read:
Serial.print("Sensor 01 :");
Serial.println(sensorValue);
delay(1000);
} // delay in between reads for stability
{ int sensorValue = analogRead(A1);
// print out the value you read:
Serial.print("Sensor 02 :");
Serial.println(sensorValue);
delay(1000);
} // delay in between reads for stability
}
Código VB
Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated
SerialPort1.Open()
SerialPort1.Write("b")
System.Threading.Thread.Sleep(250)
'Recebe'
TextBox1.Text = SerialPort1.ReadExisting()
OvalShape2.Visible = True
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Define a taxa de transferencia ente o pc e o arduino'
SerialPort1.BaudRate = 9600
'Paridade=name'
SerialPort1.Parity = System.IO.Ports.Parity.None
'Bits de dados'
SerialPort1.DataBits = 8
'Stop bits = 1 '
SerialPort1.StopBits = System.IO.Ports.StopBits.One
'Endereço / nome da serial'
SerialPort1.PortName = "COM3"
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'envia'
SerialPort1.Write("a")
'Espera 250 milisegundos'
System.Threading.Thread.Sleep(250)
'Recebe'
TextBox1.Text = SerialPort1.ReadExisting()
OvalShape1.Visible = True
OvalShape2.Visible = False
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim i As Integer
'envia'
SerialPort1.Write("b")
'Espera 250 milisegundos'
System.Threading.Thread.Sleep(250)
'Recebe'
TextBox2.Text = SerialPort1.ReadExisting()
Eu acredito que a melhor alternativa para o seu problema é fazer duas leituras (uma para cada sensor), evitanto futuros problemas.
Voce pode fazer isso adicionando uma restriçao no arduino para enviar a leitura somente quando receber o comando do computador.
Por exemplo, substitua o codigo do arduino
int sensorValue = analogRead(A0);
Serial.print("Sensor 01 :");
Serial.println(sensorValue);
delay(1000);
int sensorValue = analogRead(A1);
Serial.print("Sensor 02 :");
Serial.println(sensorValue);
delay(1000);
para
if (aux=='c')
{
int sensorValue = analogRead(A0);
Serial.print("Sensor 01 :");
Serial.println(sensorValue);
}
if (aux=='d')
{
int sensorValue = analogRead(A1);
Serial.print("Sensor 02 :");
Serial.println(sensorValue);
}
E no VB voce coloca um timer, na propriedade Interval voce escolhe o intervalo que deseja para a leitura dos sensor, e coloca o seguinte codigo no timer
SerialPort1.Write("c")
System.Threading.Thread.Sleep(250)
TextBox1.Text = SerialPort1.ReadExisting().Replace("Sensor 01 :","")
System.Threading.Thread.Sleep(250)
TextBox2.Text = SerialPort1.ReadExisting().Replace("Sensor 02 :","")
System.Threading.Thread.Sleep(250)
Isso vai fazer a leitura separadamente e ainda retirar "Sensor 01 :" ou "Sensor 02 :" que o arduino envia junto da leitura, e envia a leitura a seu TextBox correspondente.
Só nao esqueça de mudar as propriedade do timer Enable para True e Interval para o intervalo que voce deseja.
Espero ter ajudado.
Qualquer duvida, nao hesite em perguntar
Muito obrigado meu amigo ficou ótimo ! Que Deus te abençoe bastante.
Pessoal primeiramente acostumem-se a não usar delay, isso é gambiarra, deixa o programa amarrado,
Nelcimar: Primeiramente voce precisa saber a forma que esta recebendo estes dados no PC, exemplo se voce manda no arduino a variavel X com valor de 1023
Println(X);
no seu PC voce pode receber de varias formas, a que mais aconselho é voce receber via string e converter essas string para real ou inteiro, voce quem vai decidir, aconselho voce a criar um cabeçalho de comunicacao proprio para tratar esses dados, exemplo simples
//no arduino
Print('#'); //indica comeco da comunicacao
Print(temperatura); //digamos que essa variavel tenha valor 1023
Print('&'); //indica separacao de uma variavel para outra
Print(umidade); //digamos que esta variavel tenha valor 512
Print(&&); //indica final da transmissao e valida os dados
println(); //aqui voce esta mandando tudo que esta bufferizado
// no pc
no exemplo de recepcao do teu portCOM
declara uma variavel 'palavra' do tipo string
declara um variavel temperatura do tipo real
declara um variavel umidade do tipo real
faz a tua variavel palavra receber a string via serial
em delphi=
palavra:=comport1.readstring(); a tua variavel receberá o comando '#1023&512&&'
feito isso voce compara o primeiro caracter e os dois ultimos, se o primeiro for diferente de #, ou se os dois ultimos forem diferentes de && é pq algo se perdeu no caminho, dai voce invalida o que recebeu, se for verdadeiro é pq tudo chegou como deveria, dai voce pode tratar sua string de recepcao
comando '#1023&512&&'
resumindo voce trata a string que recebeu e desmembra ela, obtendo assim os valores que precisa.
Muito obrigado meu amigo ficou ótimo ! Que Deus te abençoe bastante.
como trata a string que recebeu e desmembra
poderia me enviar um exemplo de como fazer isto no VB 6
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por