Arduino y Gambas
Ejemplo 4
Usando Pulsadores
Aquí os dejo un ejemplo, que me ha pedido Diego carpio
Se trata de usar dos pulsadores, conectados al arduino y que con gambas mostremos en el monitor del pc, cual de ellos se ha pulsado.
Circuito de los dos pulsadores:
En gambas creo un formulario con los combobox de las caracteristicas de la conexión serial (en principio hay que dejarlos igual como aparecen en la captura) y pongo dos ToggleButton que van a cambiar de color según el pulsador de la protoboard de arduino que se pulse.
Aqui os dejo una captura del programa en funcionamiento:
Como siempre son 2 programas, uno que debemos grabar en el arduino y otro el de gambas (realizado en la version de gambas3.4.1)
1º Para el arduino:
int
dato1;
int
dato2;
int
inPin1=8;
int
inPin2=9;
void
setup()
{
//
Inicializamos puerto serie a 9600
bps
Serial.begin(9600);
pinMode(inPin1,INPUT);
pinMode(inPin2,INPUT);
//
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()
{
dato1=digitalRead(inPin1); // lee datos del pin nº 8
dato2=digitalRead(inPin2); // lee datos del pin nº 9
if
(dato1==1)
{
Serial.println(1); // escribo en el puerto serie el numero 1
digitalWrite(13,
1); // enciendo el led del arduino
delay(450); //espero casi medio segundo
digitalWrite(13,
0); //apago el led de arduino
}
if
(dato2==1)
{
Serial.println(2); // escribo en el puerto serie el numero 2
digitalWrite(13,
1);
delay(450);
digitalWrite(13,
0);
}
}
'
Gambas class file
Public
valor As
Integer
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"
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"
End
If
Catch
Message.Info("Error:"
&
Error.text)
End
Public
Sub
SPort_Read()
Dim
s As
String
Read #Sport, s, Lof(Sport)
TextArea1.Text
=
s 'TextArea1.Text
& s
If
IsNumber(s) Then
valor =
Val(s)
If
valor =
1
Then
'recibo el numero 1, cambio de color el boton
ToggleButton1.Background
=
Color.red
Wait 0.4
ToggleButton1.Background
=
Color.Gray
Endif
If
valor =
2
Then
'recibo el numero 2, cambio de color el boton
ToggleButton2.Background
=
Color.green
Wait 0.4
ToggleButton2.Background
=
Color.Gray
Endif
End
Public
Sub
ComboBox1_Click()
Sport.FlowControl
=
ComboBox1.Index
End
Public
Sub
Form_Open()
Me.center
cmbSpeed.Index
=
cmbSpeed.Find("9600")
ComboBox1.Index
=
0
ToggleButton2.Background
=
Color.Gray
ToggleButton1.Background
=
Color.Gray
End
Os dejo aquí los enlaces de descarga de los programas....
Enlace de descarga del programa en gambas3.4: enlace
Para ver más ejemplos de pulsadores en Arduino: http://www.hispavila.com/3ds/atmega/pulsadores.html
Nota: