SketchUpでNEXUS5用のケースを作っているけど
曲面に丸穴を開けられない。
SketchUpって、面が崩れることがよくあるけど
毎回試行錯誤でとても苦労する。
NEXUS5用バンパー(未完成)
2014年6月6日金曜日
2014年5月31日土曜日
2014年5月30日金曜日
Androidランチャー
扇ランチャが便利です。
ただちょっと片手操作では四隅から伸びた扇をタップしにくいんですよね
そこで扇ランチャのレビューを見ると
「ちょっと便利な使い方 扇ランチャーの軽量版と無料版両方インストールして、
両方共右下を設定すれば同じ場所に違うアプリを設置(9個×2段等)出来るので
結構便利です。」
わぉ、とっても便利!!
ラベル:
Android
2014年5月28日水曜日
Arduinoでタッチセンサ
ちょこちょことググっていたらioポートをタッチセンサとして使えるってのを発見しました。
静電容量式タッチセンサで遊ぶ
何これ、面白うそうって事で
建築発明工作ゼミ2008さんの所からソースを頂いて早速動かしてみたところ
どうも触られる側、つまりセンサ及びマイコン側の環境で誤動作しやすかったので
色々と試して実用化できそうな気がしてきました。
一応現象としてはタッチを話した後に誤作動していたのでタッチ部に貯まった電荷が
逃げ切れていない為と思われるので一旦入力ピンを出力にして貯まった電荷を
逃しています。
まだ、課題としてタッチ側の面積を変えると誤動作もありましたので更に確認してみたところ、
タッチ部の面積と通常時の時間の長さが比例して伸びるだけで
タッチした時の時間はそれほど変化しませんでした。
つまり、コンデンサを並列に繋ぐようなものなので当たり前ですね。
そんなわけで自動キャリブレーション的な事もできないことはないと思いますが
タッチ面積を極端に大きくすると通常時の不安定さが増すだけだし
常識的なタッチ面積であれば実用には大丈夫だと思います。
タッチ時波形:緑=タッチコントロール出力 黄=タッチ入力
//
//ioポート式タッチセンサ評価プログラム
//
#define LED_OUT 13 //LEDでタッチセンサのon/off表示
#define TOUCH_MON 12 //タッチセンサモニタ
#define TOUCH_OUT 11 //タッチセンサコントロール
#define TOUCH_IN 10 //タッチセンサ入力
#define TOUCH_AV 3 //移動平均回数
int touchLv=40; //タッチ判定値
int touch=0; //フィルタ用変数
int touchMng(void)
{
int aa=0; //静電容量変化量の変数を用意
unsigned long touchTm; //タッチ時間保持
pinMode(TOUCH_IN,INPUT); //タッチ入力設定
digitalWrite(TOUCH_OUT, HIGH); //タッチ出力ピンをHIGHで出力
digitalWrite(TOUCH_MON, HIGH); //入力モニタ用出力
//タッチ入力がHIGHになるまでをカウント
//※HIGH→LOWの変化では検出不能でした
touchTm = micros();
while (digitalRead(TOUCH_IN)!=HIGH){
if(micros()-touchTm > touchLv) {
break;
}
}
digitalWrite(TOUCH_MON, LOW);
aa = micros()-touchTm; //変化時間をμSecで取得
digitalWrite(TOUCH_OUT, LOW);
pinMode(TOUCH_IN,OUTPUT); //入力を一旦出力にして貯まった電荷を逃します
delay(1);
Serial.print(touchLv);
Serial.print(" \t");
Serial.print(aa);
Serial.print(" \t");
Serial.print(touch);
Serial.print(" \t");
//加重移動平均
//touch += aa-touch/TOUCH_AV;
//return(touchLv*TOUCH_AV > touch ? 0 : -1);
//単純移動平均
touch += -touch/TOUCH_AV + aa;
return(touchLv > touch/TOUCH_AV ? 0 : -1);
}
void loop(void)
{
if(touchMng() == 0) {
Serial.println(" off");
digitalWrite(LED_OUT, LOW);
}
else {
Serial.println("on");
digitalWrite(LED_OUT, HIGH);
}
}
void setup(void)
{
Serial.begin(9600); //シリアルでモニター
pinMode(TOUCH_OUT,OUTPUT); //タッチ出力をデジタル出力
pinMode(TOUCH_IN,INPUT); //タッチ入力をデジタル入力
pinMode(TOUCH_MON,OUTPUT); //タッチ入力をモニタ出力
pinMode(LED_OUT,OUTPUT); //タッチ入力をモニタ出力
}
2014.06.19追記
専用IC使ったタッチセンサってどうなってんだ?
ってことで波形見てみました。
静電容量式タッチセンサで遊ぶ
何これ、面白うそうって事で
建築発明工作ゼミ2008さんの所からソースを頂いて早速動かしてみたところ
どうも触られる側、つまりセンサ及びマイコン側の環境で誤動作しやすかったので
色々と試して実用化できそうな気がしてきました。
一応現象としてはタッチを話した後に誤作動していたのでタッチ部に貯まった電荷が
逃げ切れていない為と思われるので一旦入力ピンを出力にして貯まった電荷を
逃しています。
まだ、課題としてタッチ側の面積を変えると誤動作もありましたので更に確認してみたところ、
タッチ部の面積と通常時の時間の長さが比例して伸びるだけで
タッチした時の時間はそれほど変化しませんでした。
つまり、コンデンサを並列に繋ぐようなものなので当たり前ですね。
そんなわけで自動キャリブレーション的な事もできないことはないと思いますが
タッチ面積を極端に大きくすると通常時の不安定さが増すだけだし
常識的なタッチ面積であれば実用には大丈夫だと思います。
通常時波形:緑=タッチコントロール出力 黄=タッチ入力
タッチ時波形:緑=タッチコントロール出力 黄=タッチ入力
//
//ioポート式タッチセンサ評価プログラム
//
#define LED_OUT 13 //LEDでタッチセンサのon/off表示
#define TOUCH_MON 12 //タッチセンサモニタ
#define TOUCH_OUT 11 //タッチセンサコントロール
#define TOUCH_IN 10 //タッチセンサ入力
#define TOUCH_AV 3 //移動平均回数
int touchLv=40; //タッチ判定値
int touch=0; //フィルタ用変数
int touchMng(void)
{
int aa=0; //静電容量変化量の変数を用意
unsigned long touchTm; //タッチ時間保持
pinMode(TOUCH_IN,INPUT); //タッチ入力設定
digitalWrite(TOUCH_OUT, HIGH); //タッチ出力ピンをHIGHで出力
digitalWrite(TOUCH_MON, HIGH); //入力モニタ用出力
//タッチ入力がHIGHになるまでをカウント
//※HIGH→LOWの変化では検出不能でした
touchTm = micros();
while (digitalRead(TOUCH_IN)!=HIGH){
if(micros()-touchTm > touchLv) {
break;
}
}
digitalWrite(TOUCH_MON, LOW);
aa = micros()-touchTm; //変化時間をμSecで取得
digitalWrite(TOUCH_OUT, LOW);
pinMode(TOUCH_IN,OUTPUT); //入力を一旦出力にして貯まった電荷を逃します
delay(1);
Serial.print(touchLv);
Serial.print(" \t");
Serial.print(aa);
Serial.print(" \t");
Serial.print(touch);
Serial.print(" \t");
//加重移動平均
//touch += aa-touch/TOUCH_AV;
//return(touchLv*TOUCH_AV > touch ? 0 : -1);
//単純移動平均
touch += -touch/TOUCH_AV + aa;
return(touchLv > touch/TOUCH_AV ? 0 : -1);
}
void loop(void)
{
if(touchMng() == 0) {
Serial.println(" off");
digitalWrite(LED_OUT, LOW);
}
else {
Serial.println("on");
digitalWrite(LED_OUT, HIGH);
}
}
void setup(void)
{
Serial.begin(9600); //シリアルでモニター
pinMode(TOUCH_OUT,OUTPUT); //タッチ出力をデジタル出力
pinMode(TOUCH_IN,INPUT); //タッチ入力をデジタル入力
pinMode(TOUCH_MON,OUTPUT); //タッチ入力をモニタ出力
pinMode(LED_OUT,OUTPUT); //タッチ入力をモニタ出力
}
2014.06.19追記
専用IC使ったタッチセンサってどうなってんだ?
ってことで波形見てみました。
緑が通常状態で黄色がタッチしている状態。
2μSecぐらいのパルスを出して、触ると電圧が半分ぐらいに落ちてますね。
2017.11.20 追記
新たに「Arduinoでタッチセンサ その2」を書いてみました。
http://yuzumemo.blogspot.jp/2017/11/arduino.html
登録:
投稿 (Atom)