Go Down

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


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

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.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).


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