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