|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
T Búsqueda en este sitio:


.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

54.- Sensores. Acelerómetro. Orientación. Magnetómetro. Proximidad.

- La librería Phone también nos da la posibilidad de trabajar con los sensores del móvil o la tablet.

- Vamos a ver los sensores de aceleración, orientación. magnético y de proximidad.

- El sensor de aceleración nos da la aceleración en metros divididos entre segundos al cuadrado.
- Nos da la aceleración los tres ejes X, Y y Z.
Si dejamos el móvil sobre la mesa horizontal observamos que la aceleración en el eje Z es de 9,8 m/s2, la aceleración de la gravedad-
Si ponemos el móvil en vertical obtendremos la aceleración de la gravedad en el eje que esté en vertical.

- El vector aceleración lo compone la suma vectorial de los vectores X, Y y Z, es decir, la aceleración total de un punto será.
p = Sqrt ( x*x + y*y + z*z).

- El sensor de orientación nos da la orientación en grados sexagesimales con orientación al Norte, es decir si orientamos el sensor al norte nos dará 0º o tal vez 360º.

- El sensor de magnetismo también nos da el magnetismo en los ejes X, Y, Z, es un vector. Si ponemos un imán en las cercanías de este sensor, cambiará rápidamente sus valores, además también influirá en el sensor de orientación.

- El sensor de proximidad nos dará un 0 o un 1, según pongamos algo cerca de la parte superior del móvil, en su cercanía.

- Crea una nueva aplicación, añade un "layout" y sitúa 10 Label.
Copia y pega el siguiente código:

Código en B4A
Sub Process_Globals
    Dim Accelerometer As PhoneAccelerometer
    Dim Orientation As PhoneOrientation
    ' NOTA: El acelerómetro y la orientación también se pueden utilizar
    ' mediante PhoneSensors y su correspondiente TYPE_
    ' Para ver los datos utilizaremos Values.
    Dim Magnetic As PhoneSensors
    Dim Proximidad As PhoneSensors
    Dim timer1 As Timer
    ' Juan Antonio Villalpando
    ' juana1991@yahoo.com
 
    ' junio 2014
End Sub
 
Sub Globals
    Dim Label1, Label2, Label3 As Label
    Dim Label4, Label5, Label6 As Label
    Dim Label7, Label8, Label9 As Label
    Dim Label10 As Label
    ' Dim X, Y, Z As Double
End Sub
 
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout")
    If FirstTime Then
        timer1.Initialize("Timer1",30)
        Magnetic.Initialize(Magnetic.TYPE_MAGNETIC_FIELD)
        Proximidad.Initialize(Proximidad.TYPE_PROXIMITY)
    End If
        timer1.Enabled = True
End Sub
 
Sub Activity_Resume
    Accelerometer.StartListening("Accelerometer")
    Orientation.StartListening("Orientation")
    Magnetic.StartListening("Magnetic")
    Proximidad.StartListening("Proximidad")
    timer1.Enabled = True
End Sub
 
Sub Activity_Pause (UserClosed As Boolean)
    Accelerometer.StopListening
    Orientation.StopListening
    Magnetic.StopListening
    Proximidad.StopListening
    timer1.Enabled = False
End Sub
 
Sub Timer1_Tick
    ' Label1.text = X & " " & Y & " " & Z 
    ' Label1.Text = "Juan Antonio"
End Sub
 
Sub Accelerometer_AccelerometerChanged (X As Float, Y As Float, Z As Float)
    Label1.text = "X = " & X
    Label2.text = "Y = " & Y
    Label3.text = "Z = " & Z
End Sub
 
Sub Orientation_OrientationChanged (X As Float, Y As Float, Z As Float)
    Label4.text = "X = " & X
    Label5.text = "Y = " & Y
    Label6.text = "Z = " & Z
End Sub
 
' La forma utilizando TYPE_ y Values sería la mejor manera de hacerlo.
' para el Acelerómetro y para la Orientación.
Sub Magnetic_SensorChanged (Values() As Float)
    Label7.Text = "X = " & NumberFormat(Values(0), 0, 3)
    Label8.text = "Y = " & NumberFormat(Values(1), 0, 3)
    Label9.Text ="Z = " & NumberFormat(Values(2), 0, 3)
End Sub  
 
Sub Proximidad_SensorChanged (Values() As Float)
    Label10.Text = "X = " & NumberFormat(Values(0), 0, 3)
End Sub 

- La aceleración y la orientación se puede hacer de dos maneras, una es como está en el código anterior, declarándolas como PhoneAccelerometer y PhoneOrientation.
Otra manera sería declararlas como PhoneSensors, establecer su TYPE_ACCELEROMETER o TYPE_ORIENTATION y luego en sus subrutinas obtener los valores X, Y y Z mediante Values, como se ha realizado con el sensor Magnetico.
- Se prefiere hacerlo de esta última manera.

 

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información