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.
This... is a hobby.

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");
       
   }
}

This... is a hobby.

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