2018年7月4日水曜日

Arduino実習1 - 準備

必要なもの

Arduino Uno R3
TA7291P
nチャネルMOSFET 2SK703
CdSセル GL5516
モータ FA-130RA
ソレノイド
抵抗 100
抵抗 10k
ダイオード
電池ケース
電池 単3 2本
ブレッドボード
USBケーブル
ワイヤ適宜

Arduinoで開発する準備

本家ウェブサイト
https://www.arduino.cc/

IDE(統合開発環境)をダウンロード
https://www.arduino.cc/en/Main/Software
Windows の場合, 右の方にある Windows Installer, for Windows XP and up をクリックし,JUST DOWNLOAD をクリック.でインストーラ実行.

USBケーブルでボードとPCを接続

接続されているポート番号を確認
Windows 10 の場合,スタートボタンの上で右クリック→デバイスマネージャー→ポート (COMとLPT)

Arduinoでできること

デジタル入出力
アナログ入出力
演算
シリアル通信(PCとのデータのやりとり)

さしあたり知っておくべきことはこれくらい.

最初のスケッチ

スケッチ=プログラム

Arduino IDEを起動

setup()に初期化用の処理,loop()に継続的に実行される処理を書く.

一番ありがちなボード上のLED("L"というラベルが付いている)の点滅

ソースコード

int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(500); // wait for 500ms
  digitalWrite(ledPin, LOW);
  delay(1000); // wait for 1000ms
}


実行

ツール > ボード: Arduino/Genuino Uno を選択
ツール > シリアルポート: デバイスマネージャーで確認したポートを選択

マイコンボードに書き込む でPCからArduinoにプログラムが転送されて自動的に実行される.

結果

ボード上のLEDが点滅する.

続く→ http://masa-memo.blogspot.com/2018/07/arduino2.html

Arduino実習2 - アナログ入力

センサの情報を入力

センサは物理的・化学的な何らかの量を電気信号に変換します.

センサはおおむね以下のいずれかに分類されます.
  • 抵抗値に変換する
  • 電圧に変換する
  • 電流に変換する
計算機に取り込む場合,アナログの電圧値をデジタルに変換する(A/D変換)が必要です.本実習ではArduinoを用いて行います.センサによっては,センサ内部でAD変換が行われ,SPIやI2Cといった通信規格に則って値を取り出す場合もあります.

明るさのセンシング

センサの例として,明るさをセンシングするCdSセルを使ってみます.入射する光が強くなると抵抗値が低下する素子です.

今回使うものはGL5516
電子部品を使うときにはデータシートに目を通して性質を確認するようにしましょう.CdSセルであれば,抵抗値はどのあたりで,光の強度に対する抵抗の変化はどれほどであるのかを確認します.

一般的に電子部品には極性があるものと無いものがあります.
CdSは極性は無いので,どちらの足を電圧高い方につないでも問題ありません.

Arduinoでは,ANALOG INと書かれたピンA0-A5から,電圧を読み取ることができます.5Vを1024段階,つまり0Vなら0,5Vなら1023の整数値が得られます.得られるのは当該ピンとGND(グランド,アース)との電位差です.

抵抗値を読み取るためには,抵抗値の変化を電圧の変化に変換する必要があります.どうするか?

値が固定の抵抗と直列に接続
全体に一定の電圧を印加
センサの抵抗値の変化によって,二つの抵抗の比が変化し,電圧降下の値が変わる.センサ側の電圧降下を読み取ってもよいし,固定抵抗側の電圧降下を読み取ってもよい.
固定抵抗の大きさをどうするかは,センサの出力の変化範囲に依存.
CdSセルの説明書には,暗所での抵抗(最大値)の10分の1程度と書かれているが,ちょっと大きいように思います.

実習

部品リスト

Arduino Uno R3(互換品)
CdSセル GL5516
抵抗 10k
ブレッドボード
USBケーブル
ワイヤ適宜

回路図

抵抗10kは茶黒橙金.抵抗の読み方は各自検索してください.

ワイヤで配線するとき,色は何を使ってもよいのですが,電子工作の場合,
電源+: 赤
GND: 黒
は守るべきかと.製作者自身が混乱しないように.

プログラム

int sensorPin = A0;
int sensorValue = 0;
int wait = 10;

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  delay(wait);
}
analogRead()で,GNDと当該ピンの間の電位差をA/D変換した値が得られます.
Serial.println()で値を文字列に変換してシリアル通信でPC側に送ります.
シリアル通信を使う場合には,setup()でSerial.begin(通信速度)が必要です.
PC側ではシリアル通信で送られてきた結果を見ることができます.Arduino IDEでツール > シリアルモニタもしくはツール > シリアルプロッタを使います.

シリアルモニタの出力例: 生のデータを文字列とみなして表示

シリアルプロッタの出力例: 数値データを時系列グラフ化して表示

応用

抵抗値が変化するセンサ(曲げセンサ,圧力センサ,一部の加速度センサなど)にはこのまま応用できます.電圧が変化するタイプならば,電圧の範囲が0から5Vであれば直接analogRead()すればよいです.変化が微小な場合,オペアンプを使って信号を増幅する必要があります.

続く→ http://masa-memo.blogspot.com/2018/07/arduino3-mosfet.html

Arduino実習3 - MOSFETを用いたスイッチング回路

概要

Arduinoなどのマイクロコントローラからの出力では直接駆動できない素子のスイッチングを行うためには,別途電源を用意して,そのOn/OffをArduinoからの信号で制御します.ここでは,広く用いられているパワーMOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor)を利用する方法について解説します.

MOSFET

MOSFETとは,電界効果トランジスタの一種です.ゲート(G),ドレイン(D),ソース(S)という3端子を持ち,ゲートに加える電圧でドレイン-ソース間の電流を制御します.スイッチングが高速で,オン抵抗が低い(MOSFET自身による電圧降下が少ない,発熱量が少ない)という優れた特性を有しています.

MOSFETにはnチャネル品とpチャネル品があり,ドレイン-ソース間の電流の向きが逆になります.nチャネル品では,ドレインからソースに向かって電流が流れます.このときはソース電極に電流が吸い込まれるためシンク(sink)駆動と呼ばれます.pチャネル品では,ソースからドレインに向かって電流が流れます.

スイッチングに使用する際に重要な特性は,まずはゲート閾値電圧です.ゲート-ソース間の電圧がゲート閾値電圧以上になった場合にドレイン-ソース間に電流が流れます.このときドレイン-ソース間の抵抗(オン抵抗)が低いことが望ましいため,この値も確認します.

また正常に動作する限界を確認しておくことも必要です.ドレイン-ソース間に印加できる最大の電圧は,ドレイン-ソース間の降伏電圧を確認します.一般的には実際に使用する際に印加される電圧の,3から5倍の耐圧を持つものを使用するのがよいとされています.ドレイン-ソース間に流すことのできる最大の電流は,ドレイン電流を確認します.

ソレノイド

ソレノイドとは可動鉄芯を有するコイルで,通電により鉄芯を押し出しないしは引っ込めることができます.実習ではソレノイドのOn/Offをマイクロコントローラから制御します.

動作確認

ソレノイドの動作を確認します.実習に使用するソレノイドは5V用ですが,本実習で印加する電圧は3V(単3乾電池2本)としています.これでも動作します.

まずソレノイドの端子に直接電圧を加えて,鉄芯が動作することを確認してください.このとき長時間通電すると盛大に発熱しますので電流を流す時間はほどほどにしましょう.コイルですので極性はありません.電流の向きを反対にしても同じように動作することも確認しましょう.

実習

部品リスト

Arduino Uno R3(互換品)
ソレノイド
nチャネルMOSFET 2SK703
抵抗 100, 10k
ダイオード
電池ケース・電池
ブレッドボード
USBケーブル
ワイヤ適宜

回路図


回路図のQ1はMOSFETです.MOSFETとして2SK703を使用します.形状は下図の左側です.
足は型番が見える向きにして,左からGDSです.回路図での並び順は下図の右の通りDGSなので,並びが異なるので注意.


R1はMOSFETの動作を安定化させる効果があります.

回路全体の電源がOnになった際に,Arduinoからの出力が無い(OnでもOffでもない状態.ハイインピーダンスと呼ぶ)と,MOSFETが不安定になります.R2はゲートの電圧を0VにしてMOSFETがOnでもOffでもない状態になることを防ぎます.ほとんど電流は流れないため,大きな抵抗でよいです.ここでは10kを使います.

V1はソレノイド用の電源で,ここでは乾電池2本を使用します.

ソレノイドと並列に入っているダイオードは,ソレノイドへの通電がオフになった場合に逆起電力が流れて回路を破壊することを防ぎます.なるべくソレノイドの近くに取り付けます.ダイオードには極性があります.

ソレノイドをブレッドボードに接続するときは,さしあたり適当なワイヤをソレノイドのコネクタに突っ込んでください.

ソースコード

int switchPin = 8;

void setup() {
  pinMode(switchPin, OUTPUT);
}

void loop() {
  digitalWrite(switchPin, HIGH);
  delay(500); // wait for 500ms
  digitalWrite(switchPin, LOW);
  delay(1000); // wait for 1000ms
}

結果

ソレノイドがカチカチするはずです.

応用

直流で駆動し,高い電圧・大きな電流が必要な素子全般に使用できます.例えば空気圧制御するための電磁弁など.

続き→ http://masa-memo.blogspot.com/2018/07/arduino4-dc.html

Arduino実習4 - ブリッジドライバを用いたDCモータの駆動

解説

DCモータ

DCモータを回転させるためには,Arduinoのピンからの出力では電圧や電流が足りません.ではどうするかというと,モータを回転させるための電源を別途用意し,電流の向きをArduinoから制御します.単なるスイッチングではなく,回転方向を変えるためには電流の向きを,回転速度を変えるためには電圧を制御しなければなりませんが,これらの難しいところをよきにはからってくれるブリッジドライバICを用いることで簡単に実現できます.

使用するブリッジドライバ

TA7291P
https://toshiba.semicon-storage.com/jp/product/linear/motordriver/detail.TA7291P.html

参考になるサイト

回転の向きと速度の制御

TA7291Pには10本のピンがあります.ピン番号は向かって左から1,2,...,10です.

電源として,ロジック側(この場合,Arduinoと同じ電圧)の電源と,DCモータ側の電源を用意します.
1番ピンが共通のGND,7番ピンがロジック側の電源Vcc,8番ピンがモータ側の電源Vsです.

モータは2番ピンOUT1と10番ピンOUT2に接続します.接続を逆にするとモータの回転方向が変わります.

IN1(5番ピン)とIN2(6番ピン)へ以下のようなデジタル信号を入力することにより,モータに印加される電圧を制御します.
IN1=H, IN2=L: どちらかの方向に回転(配線に依存)
IN1=L, IN2=H: 上と逆方向に回転
IN1=H, IN2=H: brake
IN1=L, IN2=L: stop

回転状態において,HのピンにPWM(pulse width modulation)信号を入力すると,IN1=H, IN2=L と IN1=L, IN2=L の状態,つまり回転とstopを高速に切り替えている状態となり,結果として回転速度が下がります.

Vref(4番ピン)は出力電圧を制御するためにあります.回転の速度の制御に関して,VrefにPWM信号を入力せよ,としているサイトが多く見受けられます.これはVcc=Vsの場合はよいのですが,そうでなければ適切ではありません.上述の通り,IN1とIN2のうち,HIGHにしているピンをPWMするのがよいでしょう.ただしデータシートによると,Vrefを使用しない場合は,3kΩ以上の保護抵抗を経由してVsに接続しておく必要があります.

モータを扱う際にも,ソレノイドと同様に停止時に発生する逆起電力に注意を払う必要がありますが,TA7291Pには逆起電力を処理するためのダイオードが内蔵されているため,回路に自身でダイオードを加える必要はありません.

実装

部品リスト

Arduino Uno R3(互換品)
TA7291P
モータ FA-130RA
抵抗 10k
電池ケース・電池
ブレッドボード
USBケーブル
ワイヤ適宜

回路図


VsとGNDの間にコンデンサを入れて電圧を安定化させるべきであるとか,VsとTA7291Pの間に電流制限抵抗を入れるべきであるとか,モータにはコンデンサを付けるべきであるとか,改善すべき点はありますがご容赦ください.

実装上の注意

モーターのリード線の被覆をもう少し剥いた方がよい.ワイヤストリッパを使うべし.


Arduinoのスケッチ

int pinToIn1 = 9;
int pinToIn2 = 10;

void setup() {
  pinMode(pinToIn1, OUTPUT);
  pinMode(pinToIn2, OUTPUT);
}

void loop() {
  // rotate forward
  digitalWrite(pinToIn2, LOW);
  for (int i = 0; i <= 255; i++) {
    analogWrite(pinToIn1, i);
    delay(10);
  }
  for (int i = 255; i >= 0; i--) {
    analogWrite(pinToIn1, i);
    delay(10);
  }

  // rotate reverse
  digitalWrite(pinToIn1, LOW);
  for (int i = 0; i <= 255; i++) {
    analogWrite(pinToIn2, i);
    delay(10);
  }
  for (int i = 255; i >= 0; i--) {
    analogWrite(pinToIn2, i);
    delay(10);
  }
}

結果

モータの軸の回転方向,回転速度が時間と共に変わります.

応用

モータだけではなく,双方向に電圧をかけるようなデバイス,例えばペルチェ素子の制御にも利用できます.

2014年2月12日水曜日

Windowsの共有フォルダをubuntuからマウント

https://wiki.ubuntu.com/MountWindowsSharesPermanently
を見ればよい。

マウント先の適当なディレクトリ名をXXXとする。

sudo mkdir /mnt/XXX
sudo apt-get install cifs-utils

~/.smbcredentials内に以下を記述

username=hogehoge
password=fugafuga

chmod 600 しておく。

/etc/fstabに以下を記述。

//192.168.0.1/共有名 /mnt/XXX cifs credentials=/home/ユーザ名/.smbcredentials,iocharset=utf8,sec=ntlm 0 0

sudo mount -aでマウントする。

----

automountしたい。

https://help.ubuntu.com/community/Autofs
を見ればよい。

sudo apt-get install autofs

/etc/auto.master を編集。例えば末尾に以下を追加。

/mnt/XXX /etc/auto.XXX

/etc/auto.XXX は以下の通り。

共有名 -fstype=cifs,credentials=/home/ユーザ名/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0644,dir_mode=0755 ://192.168.0.1/共有名

fstabでマウントしているのはumountして、fstabの当該部分をコメントアウトして、autofsをリスタートする。

sudo service autofs restart

これで、/mnt/XXX/共有名 にマウントされるはず。

2014年2月9日日曜日

ubuntuでOpenGLを用いた実行ファイルでランタイムエラー

実行時に以下のランタイムエラーが出る。

Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion `needed != ((void *)0)' failed!

NVIDIAのドライバを入れていると問題になるようです。
リンク時に、明示的に -L/usr/lib/nvidia-319-updates/ のようにライブラリの場所を指定すればよろしい。

http://stackoverflow.com/questions/20007961/error-running-a-compiled-c-file-uses-opengl-error-inconsistency-detected

2014年2月7日金曜日

xubuntu 13.10 + uim + uim-skk

参考にしたサイト

http://www.kaoriya.net/blog/2013/10/18/
http://blog.livedoor.jp/furikku9310/archives/52347683.html

まずSKK辞書サーバ

dbskkd-cdbをインストールする.

sudo apt-get install dbskkd-cdb
sudo /etc/init.d/openbsd-inetd restart

emacs: ddskk

sudo apt-get install ddskk skkdic

最低限の emacs の設定をする.

(require 'skk-autoloads)
(setq skk-server-host "127.0.0.1")
(setq skk-server-portnum "1178")
(setq-default skk-kutouten-type 'en)

uim: uim-skk

sudo apt-get instal im-config
sudo apt-get install uim uim-skk

input methodの切り替え

im-config -l
uimがリストにあることを確認

im-config -c
メニューからuimを選択,設定.
(1)OK (2)Yes (3)uimを選択してOK (4)OK
Xを再起動するためにログアウト.

※上記は,設定マネージャーの入力メソッド(アイコンあり)の方でもできる.

uim-skkの設定

設定マネージャーの入力メソッド(アイコンなし)で環境を設定
全体キー設定1で,[全体]オン に 変換 を追加,[全体] オフ に 無変換 を追加
SKK辞書で,辞書ファイルの代わりにSKKサーバを使用 を選択.
環境変数SKKSERVERは使用せず(チェックを外す).
SKKサーバのホスト名はlocalhostでよい.
個人辞書ファイルは/home/imura/.skk-jisyoのままでよいと思うが
ddskkとの競合はどうなる?確認が必要.

uim-skkで,「.,」と「。、」の切り替えはどうやって行うのか?
ウェブを見ると以下のように書いてある.
~/.uim に次のように記載する.エンコードはEUCにする(とても重要).

(require "japanese.scm")
(define ja-rk-rule
(append '((((",") . ()) ("," "," ","))
(((".") . ()) ("." "." "."))
((("z" " "). ())(" " " " " ")))
ja-rk-rule))

うまくいかないが...?






xubuntu 13.10 + CUDA 5.5

xubuntu 13.10(おそらくubuntu系列ならば同様であろう)にCUDA 5.5をインストールする手順を説明します.
(一部未確認部分あり)

参考となるサイト

http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/

ダウンロード

ここではインストール対象となる環境はxubuntu 13.10 64bitとする.
(x)ubuntu 13.10用のパッケージは用意されていないため, https://developer.nvidia.com/cuda-downloads からcuda_5.5.22_linux_64.runを,
http://www.nvidia.co.jp/Download/index.aspx?lang=jp から NVIDIA-Linux-x86_64-331.38.run を,それぞれダウンロードする.バージョンは2014/2/13現在.

準備

カーネルのソースコード

sudo apt-get install linux-source
cd /usr/src
sudo tar jxf linux-source-3.11.0.tar.bz2
sudo ln -fs linux-source-3.11.0 linux

最後のシンボリックリンクが必要かどうかは未検証.

開発環境

sudo apt-get install build-essential g++ freeglut3-dev libxmu-dev libxi-dev

gccおよびg++のバージョンが4.6である必要がある.
ubuntu 13.10では4.8が導入されるので,4.6は明示的に導入する.

sudo apt-get install gcc-4.6 g++-4.6

4.6と4.8を切り替えられるようにする.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20

バージョンの選択は以下のコマンドで行うことができる.

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

インストール

インストールの方針

作業はXを落とした状態(コンソールのみ)で行う.
CUDAのパッケージ内にもグラフィクスドライバは含まれているのだが,
バージョンが古い(317)ためカーネル3.11に対応していない.
グラフィクスドライバは最新の331を入れる.
331を入れる場合でも,パッチが必要と書かれているサイトもあるが,
331.38は必要無い模様.

以下の手順で行う.

  1. コンソールでの作業に移行
  2. 古いドライバを削除
  3. グラフィクスドライバをインストール
  4. CUDAをインストール

コンソールでの作業に移行

xubuntuの場合:
sudo /etc/init.d/lightdm stop
sudo stop lightdm でも可

ディストリビューションに合わせて,lightdm→gdmなど,適宜読み替える.

alt+F1でコンソールに切り替える.

ログインする.

文字化けを避けるため,環境変数LANGをCに設定する.
export LANG=C

古いドライバを削除

nvidiaのパッケージの名前を確認する.
いくつか方法がある.

dkpg --get-selections | grep nvidia
dpkg-query --show | grep nvidia
dpkg -l | grep nvidia

下の方ほど,得られる情報量が多い.

nvidiaのパッケージを削除する.例えば以下のようになる.

sudo apt-get --purge remove nvidia-319-updates
sudo apt-get --purge remove nvidia-settings-319-updates

グラフィクスドライバのインストール

/etc/modprobe.d/blacklist.conf に以下を追加する.
blacklist nouveau

以前は以下も追加していたが,不要なようだ.
blacklist vga16fb
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

パッケージを実行する.
sudo sh NVIDIA-Linux-x86_64-331.38.run

質問にはそれぞれ適切に答える.

再起動する.
sudo reboot

cudaのインストール

nvidiaのドライバがインストールできてXが立ち上がっていれば,ターミナルで作業をしても問題ない.

パッケージを実行する.
sudo sh cuda_5.5.22_linux_64.run

長いlicense terms and conditionsは'q'で途中終了できる.

グラフィクスドライバはインストールしない.

PATH /usr/local/cuda-5.5/bin
/etc/environment のPATHの設定に足す.
この設定が反映されるためには,一度ログアウトする必要がある.

ダイナミックリンクライブラリがあるディレクトリを教える.
/etc/ld.so.conf.d/cuda.conf を以下の内容で作成する.

/usr/local/cuda-5.5/lib64
/lib

sudo ldconfig

サンプルプログラムをコンパイルして,正しくコンパイルできるか,および,動作しているか,確認する.適当なサンプルプログラムのディレクトリに入り,makeすれば実行ファイルが作成される.

gnuplotメモ

定義域の指定

set xrange [-10:10]
のようにして指定できるが,plotの先頭に,
plot [-10:10] ...
としても指定できる.

場合分け

C言語と同じ三項演算子が使用できる.
条件 ? 成立時 : 不成立時
例:
plot [0:1] (x<0.5) ? 2*((1-x)**3)*(x**3)-1.0/64 : ((1-x)**3)*(x**3) t "Akinci et al. 2013"

PDF出力

set term pdfcairo enhanced
set output "cohesion.pdf"
replot
set term "wxt"

サンプリング

グラフの品質がいまひとつの場合は,サンプル数を多くする.
set samples 1000




2014年2月6日木曜日

dropbox on xubuntu 13.10

https://www.dropbox.com/install?os=lnx から,ubuntu用64bitパッケージ dropbox_1.6.0_amd64.deb をダウンロードする.
$ sudo dpkg -i dropbox_1.6.0_amd64.deb

ダイアログが現れるのでropboxのアカウントを設定する.

同期がはじまるので,気長に待つ.


skk on ubuntu 13.10


ibus-skkをインストールする.

$ sudo apt-get -y install ibus-skk skkdic skktools

emacs上ではddskkの方が使い勝手がよい..Xresourcesに Emacs23*useXIM: false と記述すれば,ibusにキーを奪われることが防止される.emacs24なら23を24に.
ファイルを作成したら,

$  xrdb .Xresources

ibus-skkの句読点を.,に変えるには,IBus-SKKの設定の「動作」タブで行う.

入力モードを,無変換キーで英数,変換キーでひらがなにしたいのだが,まだできていない.


2013年11月30日土曜日

xubuntuでログイン画面に戻ってしまう

xconf.orgを書き換えていたらログインしてもすぐにログイン画面に戻ってしまうようになった.
対処法は
.Xauthority
.ICEauthority
の二つのファイルを消すことだった.


2013年10月13日日曜日

std::vectorの一部分からstd::stringを生成

std::stringのコンストラクタにイテレータ二つを与えて範囲を指定することができる.
例: std::vector<char> bufの最初の'\n'までをstd::stringとして切り出す

cit = find(buf.begin(), buf.end(), '\n');
std::string s(buf.begin(), cit);

2013年10月2日水曜日

dvipdfmxで日本語フォントを埋め込む

dvipdfmxで日本語フォントを埋め込む
c:/tex/share/texmf-dist/fonts/map/dvipdfmx/base/cid-x.mapを編集する.

rml   H DFMINP3.TTC
gbm   H DFGOTP5.TTC
rmlv  V DFMINP3.TTC
gbmv  V DFGOTP5.TTC

.emacsのyatexの設定

(setq tex-command "c:/tex/bin/ptex2pdf -l -ot \"-kanji=utf8 -no-guess-input-enc\" -od \"-f dlbase14.map\"")
(setq dvi2-command "c:/tex/bin/SumatraPDF.exe")

2013年9月25日水曜日

PowerPointのスライドマスターで,マスターに配置した図形や画像を表示しないようにする

背景の書式設定で,「背景グラフィックを表示しない」にチェックを入れる.
マスターに配置した図形は「背景」として扱われるのか!

2013年9月4日水曜日

pythonのリストの代入

aがリストだとして,
b=a
は,コピーではなくて参照.
コピーしたいときは,
b=a[:]
む,こんなところではまるのは,python初心者すぎる.

2013年8月24日土曜日

UTF-8 BOMなしはVisual Studio 2010にとってはunicodeではない

UTF-8 BOMなしでコードを書いていますと,
「warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」
と言われます.いや,Unicodeですがな,と思うのですが,Visual StudioはUTF-8 BOMありでないとUnicodeとして扱ってくれないらしいのです.コメントに日本語を使うのをやめるのがよいでしょうか.

2013年8月19日月曜日

Freeglut+GLEW+glGenVertexArrays=動かない

OpenGL 4.3に対応したOpenGL Programming Guide (8th Edition)の,最初のプログラムを試そうと思いました.FreeglutとGLEWの最新(安定版)を入れたところ,glGenVertexArraysが正しく動作しません.調べたところ,
http://stackoverflow.com/questions/13558073/program-crash-on-glgenvertexarrays-call
ということで,glutのcontext関係の命令とGLEWが共存するには,glewExperimantal = GL_TRUE;を指定しなければならないようです.
最初のプログラムが素直に動かないってどうよ > 赤本

2013年6月8日土曜日

Blackmagic Design Intensity Shuttle for USB 3.0 + Sony Handycam HDR-CV500V

コントロールパネル
Blackmagic Design Control Panel の Set default video standard を HD 1080i 59.94 に設定する.

Media Express (version 3.2)
Edit > Preferences の Project Video Format を HD 1080i 59.94 に設定する.

Handycam
撮影設定 > HD/SD設定 を HD画質 に設定する.
撮影設定 > 録画モード を HD FH に設定する. < 必要ない.
一般設定 > 出力設定 > HDMI解像度 > ハイビジョン画質 を 1080i に設定する.

2013年4月17日水曜日

bashの書式いろいろ

他のシェルスクリプトを呼び出す

source ./common.sh

文字列を分割する

$aをカンマで分割したい場合
IFS=','
set -- $a
$1,$2,...に分割された部分文字列が順次入る.
IFSがデリミタ.

関数

関数の定義は
funcname() {
 :
}
引数は,$1,$2,...に入る.
返り値は,echo で返す.
関数は`funcname`で呼び出す.
引数はコマンドラインでの作法と同じ.

簡単な例:

to_cyg() {
    echo "/cygdrive/${1/:/}"
}
data_basedir="c:/data/trimming/"
src_dir="${data_basedir}src/"
cyg_src_dir=`to_cyg ${src_dir}`

ローカル変数

関数内でのみ有効なローカル変数の使用
local $filename=$1

計算

bash限定とのことだが(未確認),exprを明示的に呼び出さなくてもよい記述方法として,$(( と $)) で囲む方法がある.
中では,変数名に$を付けなくてよい.
local xmin=$2
local ymin=$3
local xmax=$4
local ymax=$7
local width=$((xmax - xmin + 1))
local height=$((ymax - ymin + 1))

配列

配列への代入は,()でくくる.
p=(`split_answer ${answer}`)
通常の変数と同じように使用できる.添字に変数を使う場合,$は不要.
p_width=5
:
${p[p_width]}