2020年12月3日木曜日

Arduino(ESP32)にタッチパネル液晶

アマゾンでタッチパネル付きのLCDが格安で販売されていたので

買ってみました。

WayinTop 2.8インチ TFT液晶モジュール 240x320 SPI ILI9341搭載 3.3V/5V タッチパネル タッチペン付属 10KΩ抵抗器付属 ジャンパーワイヤー付属

なんと、ピンコネクタケーブル付きで直ぐに使える

ってことで早速サンプルを色々と動かしてみました。

サクサク動くしとても使いやすいですね


で、同時に購入したLCDの乗っかったESP32

WINGONEER T-Display ESP32 CP2104 WiFi Bluetoothモジュール1.14インチ用LCD開発ボード

タッチパネルは無いけどこれもイイですね。


ただし、重大な問題を発見!!

LCDを変える毎にライブラリをイジらないとダメだって???

それじゃライブラリの共有化ができない(T T)


そこで、なんとか頑張って共有化にチャレンジしてみました。


がっ、まだ上手く行っていません。

取り敢えずLCDを変えた場合でも最小の変更ということで

以下の方法で逃げています。


まずはライブラリフォルダ中のlibraries\TFT_eSPI\User_Setup.h

このファイルを以下のようにコメントアウト編集します。

/*▼

#define ILI9341_DRIVER

*/

/*▼

#define TFT_CS   PIN_D8  // Chip select control pin D8

#define TFT_DC   PIN_D3  // Data Command control pin

#define TFT_RST  PIN_D4  // Reset pin (could connect to NodeMCU RST, see next line)

*/


そして


Arduino\libraries\TFT_eSPI\User_Setup_Select.h

このファイルの以下の行の前に色々と追加して

#include <User_Setup.h>           // Default setup is root library folder

こんな感じにしました。
//▼TFT_eSPI.cppを単体でコンパイルしてしまうのでスケッチ内で#defineしても未定義になってしまう
//#define TTGO_ESP32
//#define ILI9341

#if defined (TTGO_ESP32)
#pragma message "found the TTGO_ESP32 so use Setup25_TTGO_T_Display"
#include <User_Setups/Setup25_TTGO_T_Display.h>    // Setup file for ESP32 and TTGO T-Display ST7789V SPI bus TFT
#pragma message "found the TTGO_ESP32 so use ST7789_DRIVER"
#define ST7789_DRIVER      // Full configuration option, define additional parameters below for this display
#elif defined (ILI9341)
#pragma message "found the ILI9341 so use TFT_ILI9341_TP"
#define ILI9341_DRIVER
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS   15 // Chip select control pin
#define TFT_DC    2 // Data Command control pin
#define TFT_RST   4 // Reset pin (could connect to RST pin)
#define TOUCH_CS  5     // Chip select pin (T_CS) of touch screen
#elif !defined(ILI9341) && !defined(ST7789_DRIVER)
#pragma message "not found ILI9341 or ST7789_DRIVER"
#define TFT_CS   PIN_D8 // Chip select control pin D8
#define TFT_DC   PIN_D3 // Data Command control pin
#define TFT_RST  PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
#else
#endif
//▲

#include <User_Setup.h>           // Default setup is root library folder

これで、頭の行の#define行をLCDに合わせてコメントアウトするだけです。
↓使用するLCDに合わせてコメントを外します。
//#define TTGO_ESP32
//#define ILI9341

本当はスケッチ内の#defineだけで処理できれば嬉しいのですが
スケッチのコンパイルが終わった後に何故かTFT_eSPI.cppを単体でコンパイルしてるようで
その際にスケッチの#defineを読まないので対処できませんでした。



また、日を改めてチャレンジしてみます。

一応ファイルは以下でダウンロードできます。



2020年11月30日月曜日

後悔しないFusion360の使い方を公開するよ

CAD素人ですが最近Fusion360を使い始めましたが
とても楽に編集ができることが分かりました。
「そんなの当たり前だよ」とか「そんな使い方おかしいよ」
といった意見もあるかもしれませんがそれを承知で公開してみます。
公開したことにより叩かれても後悔しません。(多分)

1.スケッチに平面図を書く
1.1.スケッチ面を選ぶ

1.2.スケッチ面に平面図を書いてスケッチ終了する


2.押出しで各面の高さを設定
2.1.押出しを選ぶ

2.2.押出したい面を選んで高さを入力

2.3.各高さ毎に押し出しをする
その際にオブジェクトからを選ぶと相対的な高さで入力できて便利


さて、本題はここからです。
例えば穴を大きくしたりボスを追加したくなったら
3.編集作業
3.1.スケッチの編集を選ぶ

3.2.線を追加したりドラッグで移動(寸法線を追加して数値入力も可)

3.3.スケッチの編集を終了するとちゃんと穴寸法の変更が反映されます。

3.4.フィーチャの編集で押し出し面を追加(削除も可能)

3.5.押出しの追加や削除したい面をクリックすれば押し出し面を後から変更できます。

4.1.側面に穴を開ける。

4.2.穴を開けたいor出っ張りを追加したい面を選んで追加する

4.3.矢印をドラッグor寸法入力で出っ張り追加や穴あけができます。

4.4.再びフィーチャ編集

4.5.位置や大きさを変えられます(今回は貫通してみました)

5.またまたフィーチャ編集
5.1.フィーチャ編集を選んで[操作]を[新ボディ▼]に変更する

5.2.結合を選ぶ

5.3.ターゲットボディとツールボディを選んで[ツールを維持]にチェックを入れる

5.4.ツールボディにフィレットを入れてみる

5.5.まだ穴にフィレットはありません。

5.6.フィーチャをドラッグして順番を入れ替えれば穴にもフィレットが付きます。


2017年11月20日月曜日

Arduinoでタッチセンサ その2

前にArduinoでタッチセンサを作ってみましたが
1ポートしか対応していなかったので複数ポートに対応してみた。

D2ポートとタッチセンサとして使用したいポートの間に
1MΩの抵抗を入れて下さい。

D2をタッチセンサ静電容量計測の為の出力に使っていますので
タッチセンサとしてしようするのはそれ以外をタッチセンサとして
使用できます。
因みに本ソースではD3をタッチセンサとしています。


//
//タッチセンサ
//

#define Version "TouchSence210"
//複数入力に対応
//#define Version "TouchSence200"

#define ouTouch 2 //タッチセンサ出力
#define inTouch 3 //タッチセンサ入力
#define ouLED 13 //検知状態モニタ

int threshold = 3; //判定レベル

void setup()
{
  pinMode(ouTouch,OUTPUT);
  pinMode(inTouch,INPUT);
  pinMode(ouLED,OUTPUT);
  
  Serial.begin(115200);
  Serial.println(Version);
}

struct stTouch{
  int stt;      //タッチセンサ出力
  int tt;        //タッチセンサ入力反転時間計測用
  int tH[8];  //立上り時間
  int tL[8];  //立下り時間
  int lev[8]; //タッチセンサ判定結果
} touch;

int touchMng(int touchPin)
{
  digitalWrite(ouTouch, touch.stt);
  //入力が出力と同レベルになるまでの時間カウント
  if (digitalRead(touchPin)!=touch.stt){
    touch.tt++;
  }
  //入力が出力と同レベルに変化なった
  else{
    //レベル反転とHiとLoの時間を保持
    if(touch.stt!=HIGH){
      touch.stt = HIGH;
      touch.tL[touchPin] = touch.tt;
    }
    else{
      touch.stt = LOW;
      touch.tH[touchPin] = touch.tt;
    }
    touch.tt = 0;
    //変化時間表示
    /*
    if(touch.stt!=HIGH){
      Serial.println();
      Serial.print("\ttL= ");
      Serial.print(touch.tL[touchPin]);
      Serial.print("\ttH= ");
      Serial.print(touch.tH[touchPin]);
      Serial.print("\tSUM= ");
      Serial.print(touch.tH[touchPin]+touch.tL[touchPin]);
      Serial.print("\tSUB= ");
      Serial.print(abs(abs(touch.tH[touchPin])-abs(touch.tL[touchPin])));
    }
    */
    //判定結果を確定
    if( touch.tH[touchPin]+touch.tL[touchPin] > threshold ){
      touch.lev[touchPin] = true;
    } else {
      touch.lev[touchPin] = false;
    }
  }
  //判定結果を返す
  return touch.lev[touchPin];
}
void loop()
{
  //検知状態をLED点灯
  if(touchMng(3) == true){
    digitalWrite(ouLED, HIGH);
  } else {
    digitalWrite(ouLED, LOW);
  }
}


立上り時間と立下り時間を加算してスレッシュホールドレベルと
比較していますが、どちらか片方では商用電源の誘導で引っ張られて
時々検知が外れてしまっていた為、両方を加算しました。

2017年9月27日水曜日

HUAWEI nova liteのスマホケースを3Dプリンタで作ってみた



カードが1枚入るHUAWEI nova liteを3Dプリンタで作ってみました。

カードが入れられるスマホケースとしては、間違いなく最薄だと思います。




STLファイルとSTEPファイルを公開しようと思ったけど

あれれ?

アップロード出来ないぞ

需要があるようならアップロードします。

2017年5月29日月曜日

仮想通貨はじめました

こんにちは、買ったら下がり売ったら上がる典型的なパンピーです。

遅ればせながら仮想通貨をはじめました。
bitFlyer ビットコインを始めるなら安心・安全な取引所で
bitFlyer ビットコインを始めるなら安心・安全な取引所で

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin
日本で一番簡単にビットコインが買える取引所 coincheck bitcoin
簡単安心!ビットコイン取引所 coincheck

2017年5月16日火曜日

靴紐の結び方を発明しました

敢えてバカっぽいタイトルにしています

靴紐が解ける
時々解ける
歩いている時に解ける
かと言って
立ち止まって結び直すのは

イヤだ

かと言って

イアン結びでは解く時に面倒

そんな訳で新し結び方を考えました
非対称です
一応名前を付けました
Asymmetry結び
アシンメトリー結び
略して「あんしん結び」
です

特徴として
・非対称です
(見ようによってはオシャレ)
・かんたんに結べます
(比較対象はイアン)
・かんたんに解くことが出来ます。
(青紐の1本を引っ張ると解け、それ以外では解けません)

絵だけでは難しそうですが
かなりかんたんに結べます
もう少し判りやすい絵を書きたかったけど
そのうち書くかもしれません

チョットづつ書き足します(2017-05-23)
結び方ステップ1

1.片方を二つ折りして1回クロスさせます
クロスさせる方向は二つ折り側を外から内に
潜り込ませるようにするのがコツです。

続きはまた今度


2017年5月10日水曜日

GoogleがSwypeをパクッた?

 不穏なタイトルでごめんなさい。

 最初に衝撃を受けたのがSwypeなので
 Swypeが元祖かなって思ってるだけで調べてもいません。

 Swypeを使い続けて7年目になろうとしていますが、
 そんななかGoogleキーボードのアプデがあったので
 何が変わったのって見てみたら、

  Gboardと名前を変えてスワイプ入力対応になってるじゃないですか。



 まぁ、Google先生はグライド入力と
 言っているようですけどね。

 Swypeにはドコモが1億程出資して
 galaxyにプリインしたかと思ったら、
 早々に諦めて無かった事にしたりとか

 SwypeはSwypeで日本語入力がなかなか上手く行かず、
 音声入力を頑張ったり中国語入力を多様化したりと
 色々と努力していました。
 まあ個人的にはユーザー辞書登録を
 なんとかしてほしかったんですけどね。

 で、GoogleのGboardですが
  素晴らしい Swypeとは違った方向性で自動翻訳を付けたり、
予測変換とか実にGoogleらしい。

因みにGoogle Playのレビューを見てみると
日本語入力はどうするの見たいなのがありましたが
Gboard - Google キーボードとGoogle 日本語入力の
両方を入れると地球マークみたいなのが現れるので
それで切換えてくれますよ。

 これからGboardとSwypeがどう進化して行くか楽しみですね