You are on page 1of 8

COMUNICACIN ARDUINO C#

INTERFACES
Joel Merino Carrera

INTRODUCCION
La comunicacin serial entre el Arduino y nuestra computadora facilita la operacin de muchos sistemas. El objetivo es poder imprimir valores, resultados, etc., de lo que sucede con nuestra placa Arduino en una ventana de nuestra computadora. Por ejemplo, si estamos trabajando con un LED podemos imprimir en pantalla el valor de la intensidad de ese LED, o si estamos haciendo lecturas anlogas nos ayudar a saber el valor de la lectura e imprimirlo en una ventana de nuestra computadora. Primero que nada vamos a hablar un poco acerca de que trata la comunicacin serial. Comunicacin Serial La comunicacin serial es un protocolo de envio de informacin a traves de computadoras. El protocolo consiste en enviar y recibir una secuencia de bits, es decir, enviar o recibir un bit a la vez a un ritmo o frecuencia acordada entre las dos computadoras. Actualmente la comunicacin serial ya no es muy usada entre computadoras personales/de escritorio ya que ha sido reemplazado por protocolos ms avanzados como el puerto USB. Nuestra tarjeta Arduino posee comunicacin serial para poder hacer intercambio de informacin con el PC u otros dispositivos. La comunicacin serial puede hacerse a travs de los pines digitales 0 (RX) y 1 (TX) as como con el PC mediante USB (es el que utilizaremos en esta leccin).

ON/OFF HABILITACION DE PUERTO GRAFICACION


En este programa se muestra el paso de datos, el programa habilitara el puerto que uno seleccin siempre y cuando este sea correcto.

private void frmControl_FormClosing(object sender, FormClosingEventArgs e) { if (serialPort1.IsOpen) serialPort1.Close(); }

private void btnEncendido_Click(object sender, EventArgs e) { try { serialPort1.Write("1"); txtEstado.Text = "LED esta encendido"; btnEncendido.Enabled = false;

btnApagado.Enabled = true; //estadoled = true; } catch { MessageBox.Show("abre el puerto"); } }

private void btnApagado_Click(object sender, EventArgs e) { try { serialPort1.Write("0"); txtEstado.Text = "LED esta apagado"; btnEncendido.Enabled = true; btnApagado.Enabled = false; //estadoled = false; } catch { MessageBox.Show("verifica la configuracion"); } }

private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (clikPuerto.Checked) { try { if (!serialPort1.IsOpen) //esta es v cuando el puerto esta cerrado { serialPort1.Open(); clikPuerto.BackColor = Color.Green; //yellow green

clikPuerto.Text = "Puerto habierto"; } } catch { MessageBox.Show("algo sali mal al abri el puerto"); clikPuerto.Checked = false; } } else { try { if (serialPort1.IsOpen) { serialPort1.Close(); clikPuerto.BackColor = Color.Red; clikPuerto.Text = "puerto cerrado"; } } catch { MessageBox.Show("algo sali mal al cerrar el puerto"); } } }

private void button1_Click(object sender, EventArgs e) { frmGrafica obj = new frmGrafica(); obj.Visible=true; }

Como se muestra primero checa si el puerta esta abierto o cerrado e inmediatamente despus manda una seal segn el estado

Mostrndonos la grafica se los pulsos de informacin recibida, de esta manera podemos darnos cuenta como podemos habilitar el puerto. Dentro de la parte grafica tambien se puede trabajar en paralelo con arduino, gracias a que los datos recibidos por arduino son datos numricos o de igual manera pueden ser datos lgicos como se utilizaron en la valoracin del puerto, ahora bien la lectura de estos datos, segn la operacin; llegan a ser de manera inmediata, asi es k en este ejemplo para que se pudiera ver la diferencia entre un dato y otro se hizo un recorrido que vaya leyendo los datos en fraccin de segundo lo nico que se va a controlar es la cantidad de volts que se manejan

public partial class frmGrafica : Form { int contador = 0 public frmGrafica() { InitializeComponent();

private void chkInicialMestreo_CheckedChanged(object sender, EventArgs e) { timerMuestras.Enabled = chkInicialMestreo.Checked; btnCopiar.Enabled = !chkInicialMestreo.Checked; }

private void SBVoltaje_Scroll(object sender, ScrollEventArgs e) { lblVoltaje.Text=(5- SBVoltaje.Value).ToString()+" Volts"; }

private void btnCopiar_Click(object sender, EventArgs e) { dataGridViewMuestras.Rows.Insert(0, "Hora", "Valor"); dataGridViewMuestras.SelectAll(); DataObject dataobj = dataGridViewMuestras.GetClipboardContent(); Clipboard.SetDataObject(dataobj, true); }

private void timerMuestras_Tick(object sender, EventArgs e) { chartMuestra.OpenData(SoftwareFX.ChartFX.Lite.COD.Values,1,(1+contador)); contador++; chartMuestra.Value[0,contador]=5-SBVoltaje.Value; chartMuestra.CloseData(SoftwareFX.ChartFX.Lite.COD.Values); dataGridViewMuestras.Rows.Insert(0, DateTime.Now.ToString(),(5-SBVoltaje.Value).ToString()); }

You might also like