Gambas y Arduino
Ejemplo 5
Medir distancias y decirlas en voz alta
Os dejo aqui otro ejemplo de gambas y arduino, esta vez usando un sensor de distancias (el HC-SR04).
El programa de arduino, lee la distancia y la escribe en el puerto serial.
Lo que hago con gambas es leer la entrada del puerto serie y usar el comando espeak
para dictar la distancia.
Montaje:
Captura del programa funcionando:
Código para arduino:
int
trigger=11;
//
Arduino pin tied to trigger pin on the ultrasonic sensor.
int
echo=
12;
//
Arduino pin tied to echo pin on the ultrasonic sensor.
float
distance;
int
val;
float
lim;
void
setup()
{
Serial.begin(9600);
//
Open serial monitor at 9600 baud to see ping results.
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
}
void
loop()
{
digitalWrite(trigger,LOW);
delayMicroseconds(5);
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
distance=pulseIn(echo,HIGH);
distance=distance*0.0001657;
//
Serial.println("Distancia:");
Serial.println(distance);
delay(200);
}
El programa en gambas
'
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
valor As
Integer
Dim
cadenas As
String[]
Dim
cadena As
String
Dim
s As
String
Read #Sport, s,
Lof(Sport)
If
s <> ""
Then
cadenas =
Split(s,
"\n\r")
Print
cadenas[cadenas.count
-
1]
valor =
cadenas.count
-
1
While
cadenas[valor] =
""
valor =
valor -
1
Wend
cadena =
"\"Distancia
es "
& cadenas[valor] & "\""
LabelDistancia.text
=
cadena
Exec
["espeak",
"-v",
"es",
cadena]
Wait 3
Endif
End
Public
Sub
ComboBox1_Click()
Sport.FlowControl
=
ComboBox1.Index
End
Public
Sub
Form_Open()
Me.Caption
=
"Medidor
de distancia por Arduino"
Me.center
cmbSpeed.Index
=
cmbSpeed.Find("9600")
ComboBox1.Index
=
0
End
Enlace de descarga del código:
Nota:
fuentes:
http://zygzax.com/2012/09/14/medir-distancias-con-arduino-sensor-us-100-o-hc-sr04-p2/
http://fritzing.org/projects/hc-sr04-led-bar/