質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

2回答

550閲覧

バイクのメーターのプログラミング(表現)方法

_KN_

総合スコア1

VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

1グッド

0クリップ

投稿2022/02/25 02:59

タッチパネル+ラズベリーパイを組み合わせ写真のようなバイクのメーターを作りたいと勉強しています。
イメージ説明
イメージ説明
①メーターモード・セッティングモード・ナビゲーションモードなど切り替えれるように作りたいのですが、
今はProcessingで再現しようと勉強を始めたところなのですが、もっと適したプログラミング言語やアドイン・ツールなどは有りますでしょうか?

②タコメーターの曲がりながら幅が太くなり、その後まっすぐ、これはどうやっているのでしょうか。
まっすぐの部分は棒グラフと同じなので解りますが、最初のRを描きながら幅も太くするのはどうやってやっているのが検討も付きません。

③時計の7セグLED風の表示や、フォントに無い変わった数字を使いたい場合は0~9の画像データを切り替えて表現するのでしょうか。

④他にアドバイスが有ればよろしくお願いいたします。

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

考えることは一緒だなぁ...
とりあえず②をやってみたので、おくればせながら。
外側(?)が正円なのはそのほうが「針」がらしく描けるかなぁ、ということで。

Processing

1float needleWidth=0.03;//"針"の太さ 2float lvl=0;//指示値 3float lvlMax=15;//最大スケール 4float r1=260;//カーブ部分の外径 5float l1=250;//直線部分の長さ 6float hoffset=30;//全体の水平位置 7float voffset=50;//全体の垂直位置 8float ratio1=0.7;//直線部分の太さ(細さ) 9float ratio2=0.9;//0の太さ(細さ) 10 11void setup() { 12 size(640, 360); 13 ellipseMode(RADIUS); 14} 15 16void fillGage(float lv, color col) { 17 if (lv<HALF_PI) { 18 fill(col); 19 arc(hoffset+r1, voffset, r1, r1, PI-lv, PI); 20 } else { 21 fill(col); 22 arc(hoffset+r1, voffset, r1, r1, HALF_PI, PI); 23 rect(hoffset+r1, voffset+r1*0.7, (lv-HALF_PI)*r1, r1*0.3); 24 } 25} 26 27float d=0.05; 28void draw() { 29 lvl+=d; 30 if (lvl>lvlMax) { 31 d=-d; 32 lvl=lvlMax; 33 } 34 if(lvl<0){ 35 d=-d; 36 lvl=0; 37 } 38 39 background(0xcc); 40 translate(0, height); 41 scale(1, -1); 42 noStroke(); 43 fill(255); 44 arc(hoffset+r1, voffset, r1, r1, HALF_PI, PI); 45 rect(hoffset+r1, voffset+r1*ratio1, l1, r1*(1-ratio1)); 46 float meterMax=HALF_PI+l1/r1-needleWidth; 47 float needleBtm=map(lvl, 0, lvlMax, 0, meterMax); 48 float needleTop=needleBtm+needleWidth; 49 fillGage(needleTop,color(255,0,0)); 50 fillGage(needleBtm,color(0)); 51 //中心部を隠す 52 fill(0xcc); 53 ellipse(hoffset+r1, voffset, r1*ratio2, r1*ratio1); 54}

投稿2022/02/25 15:08

thkana

総合スコア7639

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_KN_

2022/02/27 11:15

有難うございます。 めちゃめちゃ感動しました。 これが実際のバイクに載った時を考えるとニヤニヤしてしまいます。 因みにこれ https://www.youtube.com/watch?v=dC1XBpKwRWs&t=35s の0:28のロゴが出るところはどうやっているか解りますか? フェードイン・フェードアウトは解りますが、キラっと光るやつはどうやっているのでしょうか?
thkana

2022/02/27 22:31

> ロゴ 実際にどうやっているかは知りませんが、 「紙芝居」としてその画を別途作って、次々表示していけば描けないものはない、ことになります。 あるいは、RaspberryPi+Processingであれば、3Dモデルを作って光源を移動...なんていうこともできるのかも知れません。ソッチ方面は守備範囲外でわかりませんが。「輝き」感とかもなにか手法があったりしそうです。
_KN_

2022/03/03 13:58

追加質問にもお答え頂き有難う御座いました。 3Dモデルを使うのは思いつきませんでした。 今回はそこまで拘るつもりも無いので、まずはメーター作りをしたいと思います。 ベストアンサーはすみません、早かったTN8001さんにさせていただきます。
guest

0

ベストアンサー

①メーターモード・セッティングモード・ナビゲーションモードなど切り替えれるように作りたいのですが、
今はProcessingで再現しようと勉強を始めたところなのですが、もっと適したプログラミング言語やアドイン・ツールなどは有りますでしょうか?

マイコン系は全然わからないのですが、GUIは何でやっても大変なので情報の多いものでやるのがいいと思います(何がメジャーなのかは知りません^^;

②タコメーターの曲がりながら幅が太くなり、その後まっすぐ、これはどうやっているのでしょうか。
まっすぐの部分は棒グラフと同じなので解りますが、最初のRを描きながら幅も太くするのはどうやってやっているのが検討も付きません。

円弧(扇形)を描く関数があります。
arc() / Reference / Processing.org
うまく大きさを変えて2つ描けばいけそうです。

③時計の7セグLED風の表示や、フォントに無い変わった数字を使いたい場合は0~9の画像データを切り替えて表現するのでしょうか。

7セグ風なんかは探せばそういうフォントがいっぱいありそうですけど?
もちろん画像でもいいでしょうし、SVGのようなベクターデータも扱えます。
Load and Display a Shape Illustration / Examples / Processing.org

④他にアドバイスが有ればよろしくお願いいたします。

Processingはボタンすら組み込みのものはありません(ControlP5やG4Pといったライブラリを使えば簡単に作れますが、見た目のカスタマイズ性はあまり高くありません)
しかし逆に言えば全部自前描画なら、いくらでも見た目にこだわれるとも言えます。

このアプリがあくまで実用重視(実際に使えることのほうが重要)なら、見た目はとりあえず置いておいてControlP5等でざっと作ってみるのをお勧めします。
あるいはProcessing以外の選択肢のほうが、向いているかもしれません。

このアプリが見た目重視(完コピすることに意味がある)なら、Processingもありって気はします。
機能が増えるにしたがってスパゲッティ化しないようにするスキル(テクニック?)は必要でしょうが^^;


マウス左右でメーターが振れます。
構造が分かりやすいように色を付けました。

Processing

1void setup() { 2 size(400, 300); 3} 4 5void draw() { 6 background(255); 7 8 // arcで使いやすいようにPIベースに値を変換(最大値に特に意味はない。TWO_PIだと長すぎた) 9 float v = map(mouseX, 0, width, 0, PI + QUARTER_PI); 10 11 //fill(0); 12 fill(#ff0000); 13 arc(120, 200, 220, 300, PI, min(PI + v, PI + HALF_PI)); // 扇形メーター部分 14 15 //fill(255); 16 fill(#00ff00); 17 arc(120, 200, 200, 200, PI, PI + HALF_PI); // 一回り小さい1/4扇形で下側を隠す 18 19 line(120, 100, 380, 100); 20 21 if (HALF_PI < v) { 22 //fill(0); 23 fill(#0000ff); 24 rect(120, 50, (v - HALF_PI) * 100, 50); // 直線部分 25 } 26}

アプリ動画

投稿2022/02/25 13:32

編集2023/07/30 04:54
TN8001

総合スコア9321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_KN_

2022/02/27 11:11

有難うございます。 まさか思い描いていたものを再現して頂けるなんて思ってもいませんでした。 思わず口でブンブン言いながらマウスを動かしてしまいました。(笑) 別に完コピを目指している訳では無いのですが、私に美的センスが無いもので 取りあえずは模倣から初めて、それからオリジナリティを持たせようと思っています。 因みにこれ https://www.youtube.com/watch?v=dC1XBpKwRWs&t=35s の0:28のロゴが出るところはどうやっているか解りますか? フェードイン・フェードアウトは解りますが、キラっと光るやつはどうやっているのでしょうか?
TN8001

2022/02/27 14:19 編集

> 思わず口でブンブン言いながらマウスを動かしてしまいました。(笑) 当初はthkanaさんのよう自動で(空ぶかしっぽく)動かそうと思ったんですが、計算(基本的には重力とおんなじ)が面倒で丸投げしました^^; 楽しんでいただけたようで何よりですw > キラっと光るやつはどうやっているのでしょうか? Adobe After Effectsとかで作ってるんでしょうかね?(まったくあてずっぽうですが^^; これをProcessingでどうするかという話なら 1. アニメーションGIFなり連番画像  それをどう作るかという話が残るw 2. 3Dモデル(obj)を作りライトを回す  objをどう作るかという話が残るし、金属光沢は結構難しい(できなくはないです) 3. ロゴ画像にハイライト円を重ねる  一瞬なのでメインのハイライトだけでも案外気にならないかも? あたりでしょうか?
_KN_

2022/03/03 14:00

追加質問にもお答え頂き有難う御座いました。 やはりアニメーションとかになるんですね。 今回はそこまで拘るつもりも無いので、まずはメーター作りをしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問