Vibra sense click is a low cost micro shock vibration sensor with a digital output which can be set as an Interrupt.

Click image for larger version  Name:	000.jpg Views:	1 Size:	38.9 KB ID:	124

Pins marked NC are not used. Only four pins marked red rectangle are available to use the module.

An expantion board for mikroBUS click modules helps you to place a click module on PHPoC Blue easily.


Click image for larger version  Name:	IMG_0199.jpg Views:	1 Size:	74.0 KB ID:	126

Click image for larger version  Name:	IMG_0200.jpg Views:	1 Size:	26.3 KB ID:	125

This example uses WebSocket to show sensor's output.



-init.php
PHP Code:
<?php
system
("php task0.php");
?>

-task0.php
PHP Code:
<?php
if(_SERVER("REQUEST_METHOD"))
    exit; 
// avoid php execution via http request

include_once "/lib/sd_340.php";
include_once 
"/lib/sn_tcp_ws.php";

define("PIN_EN"12);
define("PIN_INT"8);

uio_setup(0PIN_INT"in"); // INT
uio_setup(0PIN_EN"out"); // EN

uio_out(0PIN_EN1);

ws_setup(0"vibra""csv.phpoc");

$previous_state 0;
$current_state 0;

while(
1)
{
    
$current_state uio_in(0PIN_INT);
    if(
$previous_state != $current_state)
    {
        
$previous_state $current_state;
        if(
ws_state(0) == TCP_CONNECTED)
        {
            
ws_write(0"$current_state\r\n");
        }
    }
}
?>

-index.php
HTML Code:
<!DOCTYPE html>
<html>
<head>
<title>PHPoC / <?echo system("uname -i")?></title>
<meta name="viewport" content="width=device-width, initial-scale=0.7, maximum-scale=0.7">
<style> body { text-align: center; } </style>
<script>
var canvas_width = 95;
var canvas_height = 95;
var ws;
function init()
{
    var button = document.getElementById("button");

    button.width = canvas_width;
    button.height = canvas_height;

    button.style.backgroundImage = "url('/button_pop.png')";
}
function connect_onclick()
{
    if(ws == null)
    {
        var ws_host_addr = "<?echo _SERVER("HTTP_HOST")?>";
        var debug = document.getElementById("debug");

        if((navigator.platform.indexOf("Win") != -1) && (ws_host_addr.charAt(0) == "["))
        {
            // network resource identifier to UNC path name conversion
            ws_host_addr = ws_host_addr.replace(/[\[\]]/g, '');
            ws_host_addr = ws_host_addr.replace(/:/g, "-");
            ws_host_addr += ".ipv6-literal.net";
        }

        ws = new WebSocket("ws://" + ws_host_addr + "/vibra", "csv.phpoc");

        document.getElementById("ws_state").innerHTML = "CONNECTING";

        ws.onopen = ws_onopen;
        ws.onclose = ws_onclose;
        ws.onmessage = ws_onmessage;
    }
    else
        ws.close();
}

function ws_onopen()
{
    document.getElementById("ws_state").innerHTML = "<font color='blue'>CONNECTED</font>";
    document.getElementById("bt_connect").innerHTML = "Disconnect";

    button.style.backgroundImage = "url('/button_pop.png')";
}
function ws_onclose()
{
    document.getElementById("ws_state").innerHTML = "<font color='gray'>CLOSED</font>";
    document.getElementById("bt_connect").innerHTML = "Connect";

    ws.onopen = null;
    ws.onclose = null;
    ws.onmessage = null;
    ws = null;

    button.style.backgroundImage = "url('/button_pop.png')";
}
function ws_onmessage(e_msg)
{
    e_msg = e_msg || window.event; // MessageEvent

    if(e_msg.data == 0)
        button.style.backgroundImage = "url('/button_pop.png')";
    else if(e_msg.data == 1)
        button.style.backgroundImage = "url('/button_push.png')";
}

window.onload = init;
</script>
</head>

<body>
<p>
<h1>Vibra sense click</h1>
</p>

<canvas id="button"></canvas>

<h2>WebSocket <font id="ws_state" color="gray">CLOSED</font></h2>
<button id="bt_connect" type="button" onclick="connect_onclick();">Connect</button>
<span id="debug"></span

</body>
</html>