B4J Code Snippet [IoT] Raspberry 2/piFace: Get status of digital inputs (and switches)

Discussion in 'B4J Code Snippets' started by KMatle, Nov 4, 2015.

  1. KMatle

    KMatle Expert Licensed User

    Here's another one stripped from Erel's examples (raw, no extra's to understand how the basics work). It will monitor all 8 digital inputs (0-7) and display the status.

    You will need the jPi4J library. Get it from this post http://www.b4x.com/android/forum/threads/iot-jpi4j-raspberry-pi-gpio-controller.37493/(under the video) and copy it into the (additional) librariers folder. Create a new project (this example is a non-ui, but the code can be used 1:1 for a ui app, except the line "StartMessageLoop".

    Code:
    'Non-UI application (console application)

    #Region  Project Attributes
       
    #CommandLineArgs:
       
    #MergeLibraries: true
    #End Region

    Sub Process_Globals

       
    Private controller As GpioController
       
    Private pin0,pin1,pin2,pin3,pin4,pin5,pin6,pin7 As GpioPinDigitalInput
     
    End Sub

    Sub AppStart (Args() As String)
       controller.InitializePiFace(
    0x400)
     
       pin0.Initialize(
    "pin0",0)
       pin1.Initialize(
    "pin1",1)
       pin2.Initialize(
    "pin2",2)
       pin3.Initialize(
    "pin3",3)
       pin4.Initialize(
    "pin4",4)
       pin5.Initialize(
    "pin5",5)
       pin6.Initialize(
    "pin6",6)
       pin7.Initialize(
    "pin7",7)
            
       StartMessageLoop
    End Sub

    Sub Pin0_StateChange(State As Boolean)
       
    Log("Pin0 StateChange event: " & State)
    End Sub
    Sub Pin1_StateChange(State As Boolean)
       
    Log("Pin1 StateChange event: " & State)
    End Sub
    Sub Pin2_StateChange(State As Boolean)
       
    Log("Pin2 StateChange event: " & State)
    End Sub
    Sub Pin3_StateChange(State As Boolean)
       
    Log("Pin3 StateChange event: " & State)
    End Sub
    Sub Pin4_StateChange(State As Boolean)
       
    Log("Pin4 StateChange event: " & State)
    End Sub
    Sub Pin5_StateChange(State As Boolean)
       
    Log("Pin5 StateChange event: " & State)
    End Sub
    Sub Pin6_StateChange(State As Boolean)
       
    Log("Pin6 StateChange event: " & State)
    End Sub
    Sub Pin7_StateChange(State As Boolean)
       
    Log("Pin7 StateChange event: " & State)
    End Sub

    Very nice documentation to see wiring examples: http://www.farnell.com/datasheets/1881551.pdf

    How to use:

    - Get a simple isolated wire. Strip both ends. Screw one end to port #9 (GND=Ground) at the edge (see the pictures, the green connectors)
    - start the bridge on the RB
    - connect the B4J bride from your desktop
    - start the app
    - put the loose end to ports 0-7 (=8)and watch the log
    - press the buttons/switches on the board

    Note: Switching the digital inputs 0-3 is the same as pressing the build in switches...

    What's next?

    You could use some reed contacts to check if windows/doors are opened and/or closed. The status' can be send using httputils (or direct via ntwork) to a server with a database. With that you could create an B4A app to check your home or let it notify you.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice