Go Down

Topic: Funções parametrizadas (Read 1 time) previous topic - next topic

nunoagameiro


Ora boas.

São as minhas primeiras "aventuras" com o Arduino, assim como a minha primeira participação no fórum.

Estou a desenvolver um projecto com recurso ao Motor Shield da Adafruit, para trabalhar com 2 motores de passo, a partir do VB.NET.

Para a minha duvida, o codigo  que interessa é o seguinte:
void loop()
{
  if (Serial.available()>0)
  {
    incomingMessage = Serial.read();
   
   switch (incomingMessage)
   {
     case 'R':
     motor.step(100,FORWARD,DOUBLE);
     motor.release();
     break;
   }//switch 
  } //IF 
}//void

Até aqui tudo bem, nao ha que enganar.  A minha pergunta é: Como faço para chamar uma função com parametros a partir do VB ? Por exemplo, imaginem que quero, no VB, informar o Arduino quantos passos quero que o motor dê, em vez de estar a indicar 100 no loop?

Muito obrigado

bubulindo

Acho que estás no fórum errado.

Basicamente estás à procura de como enviar dados via porta série, e embora possa haver aqui quem te consiga ajudar, não será o sítio indicado para pedir informações relativamente a VB.net. :\

Se estás à procura dum protocolo de comunicação entre o Arduino e o VB.net, podes fazer algo assim:

Code: [Select]

#include <stdlib.h>

unsigned char temp[4];
temp[3] = '\0';//terminator for atoi()
int numero_passos = 0;

void loop()
{
  if (Serial.available()>4) //imaginemos que pretendemos receber a direcção do passo e número de passos.
  {
    incomingMessage = Serial.read();
   
   switch (incomingMessage)
   {
     case 'R':
         for (unsigned char i=0; i<3; i++)
             temp[i] = Serial.read();   
         numero_passos = atoi(temp);

         motor.step(numero_passos,REVERSE,DOUBLE);
         motor.release();
         break;
     case 'F':
          for (unsigned char i=0; i<3; i++)
             temp[i] = Serial.read();   
         numero_passos = atoi(temp);

         motor.step(numero_passos,FORWARD,DOUBLE);
         motor.release();
         break;


     default:
         
         break;
   }//switch 
  } //IF 
}//void


O que precisas depois é de enviar uma string no formato YXXX em que Y é o sentido e XXX é o número de passos.
This... is a hobby.

nunoagameiro


Se estou no fórum errado, as minhas desculpas  :~   A intenção não era tanto a de tirar dúvidas quanto ao VB, mas mais em relação ao código no Arduino.

De qualquer forma, muito obrigado, já consegui  :). Adicionei inclusive a possibilidade de escolher a velocidade do motor no mesmo comando.

Obrigado


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy