Italian Accellerometri o Giroscopi

ivanomonti

Expert
Licensed User
Longtime User
Avrei bisogno di memorizzare dati che arrivano da questi sensori, dove in caso di urto accidentale mi segnali i dati di tale urto.

Dove trovo alcune info e come posso iniziare secondo voi.
 

ivanomonti

Expert
Licensed User
Longtime User
che centra arduino, forse non mi sono espresso bene, devo monitorare il movimento del dispositivo in caso di urto accidentale dello stesso ... mi cade dal tavolo, lo tiro in testa ai ladri, corro e volo, vado in bici e voglio monitorare la mia attività dai sensori.

Arduino e cosa a parte che potrebbe servire per la domotica se non erro.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Gli accelerometri (una L sola !) ed i giroscopi sono due cose ben diverse. I primi sono assai diffusi, i secondi molto molto meno.
Ti consiglio di crearti un progettino che esamina come si evolvono nel tempo i valori degli accelerometri lungo i 3 assi X, Y e Z (VX, VY e VZ).
Poi fai cadere lo smartphone ed esamini i valori, vai in bici ed esamini i valori, gli dai una martellata ed esamini i valori, ecc. ecc.
Quest'ultimo evento (la martellata) lascialo però per ultimo.
Alla fine sarai in grado di leggere i 3 valori X, Y e Z e fissare un massimo oltre il quale scatenare l'evento che vuoi tu.
Essi misurano tutti l'accelerazione in m/sec^2.

In Process_Globals inserisci :
Dim sensor As PhoneSensors

In Activity_Create inserisci :
sensor.Initialize(sensor.TYPE_ACCELEROMETER)

Poi :
Sub Activity_Resume
sensor.StartListening("sensor")
End Sub
Sub Activity_Pause (UserClosed As Boolean)
sensor.StopListening
End Sub

Infine :
B4X:
Sub sensor_SensorChanged (Values() As Float)
    Dim now As Long
    Dim Minuti As Int, Secondi As Float
    Dim strMinuti As String , strSecondi As String
    Dim t As String
    Dim S As String
    Dim VX As Float
    Dim VY As Float
    Dim VZ As Float

    LbX.Text  = CStr(Values(0))
    LbY.Text  = CStr(Values(1))
    LbZ.Text  = CStr(Values(2))
    '
    DateTime.TimeFormat = "hh:mm:ss.SSS a"
    now = DateTime.now
    t = DateTime.Time(now)
    S=t
    t=Right(t,12)
    t=Left(t,9)
    S=t
    strMinuti=Left(S,2)
    strSecondi=Right(S,6)
    Minuti=strMinuti
    Secondi=strSecondi
    MS=60*Minuti+Secondi
    If recording Then
        VX=Values(0)
        VY=Values(1)
        VZ=Values(2)
        tw.Write(CStr(VX) & "," & CStr(VY) & "," & CStr(VZ) & "," & CStr(MS) & Chr(13) & Chr(10))
        TotRec=TotRec+1
    Else
    End If
 End Sub
 

ivanomonti

Expert
Licensed User
Longtime User
Grazie AlpVir oggi provo il tuo codice e per la martellata credo sarà come da te proposta ... per ultima hahahahha per fortuna ho sempre un android di battaglia, djveleno vado a leggere anche quell'articolo da te proposto.
 
Top