Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



sábado, 4 de mayo de 2013

Arduino y Gambas: Ejemplo 4: Usando Pulsadores

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

2º El programa de Gambas3:

' 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 de arduino: enlace
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: