地域密着型エリア広告配信リクルートの地域密着型広告ドコイク?アドネットワーク Ads by ドコイク?[無料でホームページを作成] [通報・削除依頼]
[無料でホームページを作成] [通報・削除依頼]
婚活

2016年10月 のアーカイブ

2016年10月31日 21時55分26秒 (Mon)

液晶表示の制御

屋外でちょっとした情報を表示するには液晶表示が便利です。 1秒ごとにカウントアップするタイマーを作ってみました。
液晶ディスプレイは秋月電子で、「I2C接続小型LCDモジュール(8x2行)ピッチ変換キット」(600円)を買いました。
//akizukidenshi.com/catalog/g/gK-06795/

結線は、3.3V―VDD、SDA―SDA、GND―GNDで、RESETはつなぎません。

スケッチは2つあり、メインスケッチとルーチン群に分かれています。
2つのスケッチは同じフォルダに入れておくと自動的に合わせてコンパイルされます。
なお、ともに拡張子は.inoをつけてください。

メインスケッチです。
//LCD.ino
#include<Wire.h>

void setup() {
  delay(100); //0.1秒待つ
  lcd_init(); //液晶ディスプレイの初期化
  lcd_setCursor(0,0); //カーソル位置を1段目の左端に
  lcd_printStr("Time:"); // Time:と表示
  delay(1000); //1秒待つ
}

void loop() {
  static int i=0;
  char pr[8];
  lcd_setCursor(0,1); //カーソル位置を2段目の左端に
  sprintf(pr, "%4d s", i++);
  lcd_printStr(pr); //秒数の表示
  delay(1000); // 1秒待つ
}

ルーチン群のスケッチです。
// I2C_LIB.ino
#define I2Cadr 0x3e  // 固定 I2C用アドレス
byte contrast = 30;   // コントラスト(0〜63)
//***** I2C_LCD 初期化関数 (必須)

//***** I2C_LCDへの書込み
void lcd_cmd(byte x) {// I2C_LCDへの書き込み
  Wire.beginTransmission(I2Cadr);
  Wire.write(0x00); // CO = 0,RS = 0
  Wire.write(x);
  Wire.endTransmission();
}

void lcd_init(void) {   // I2C_LCDの初期化
   Wire.begin();
  lcd_cmd(0x38); lcd_cmd(0x39); lcd_cmd(0x4); lcd_cmd(0x14);
  lcd_cmd(0x70 | (contrast & 0xF)); lcd_cmd(0x5C | ((contrast>>4) &0x3));
  lcd_cmd(0x6C); delay(200); lcd_cmd(0x38); lcd_cmd(0x0C); lcd_cmd(0x01);
  delay(2);
}

//***** 画面クリア 関数
void lcd_clear(void) {  lcd_cmd(0x01); } 
//***** 画面表示Off 関数
void lcd_DisplayOff() {  lcd_cmd(0x08); }
//***** 画面表示On 関数
void lcd_DisplayOn() { lcd_cmd(0x0C);  }
//===== サブ関数1 
void lcd_contdata(byte x) {
Wire.write(0xC0); // CO = 1, RS = 1
  Wire.write(x);
}
//===== サブ関数2 
void lcd_lastdata(byte x) {
  Wire.write(0x40); // CO = 0, RS = 1
  Wire.write(x);
}
//***** 文字の表示関数
void lcd_printStr(const char *s) {
  Wire.beginTransmission(I2Cadr);
  while (*s) {
    if (*(s + 1)) {
      lcd_contdata(*s);
    } else {
      lcd_lastdata(*s);
    }
    s++;
  }
  Wire.endTransmission();
}
 
//***** 表示位置の指定関数 x:桁(0〜7)、y:行(0,1)
void lcd_setCursor(byte x, byte y) {
  lcd_cmd(0x80 | (y * 0x40 + x));
}

実験の様子です。

2016年10月30日 20時33分41秒 (Sun)

グランドキャニオンの立体表示

ASTRR画像を使った立体表示の簡単なやり方を「地球観測画像を楽しもう!」の第8章で示したのですが、凹凸の激しいところが見てみたいですね。そこで、2016年8月12日の米国グランドキャニオンの画像を立体表示してみました。1枚目は元の画像、2枚目が立体画像です。

Citation: ASTER-VA image courtesy NASA/METI/AIST/Japan Spacesystems, and U.S./Japan ASTER Science Team.
img_20161030-203735.jpg
img_20161030-203814.jpg

2016年10月29日 21時17分41秒 (Sat)

第7回宇宙技術汎用化PJワークショップ in Tsukuba

表記のイベントを開催しました。今回はこれまでと趣向を変えて、参加者がどんなことを実現したいかから考え、Arduino で何ができるか検討し、そのためには何が必要かまで落とし込みました。次回は実際に作ってみるワークショップにしたいと思います。見た目という技術者が見失いがちなところも、女性の参加者からのツッコミもあって、もしかしたら商品化も考えられるかも、なんて思いました。
 
img_20161030-072052.jpg
img_20161030-072103.jpg

2016年10月28日 6時10分22秒 (Fri)

GPS受信機を使って文字を書く(3)

今回は、全体の軌跡から、文字の部分だけを抜き出して表示する方法を紹介します。
前回の続きで、軌跡がオープンストリートマップの上に描かれている状態から始めます。
img_20161027-182435.jpg
(1)「レイヤーパネル」の「161026-1」を右クリックし、「プロパティ」を開きます。
img_20161028-162010.jpg
(2)現れた「レイヤプロパティ」ウィンドウの「スタイル」タブを開き、「段階に分けられた」を選び、カラムとして「1」(データに追加した番号)を選び、分類数を「7」とし、分類をクリックします。すると下のようになります。
img_20161028-162458.jpg
(3)はじめに、文字の書き始めの場所まで透明化をします。
「シンボル」の一番上の○をダブルクリックすると、次のような「シンボルセレクタ」ウィンドウが現れます。「シンプルマーカー」をクリックし、塗りつぶしを「透過塗りつぶし」、アウトラインを「透過境界線」を選び、「OK」をクリックします。
img_20161028-164212.jpg
 
(4)次に透明にする範囲を決めます。一番上の「値」の数値をダブルクリックすると、透明にする範囲を入力するウィンドウが現れ、透明にする範囲を入力します。例えばこの例では1-300とし、「OK」をクリックします。
img_20161028-165317.jpg
(5)これで、「レイヤプロパティ」ウィンドウの下の「OK」をクリックすると、最初の文字にするのに不要な部分が消えます。
img_20161028-165852.jpg
(6)(3)に戻り、次は2番目の○をダブルクリックし、「シンプルマーカー」の塗りつぶしを好みの色にし、アウトラインも好みの色にします(ここでは塗りつぶしを青、アウトラインを黒にしました)。
(7)(4)に戻り、文字の第1画の範囲(ここでは「む」の横棒の範囲、301-360)を決めます。「OK」をクリックすると下のようになります。
img_20161028-171154.jpg
(7)あとはこれを繰り返して順次文字にしていきます。

今回はその結果として、一つの軌跡から、3つの文字「む」「す」「こ」を抽出しました。
img_20161028-171354.jpg
img_20161028-171428.jpg
img_20161028-171452.jpg

 

2016年10月27日 6時27分15秒 (Thu)

GPS受信機を使って文字を書く(2)

前回は、ArduinoとGPS受信機を使って、文字を書く例を示しました。今回は、そのデータとQGISを使って、実際にどのようにして絵を地図上に描くかを説明します。QGISのインストールのやり方については
//www5.hp-ez.com/hp/tottyiwata/page22/5
を見てください。

前回のスケッチを走らせると下記のような出力ファイルが得られます。
img_20161027-173901.jpg
このデータから移動の軌跡を描かせるだけであれば、これで十分なのですが、文字を書くように、途中で軌跡を消したりする場合には、データに番号を付ける必要があります。このため、列を1列目に挿入し、そこに番号を振るようにします。そして次のようなデータを得ます。
img_20161027-175159.jpg
このファイルを「161026-1.csv」と名付け、保存します。
このファイルをQGISで開きます。「レイヤ」→「レイヤの追加」→「デリミテッドテキストレイヤの追加」をクリックします。
img_20161027-175921.jpg
すると下記のようなウインドウが開きますので、開くファイルを「161026-1.csv」、Xフィールドを経度、Yフィールドを緯度で選んで「OK」をクリックします。
img_20161027-180453.jpg 
すると「空間参照システム選択」が現れますので、「WGS84」を選びます。
img_20161027-181046.jpg
すると測位された点群がメインウインドウに表示されます。
img_20161027-181409.jpg
これをオープンストリートマップに重ねて表示するために、Web→OpenLayers Plugin→OpenStreetMap→OpenStreetMapをクリックします。そしてレイヤーパネルの順序をOpenStreetMapを下になるように「OpenStreetMap」を下にドラッグします。すると下のようになります。
img_20161027-182435.jpg
いったんこれで「プロジェクト」→「名前を付けて保存」で保存し、再現できるようにしておきましょう。次回はこれから文字になるように軌跡を調整します。

 

 


プロフィール

プロフィール画像
ニックネーム
宇宙技術汎用化トレーナー 岩田 敏彰
性別
男性
血液型
A型

ブログ

1
2345678
9101112131415
16171819202122
23242526272829
3031
QRコード
携帯用QRコード
アクセス数
ページビュー数