Go Down

Topic: Ler um determinado pino em C# (Read 1 time) previous topic - next topic

renatop

Fala pessoal,

Existe uma forma de ler um pino específico através do C#?

Por exemplo, eu quero saber se o pino 22 está em HIGH ou em LOW....
ai no C# eu usaria algo do tipo:

bool/int/string pin22 = serialPort1.Read(pino22...);

OU

Manter uma comunicação constante do arduino com a aplicação mas eu só registrar as mudanças de estado do pino 22?

bubulindo

Tens de definir um protocolo para isso.

O mais simples que podes implementar é manter a comunicacão aberta no C# e o Arduino enviar-te o estado do pino em todos os ciclos.

Code: [Select]


setup() {...}

void loop(){

Serial.println(digitalRead(22));

}


O ideal é implementar algo para o computador fazer um polling do Arduino (deixando-te assim saber quando ´€ que o Arduino deu o berro ou foi desligado, por exemplo).

Code: [Select]

C# seria algo assim

serialPort1.Write(S22);

E no Arduino:

Code: [Select]


...
if (Serial.available() > 3) {
   if (Serial.read() == 'S') {
       int number = (10 * (Serial.read()-48)) + (Serial.read() - 48);
       Serial.print(digitalWrite(number));
   }
}

Este código tem uma série de problemas que podem acontecer, mas mostra a funcionalidade que pretendes.
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).

renatop

Entendo..
Achei que fosse possivel receber o dado cru do arduino e ser capaz de interpretar no C#...
E saber de qual pino veio o dado e em qual estado...

bubulindo

Como assim, dado cru?

Tu podes adicionar o que quiseres ao protocolo...

Podes fazer algo assim no Arduino:

Code: [Select]
if (Serial.available() > 3) {
   if (Serial.read() == 'S') {
       int number = (10 * (Serial.read()-48)) + (Serial.read() - 48);
       Serial.print("S");
       unsigned char status = digitalRead(number)
       Serial.print(number);
       Serial.print(":");
       Serial.print( status == HIGH ? "HIGH" : "LOW");
       
   }
}

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).

mmoscz

O arduino é como um "outro computador", rodando um programa que você mandou ele, em C# você pode se comunicar com o arduino, pois seu programa em C# está rodando no seu computador, não no Arduino...
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

Go Up