Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>GPIO-HBridge</title>
  <script src="https://r.chirimen.org/polyfill.js"></script>
</head>
<body>
  <h1>GPIO H-Bridge Motor drive (no PWM)</h1>
  <!-- http://www.kaltpost.de/?page_id=12 -->
  <p>Connect H-Bridge Motor Driver to GPIO 20,21</p>
  <input type="button" onclick="free()" value="FREE"></input>
  <input type="button" onclick="fwd()" value="FOWARD"></input>
  <input type="button" onclick="rev()" value="REVERSE"></input>
  <input type="button" onclick="brake()" value="BRAKE"></input>
  <div>
  <table>
</body>
</html>
 
// noprotect
// Hブリッジモータードライバは正転[1,0]・逆転[0,1]・ブレーキ[1,1]・フリー[0,0]の4状態を
// GPIOの2つの信号線を使って指示します
var portAddrs = [20,21]; // HブリッジコントローラをつなぐGPIOポート番号
var portPromise;
onload =async function(){ // ポートを初期化するための非同期関数
  console.log("onload");
  var gpioAccess = await navigator.requestGPIOAccess(); // thenの前の関数をawait接頭辞をつけて呼び出します。
  var ports = [];
  
  for ( var i = 0 ; i < 2 ; i++ ){
    ports[i] = gpioAccess.ports.get(portAddrs[i]);
    await ports[i].export("out");
  }
  for ( var i = 0 ; i < 2 ; i++ ){
    ports[i].write(0);
  }
  portPromise = ports;
}
async function free(){
  var ports = await portPromise;
  ports[0].write(0);
  ports[1].write(0);
}
async function brake(){
  var ports = await portPromise;
  ports[0].write(1);
  ports[1].write(1);
  await sleep(300); // 300ms待機してフリー状態にします
  ports[0].write(0);
  ports[1].write(0);
}
async function fwd(){
  var ports = await portPromise;
  ports[0].write(1);
  ports[1].write(0);
}
async function rev(){
  var ports = await portPromise;
  ports[0].write(0);
  ports[1].write(1);
}
Console
    Output

    You can jump to the latest bin by adding /latest to your URL

    Dismiss x
    public
    Bin info
    dynamispro
    0viewers