2048015 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

Bubble, bubble, toil and cuddle !!!

全162件 (162件中 1-10件目)

1 2 3 4 5 6 ... 17 >

作りモノ

August 24, 2019
XML
カテゴリ:作りモノ
今日は曇りでそんなに暑くなかった。

子ども(弐)がプログラミングに興味があるっちゅうことで、お試しでプログラミング入門講座に行ってみました。

プログラミング、っちゅうことで、何らかの言語でちょこちょこプログラムを作るのかと思いきや、micro:bitを使って、フィジカルなモノのプログラミングをする講座でした。MakeCodeエディタを使って、Scratchのように視覚的にプログラミングができるようになっていたので、子ども(弐)も講師のチュートリアルが終わる頃には大体の雰囲気が分かったようです。その後、60分程で好きなようにプログラミングをしてください、とのことやったので、子ども(弐)もプログラミングにチャレンジ。

micro:bitで何やら作ったらしい
micro:bit動作中

子ども(弐)はmicro:bitに載ってるセンサ類が気になったみたいで、照度センサや加速度センサを使って表示を変えたりするプログラムを作ったようです。他の参加者の中には音を出したりしてる人もいたみたいです。

子ども(弐)もmicro:bitのプログラミングは面白かったようで、これなら遊べる、と言ってました。某ワンクリックなとこで調べても、2千円程度で買えるようなので買ってみるのもいいかも。(^^;
--- 19:20 ---






Last updated  August 24, 2019 07:22:12 PM
コメント(0) | コメントを書く
August 17, 2019
カテゴリ:作りモノ
今日は晴れて暑かった。

午前中医者に行って、子ども(参)と買い物。

その後、暇があったので、開発用ノートPCにUnityを入れてみました。Unity Hubをインストールしてから、Unitiy本体をインストールするようです。日本語化もできるようなので、追加インストールで日本語言語パックをダウンロード。プロパティの言語設定で日本語を選べば、メニューが日本語になりました。

Unity入門を見て、ひと通りやってみたのですが、イマイチ作法がよく分からん... (^^; 参考ページのゲームにハイスコアを付けようとしただけで、どうしていいのかわからん状態です。色々調べないと分からんことが多すぎる... (^^;;
--- 18:15 ---






Last updated  August 17, 2019 06:16:08 PM
コメント(0) | コメントを書く
August 16, 2019
カテゴリ:作りモノ
今日は曇りで強風。

台風の影響が残ってるような感じです。雨が降ってないからいいけど。
---

温湿度計制御アプリで保存したデータはGNUPlotで確認してたんやけど、めんどくさいので、専用のプロットツールを作成しました。データ処理とグラフ表示は温湿度計制御アプリにグラフ描画機能を付けたときにやり方は分かったので、調べないといけないのは、ファイル名を取得するダイアログの使い方とファイルからのデータ読み込み方法です。

まず、ファイル名を取得するダイアログについては、WPF でファイル、フォルダーを選択するダイアログボックスを表示する [C#]を参考にさせてもらいました。また、ファイルから読み込む処理については、【C# TextBox】テキストファイルをテキストボックスに簡単に読み込むを参考にさせてもらいました。

これらのページを参考にして書いたのが以下のコードです。buttonFileというボタンが押されたら、ファイル選択を行い、textboxFileというテキストボックスにファイルを読み込みます。


private void ButtonFile_Click(object sender, RoutedEventArgs e)
{
// ファイルオープンダイアログのインスタンスを生成
var dialog = new Microsoft.Win32.OpenFileDialog();

// ダイアログを表示する
// ファイルが選択されたとき
if (dialog.ShowDialog() == true)
{
// ファイルの内容をテキストボックスに読み込む
StreamReader sr = new StreamReader(dialog.FileName);
textboxFile.Text = sr.ReadToEnd();
sr.Close();
}

}


この他の処理は温湿度制御アプリで作ったモノなので、割と簡単にファイルからデータを読み込んでプロットするツールを作ることができました。

データプロットツール
データプロットツール

表示したグラフ
表示したグラフ

これでGNUPlotを立ち上げなくても取ったデータのプロットができるようになりました。
--- 10:25 ---






Last updated  August 16, 2019 10:25:42 AM
コメント(0) | コメントを書く
August 13, 2019
カテゴリ:作りモノ
今日は晴れ時々雨の変な天気やった。

朝から仏さんのお盛りもんをしたり、花を供えたりしました。今日からお盆のお膳を供えるので、何とか用意しました。(^^; 嫁はんと子ども達がおばあさん(嫁はんのお母さん)の初盆で嫁はんの実家に行ってるので、私一人では大した用意はできず。煮豆とかも既製品です。(^^;;

お盆のお膳
お盆のお膳

こんなもんで許したってください > ご先祖様。
---

昨日作ったArduino Uno互換ボード+センサの温湿度計シリアル制御アプリに、テキストボックスにあるデータをグラフ描画する機能を追加しました。

WPFでChartコントロールを使うのページを参考にさせてもらいました。基本、このページの通りに実装していくとグラフ描画できるようになりました。このページの実装では、MainWindowに描画してるのですが、私の場合はWPFウィンドウを1枚追加してそちらに描画するようにしました。このとき、windowsFormsHostの設定は、別ウィンドウの下にぶら下がるような書き方をしました。

Window1 w1 = new Window1();
var windowsFormsHost = (WindowsFormsHost)w1.gridGraph.Children[0];
var chart = (Chart)windowsFormsHost.Child;


chartが宣言されてしまえば、後は参考ページの通りでグラフ描画できるはずです。あー、最後に別ウィンドウを表示、

w1.Show();

しなければなりませんが... (^^;;

また、

WindowsFormIntegration
System.Windows.Forms
System.Windows.Forms.DataVisualization

の3つを「参照設定に追加」すると書いてあったのですが、これが何を意味するのか最初分かりませんでした。(^^;; using で追加するのではなくて、[プロジェクト][参照の追加]を選んで、上記3つの項目にチェックを入れる、という操作でした。

[プロジェクト][参照の追加]を選ぶ
参照の追加を選ぶ

この3つにチェックを入れる
チェックを入れる

テキストボックスに書かれるArduino側から上がってくるデータはカンマ区切りの時刻、温度、湿度が改行で区切られて並んでるものなので、Split()でデータを加工して、(時刻、温度)、(時刻、湿度)のペア(X,Y)座標に変換して系列データとして設定しました。こんな感じ。

// テキストボックスの行数を取得
int linesAll = textRX.LineCount;
// テキストボックス全体の内容を取得
string textAll = textRX.Text;
// 各行に分割
string[] del = { "\r\n" };
string[] singleLine = textAll.Split(del, StringSplitOptions.None);
// テキストボックスの各行ごとに処理
// 最後の行はうまく読み込めないことがあるので、無視する
for (int i = 0; i < linesAll - 1; i++)
{
// 各行をカンマ区切りで分割する
string[] arr = singleLine[i].Split(',');
// グラフのX,Y座標を設定(時刻(0カラム目), 温度(1カラム目))
seriesDatT.Points.AddXY(int.Parse(arr[0]), double.Parse(arr[1]));
}


そんなこんなで、温湿度計シリアル制御アプリにグラフ描画機能を追加することができました。

グラフ描画させるとこんな感じ
グラフ描画

メイン画面
メイン画面

グラフ画面
グラフ画面

これでグラフを見るのにいちいちデータ保存してGNUPlotで確認する手間が省けるようになりました。まぁ、データ保存はログ取りに必要な機能やから無いと困るんやけどね。(^^;;
--- 19:15 ---






Last updated  August 13, 2019 07:18:13 PM
コメント(0) | コメントを書く
August 12, 2019
カテゴリ:作りモノ
今日は晴れ時々曇りでそこそこ暑かった。

朝から仏壇の掃除をして、フナ水槽の掃除をしました。お盛りもんと花をセッティングすれば、お盆の準備は何とかなりそうです。

フナ水槽はキレイになった
フナ水槽

その後、Arduino Uno 互換ボード+センサで作ってる温湿度計の制御を Windows 側から行うアプリケーションを作ってみようと思い、Visual Studio 2019をインストール。C++かC#でWindowsアプリをビルドできるようなオプションでインストールしてみました。調べてみるとC#の方が敷居が低そうなので、C#でチャレンジすることに。

やりたいのはArduinoとのシリアル通信をGUIで行うこと。Webの情報を色々調べてみると、C#フォームプログラムでのシリアル通信の仕方というページがあったので、ここを参考に作ることにしました。が、Visual Studio 2019ではWindowsフォームでのプロジェクト作成ができないようで(ホントかな?(^^;)、WPFとかいう形式でWindowsアプリを作り始めました。

大体のところは参考にしたページの内容を読めば分かったんですが、シリアル受信のデータをテキストボックスに貼り付けようとして、ハタと困ってしまいました。(^^;; WindowsフォームではテキストボックスのInvokeRequiredプロパティを見て、何やらInvokeしてごにょごにょする(まだ理解できてない(^^;;)のですが、WPFでInvokeRequiredプロパティが無いのです。うーむ、分からん... と調べてると、c# – WpfでInvokeRequiredっちゅうページが見つかりました。すると、何やらディスパッチャにInvokeメソッドがあるので、ごにゃごにゃ(まだ理解できてない)と書いてありました。それを頼りに何とかシリアル受信データをテキストボックスに貼り付けることができました。コードは下記のようになったのですが、ちゃんと理解できてない... (^^;;


delegate void SetTextCallback(string text);
private void Response(string text)
{
if (textRX.Dispatcher.CheckAccess() == false)
{
SetTextCallback d = new SetTextCallback(Response);
Dispatcher.Invoke(d, new object[] { text });
} else
{
textRX.AppendText(text);
}
}

private void portA_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (portA.IsOpen == true)
{
try
{
string str = portA.ReadExisting();
Response(str);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} else
{
return;
}
}


こんなんでいいんやろか... (^^;; と思いつつも、何とかアプリは形になり、Arduino側に送るコマンドのインターフェースやテキストボックス内容の保存もできるようになりました。テキストボックス内容の保存で参考にした(ほぼパクった(^^;;)ページはC#で「名前を付けて保存」ダイアログを使ってみたです。参考になりました。ありがとうございました。

っちゅうことで、今現在のアプリの外観はこんな感じ。

殺風景な見た目やけど機能的には問題ない(^^;;
アプリの外観

Arduinoが専用のアプリで制御できると操作が楽ちんになって良いです。C#でのアプリづくりもナカナカおもしろいです。
--- 18:00 ---






Last updated  August 12, 2019 06:02:17 PM
コメント(0) | コメントを書く
August 8, 2019
カテゴリ:作りモノ
今日は早めで帰宅は18時半過ぎ。

パラレルインターフェースの液晶モジュールに接続するとシリアル通信でコントロールできるようになるインターフェース基板が某ワンクリックなところで安かったので買ってみました。同じようなのがいっぱいあるので、どこで買ったか忘れてしまいました。(^^;

やってきたのは単体で説明書は無し。まぁ、インターフェースピンの出方からこっちやろう、という向きで接続したら正解でした。(^^;;

4本のインターフェースピンが外側向くように接続
I/Fモジュール

ライブラリは、LiquidCrystal_I2Cを使います。ココからLiquidCrystal_I2C-master.zipをダウンロードします。Arduino IDEの[スケッチ][ライブラリをインクルード][.ZIP形式のライブラリをインストール]でダウンロードしたzipファイルを選択。

[スケッチ][ライブラリをインクルード][.ZIP形式のライブラリをインストール]
ライブラリをインストール

これでライブラリとしてLiquidCrystal_I2Cが使えるようになった... ように思います。ちょっと曖昧。(^^;;

ライブラリをインストールしたら、Arduino Unoとシリアルインターフェースを接続。Vcc、GNDの接続と SDAをA4、SDLをA5に接続します。スケッチ例として、Hello World を載せときます。

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hello, world!");
}

void loop() {
// put your main code here, to run repeatedly:
lcd.scrollDisplayLeft();
delay(400);
}


LCDオブジェクトを作るときに、

LiquidCrystal_I2C lcd(I2Cアドレス, 列数, 行数);

とするのと、初期化が、

lcd.init();

になるのとを除けば、LiquidCrystal ライブラリの記法と同じままのソースで動作します。修正箇所が少ないので便利です。

実際、前に作った温湿度計の上記部分を変更するだけですぐに動きました。

温湿度計の表示
温湿度計の表示

温湿度計が動作してる動画


やっぱりArduinoはライブラリが揃ってて、やりたいことが割と簡単にできて便利ですね。
--- 19:50 ---






Last updated  August 8, 2019 07:50:12 PM
コメント(0) | コメントを書く
August 6, 2019
カテゴリ:作りモノ
今日は早めで帰宅は18時半過ぎ。

日曜に秋葉原に寄ったとき、Shigezoneで0円でもらった謎基板(ケース入り)を開腹してみました。

謎基板のCPU側
謎基板のCPU側

謎基板の裏側
謎基板の裏側

CPUはCaviumのPureVu CNW6611LというFull-HD Media Processor SoCらしいです。ARMコアが載ってるようです。CPUと同じ側にSamsungのRAMやWiFiチップと思しき銀色のチップなどが載ってます。裏側には東芝のROMが載ってます。d-link dsm232でググって出てくる情報によると、Linuxで動いてるらしい。HDMI端子にモニタをつないで動作確認できれば、雰囲気は分かるような気がしますが... 実験は家帰ってからやな。(^^;
--- 19:00 ---






Last updated  August 6, 2019 07:02:52 PM
コメント(0) | コメントを書く
July 29, 2019
カテゴリ:作りモノ
今日は早めで帰宅は18時半過ぎ。

プロトタイプを作ったタブレット端末OS選択用USBキーをユニバーサル基板を使って、使いやすい形に仕上げてみました。

USBキーの表側
USBキーの表側

USBキーの裏側
USBキーの裏側

DigisparkのP0とP2にタクトスイッチを付けてあります。内部プルアップしておいて、GNDに落ちたらキー入力するように配線しました。白いキーが↑キー、黒いキーが↓キー、白と黒と同時押しするとENTERキーが入力されるようにしてあります。スケッチは、プロトタイプの回を参照してください。

このUSBキーを使うとキーボードを持たないタブレット端末で、Windows + Linux のデュアルブートにしたとき、GRUBによるOS選択が簡単にできるようになります。

GRUBのOS選択を実施してる様子


こんな感じで東芝のWT301/DにインストールしたPeppermint OSとWindows 10の選択(上記動画ではWindows 10)が可能になりました。OS選択するだけにフルキーボードを接続しなくてよいので便利になりました。:-)
--- 20:05 ---






Last updated  July 29, 2019 08:07:06 PM
コメント(0) | コメントを書く
July 25, 2019
カテゴリ:作りモノ
今日は早めで帰宅は18時半過ぎ。

社食で晩ご飯を食べてるときにゲリラ豪雨に会い、結構濡れてしまいました...
---

昨日、Digisparkで3つのキーが入力できなくて悩んでましたが、ちゃんと使えるP0とP2につないだタクトスイッチだけで何とかすることにしました。

↑キーはP0につないだタクトスイッチを押してLOWになったとき、↓キーはP2につないだタクトスイッチを押してLOWになったとき、ENTERキーはP0、P2につないだタクトスイッチを同時押しして両方LOWになったとき、それぞれキーコードをUSB経由で送信するようにしました。これで、キーが2つでも何とかなりました。

昨日はP0、P2にプルアップ抵抗を外付けしてたけど、HIGH/LOWを見るだけなので内蔵プルアップ抵抗でもいけるやろう、っちゅうことで、外付けプルアップ抵抗は外して、ピンをINPUT_PULLUP指定することにしました。結局、P0、P2からタクトスイッチを介してGNDに落ちるだけの配線をしてやるだけでよくなりました。

配線の様子(分かりにくいか...(^^))
配線の様子

最終的にスケッチは下記のようになりました。


#include <DigiKeyboard.h>

#define PIN_UP 0
#define PIN_DN 2
#define KEY_UP 0x52
#define KEY_DN 0x51
#define KEY_ENTER 0x28

void setup() {
// put your setup code here, to run once:
pinMode( PIN_UP, INPUT_PULLUP );
pinMode( PIN_DN, INPUT_PULLUP );
}

void loop() {
// put your main code here, to run repeatedly:
unsigned char pu, pd;

DigiKeyboard.sendKeyStroke(0);

pu = digitalRead( PIN_UP );
pd = digitalRead( PIN_DN );

DigiKeyboard.update();

if ((pu == LOW) && (pd == LOW)) {
DigiKeyboard.sendKeyStroke( KEY_ENTER );
} else {
if (pu == LOW) {
DigiKeyboard.sendKeyStroke( KEY_UP );
}
if (pd == LOW) {
DigiKeyboard.sendKeyStroke( KEY_DN );
}
}

DigiKeyboard.delay(200);
}



さて、このキー入力デバイス、何に使うかっちゅうと、LinuxとWindowsをデュアルブートにしたタブレット端末の最初のOS選択画面(GRUBの画面)で使います。わざわざキーボードをつなぐのもめんどくさいので、小さいデバイスができたらいいなー、っちゅうことで作ってみました。(^^;;

GRUBの画面でOS選択している様子


映りこんでる黄色いステテコは気にしないでください。(^^;;

右側のタクトスイッチが↓キー、左側のタクトスイッチが↑キーになっています。OSを選択した後、両方のタクトスイッチを同時押しすることでENTERを入力し、OSを起動することができます。

今後はバラック状態からユニバーサル基板を使ってもう少し使いやすい形態に仕上げるつもりです。
--- 20:20 ---






Last updated  July 25, 2019 08:20:14 PM
コメント(0) | コメントを書く
July 24, 2019
カテゴリ:作りモノ
今日は早めで帰宅は18時半過ぎ。

Shigezoneで買ったDigispark互換ボードでやりたいのは、↑キー、↓キー、ENTERキーをUSBキーコードとして入力するデバイスを作ることです。P0、P1、P2にタクトスイッチをプルアップして接続し、スイッチを押すとGNDに落ちるように配線しました。以下のスケッチで動作確認をしたのですが、↓キーが押しっぱなし状態になって、思うように動いてくれませんでした。


#include <DigiKeyboard.h>

#define PIN_UP 0
#define PIN_DN 1
#define PIN_ENTER 2
#define KEY_UP 0x52
#define KEY_DN 0x51
#define KEY_ENTER 0x28

void setup() {
// put your setup code here, to run once:
pinMode( PIN_UP, INPUT );
pinMode( PIN_DN, INPUT );
pinMode( PIN_ENTER, INPUT );
}

void loop() {
// put your main code here, to run repeatedly:
DigiKeyboard.sendKeyStroke(0);

DigiKeyboard.update();

if (digitalRead( PIN_UP ) == LOW) {
DigiKeyboard.sendKeyStroke( KEY_UP );
}

if (digitalRead( PIN_DN ) == LOW) {
DigiKeyboard.sendKeyStroke( KEY_DN );
}

if (digitalRead( PIN_ENTER ) == LOW) {
DigiKeyboard.sendKeyStroke( KEY_ENTER );
}

DigiKeyboard.delay(100);
}


P1につなぐタクトスイッチを変えてみても同じ動作なので、回路自体は問題ないと思われます。何でP1がLOWと判定されるのかがイマイチ分かりません... P1を使わない場合はキー入力は問題なく行えるのですが... うーむ、分からん。(^^;

P5はリセット扱いされるようで、LOWに落とすとリセットがかかり、使いもんになりませんでした。

キーを3つつけるのは難しいのか?? 私が分かってないだけなのか?? (^^;;
--- 21:20 ---






Last updated  July 24, 2019 09:20:41 PM
コメント(0) | コメントを書く
このブログでよく読まれている記事

全162件 (162件中 1-10件目)

1 2 3 4 5 6 ... 17 >

PR

Keyword Search

▼キーワード検索

Free Space

Category

Favorite Blog

まだ登録されていません

Comments

BOOSAN @ Re[2]:今更ながら"Star Wars: The Rise Of Skywalker | D23 Special Look" (^^;(09/13) sorrimanさんへ 一番最新のやつです!観た…
sorriman@ Re:今更ながら"Star Wars: The Rise Of Skywalker | D23 Special Look" (^^;(09/13) オフィシャルの予告編第1弾? 最近、映画観…
BOOSAN@ Re:今更ながら"Star Wars: The Rise Of Skywalker | D23 Special Look" (^^;(09/13) 先週、ブレードランナーのファイナルカッ…
BOOSAN@ Re:稲穂が出てきた(08/19) ぶどう届きました。ありがとうございまし…
sorriman@ Re[1]:秋葉原に寄った(07/07) kiyosan.comさんへ 今日(7/15)も秋葉原に…

Freepage List


Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.