Mi primera aplicacion Gambas+Arduino

Acabo de comprarme un arduino, y tengo experiencia en la programación con Gambas (parecido a Visual Basic pero para Gnu/Linux).

He hecho esta simple aplicación, "encender y apagar un led, pulsando una imagen de un boton en la pantalla", lo pongo aqui, porque es un ejemplo "completo y básico" de la forma de comunicarse (recibir y enviar información) entre Arduino y Gambas.

Esta es la programación del arduino:

int dato;
void setup()
{
// Inicializamos puerto serie a 9600 bps
Serial.begin(9600);
pinMode(13, OUTPUT);
// Enviamos "Hello World" con salto de línea al final
Serial.println("Conectado con el Arduino. Hello world!");
//arduino manda esta cadena al PC
}
void loop()
{
//¿Existen datos por el puerto serie?
if (Serial.available()) {
//Guardamos el dato por la variable dato
dato=Serial.read();
// Serial.println(dato);
switch (dato) {
case 49:
// escribo 1 en el PC y lo envio
//Apagamos el led 13
digitalWrite(13,LOW);
Serial.println("Arduino: He apagado el led 13");
break;
case 48:
// escribo 0 en el PC y lo envio al arduino
//Encendemos el led 13
digitalWrite(13,HIGH);
Serial.println("Arduino: He encendido el led 13");
break;
}
}
}

Y esta es la programación en Gambas (se conecta como si fuera un puerto serie):

' Gambas class file
PUBLIC encendido AS Boolean

PUBLIC SUB Form_Close()
IF Sport.Status = Net.Active THEN CLOSE Sport
END

PUBLIC SUB Button1_Click()
IF Sport.Status = Net.Active THEN
CLOSE Sport
Button1.Text = "Abrir"
Label3.Enabled = FALSE
ToolButtonLed.enabled = FALSE
ELSE
' Line parameters
Sport.PortName = TxtPort.Text
Sport.Speed = CmbSpeed.Text
Sport.Parity = CmbParity.Index
Sport.DataBits = CmbData.Text
Sport.StopBits = CmbStop.Text
' keep DTR on
Sport.FlowControl = ComboBox1.Index
Sport.Open()

TextArea1.Text = "Port Abierto : " & Sport.PortName & " Settings : " &
Sport.Speed & "," & Sport.Parity & "," & Sport.DataBits & "," &
Sport.StopBits & Chr(13) & Chr(10)
Button1.Text = "Cerrar"
Label3.Enabled = TRUE
ToolButtonLed.enabled = TRUE
END IF
END

PUBLIC SUB SPort_Read()
DIM s AS String
READ #Sport, s, Lof(Sport)
TextArea1.Text = TextArea1.Text & s
END


PUBLIC SUB ComboBox1_Click()
Sport.FlowControl = ComboBox1.Index
END


PUBLIC SUB Form_Open()
ME.center
cmbSpeed.Index = cmbSpeed.Find("9600")
END


PUBLIC SUB ToolButtonLed_Click()
IF encendido = FALSE THEN
TRY PRINT #Sport, "0" 'enciendo led
IF ERROR THEN Message.Error("tienes que abrir el puerto")
ToolButtonLed.Picture = Picture["ledVerdeEncendido.jpg"]
encendido = TRUE
ELSE
PRINT #Sport, "1" 'apago led
ToolButtonLed.Picture = Picture["ledVerdeApagado.jpg"]
encendido = FALSE
ENDIF
END

En este enlace Gambas Mis Programas y el Softwarelibre: Mi primera aplicacion con Gambas y Arduino podeis ver un video , capturas de pantallas y os podeis descargar el codigo fuente completo.

Saludos

Gracias, seguro que a los que están empezando les viene muy bien :slight_smile:

Si señor! Suele ser una pregunta bastante común entre los iniciados, asi que ten por seguro que les va a venir bastante bien

que potente combinación.
notable lo rápido que se puede hacer una aplicación con esto.