Skip to content

Instantly share code, notes, and snippets.

View satakagi's full-sized avatar

Satoru Takagi satakagi

  • KDDI
  • Tokyo Japan
View GitHub Profile
@satakagi
satakagi / i2c-AK8963.js
Created November 26, 2018 12:09
MPU9250/MPU9255 driver
// Ported from https://github.com/tuupola/micropython-mpu9250/blob/master/ak8963.py
// by Satoru Takagi
var AK8963 = function(i2cPort,slaveAddress){
this.devConst={
_WIA : (0x00),
_HXL : (0x03),
_HXH : (0x04),
_HYL : (0x05),
_HYH : (0x06),
@satakagi
satakagi / i2c-VL53L0X.html
Last active November 21, 2018 00:34
VL53L0X driver for CHIRIMEN Raspberry-Pi3
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1">
<title>i2c-VL53L0X</title>
<script src="../../../polyfill/polyfill.js"></script>
<script src="../../drivers/i2c-VL53L0X.js"></script>
<script src="./mainVL53L0X.js"></script>
@satakagi
satakagi / i2c-BMP180.js
Last active November 15, 2018 11:44
BMP180 driver for CHIRIMEN
// BMP180 driver for CHIRIMEN WebI2C
// ported from hhttps://qiita.com/uchino-tama/items/efccfe871ab3abc782f3
// by Satoru Takagi
var BMP180 = function(i2cPort,slaveAddress){
this.AC = [];
this.B = [];
this.M = [];
this.t_fine = 0;
this.i2cPort = i2cPort;
@satakagi
satakagi / i2c-MPU6050.js
Last active November 2, 2018 07:54
MPU-6050 driver for CHIRIMEN
// MPU-6050 Driver for CHIRIMEN WebI2C
// based on http://www.widesnow.com/entry/2015/09/10/061128
// https://www.invensense.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf
// by Satoru Takagi
var MPU6050 = function(i2cPort,slaveAddress){
this.i2cPort = i2cPort;
this.i2cSlave = null;
if ( slaveAddress ){
this.slaveAddress = slaveAddress;
@satakagi
satakagi / i2c-BME280.js
Last active November 2, 2018 02:08
BME280 driver for CHIRIMEN
// BME280 driver for CHIRIMEN WebI2C
// ported from https://github.com/SWITCHSCIENCE/BME280/blob/master/Python27/bme280_sample.py
// by Satoru Takagi
var BME280 = function(i2cPort,slaveAddress){
this.digT = [];
this.digP = [];
this.digH = [];
this.t_fine = 0;
this.i2cPort = i2cPort;
@satakagi
satakagi / siderealClockATmega8.md
Last active August 25, 2018 04:11
Sidereal Clock

About

Here is the controller code for modified movement of automatic planisphere clock by ATmega 8. The original design using PIC is introduced below.

http://cosmic.world.coocan.jp/craft/starclock.htm (google Translate)

Note: Since the star disk data of the above site is for the area of Japan, for other areas, you may want to obtain data from like following site.

@satakagi
satakagi / chirimenMultiBlink.md
Last active August 1, 2018 05:59
CHIRIMEN for Raspberry Pi3でたくさんのLチカをする
@satakagi
satakagi / translate2await.md
Last active May 1, 2019 20:24
.thenをawaitに書き換えて入れ子をなくす

この資料はCHIRIMEN for Raspberry Pi3を使った講習会向けのTipsです。

.then()でネスト(入れ子)された非同期処理のプログラムを解釈し、入れ子がないプログラム(async 関数)に書き換える方法

はじめに

ワンデー講習会などでJavascriptの初歩を勉強したところでCHIRIMEN for Raspberry Pi用のプログラムを読むと、よくわからない部分があると思います。.thenというキーワードが出てきて無名関数が入れ子になっているところだと思います。これは非同期処理という特別な処理方法に因るものです。

非同期処理

CHIRIMEN for Raspberry Piでのプログラミングでは、センサーやアクチュエータを使いますが、これらは動作するのに無視できない時間がかかります。例えば、体温計の測定やロボットハンドの腕の動きを想像してみてください。非同期処理はこのような動作に時間がかかる処理において、処理の完了を待って次の処理を行うときによく使われます。(非同期処理無しに待とうとすれば、その間ブラウザ画面がフリーズしてしまいます。)

非同期処理のプログラムにはいくつもの書き方があり、統一されていません。また、入れ子が深かったり、無名関数が使われていたりして、読み解くのが難しくもあります。CHIRIMENの講習ではasync awaitを用いた方法に統一して説明をするようにしています。関数の入れ子を作らずに非同期処理が書け、基本的な文法を学んだ方にとって比較的わかりやすい記法のためです。

@satakagi
satakagi / readme.md
Last active July 27, 2018 00:55
CHIRIMEN for RaspPi3のSDイメージ内のファイルをサルベージする方法

SDイメージ内の情報をサルベージする方法

RaspPi CHIRIMEN SDイメージが、ブートしてもログインダイアログが出現してそれ以上進まない状態になることがよくあるようです。こうなると、SDイメージ中にプログラムを置いていた場合、プログラムのサルベージに取り組む必要が出てきます。

以下を参考にしてください。

これに従って、以下の手順でSDイメージのマウントができました。

@satakagi
satakagi / async_await.md
Last active July 27, 2018 04:09
いろいろ拡張されたJavaScriptの書式を知らない・苦手な人のための async awaitを使った非同期処理の書き方の説明

この資料はCHIRIMEN for Raspberry Pi3を使った講習会向けのTipsです。

非同期処理 (async await版)

はじめに

Javascriptの初歩を勉強した後、CHIRIMEN for Raspberry Piでデバイスを接続してコントロールできるようになるには、一つ重要な概念とそのコーディングの作法を学ぶ必要があります。それが非同期処理という特別な処理方法です。

非同期処理

CHIRIMEN for Raspberry Piでのプログラミングでは、センサーやアクチュエータを使いますが、これらは動作するのに無視できない時間がかかります。例えば、体温計の測定やロボットハンドの腕の動きを想像してみてください。非同期処理はこのような動作に時間がかかる処理において、処理の完了を待って次の処理を行うときによく使われます。(非同期処理無しに待とうとすれば、その間ブラウザ画面がフリーズしてしまいます。)

非同期処理のプログラムにはいくつもの書き方があり、統一されていません。また、入れ子が深かったり、無名関数が使われていたりして、読み解くのが難しい書き方がほとんどです。CHIRIMENの講習ではasync awaitを用いた方法に統一して説明をするようにしています。関数の入れ子を作らずに非同期処理が書け、基本的な文法を学んだ方にとって比較的わかりやすい記法のためです。