🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Processing

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

Q&A

1回答

1331閲覧

※過去質問への追記※超音波センサーの値を、Processingの描画に反映させたいです。

aiaiai7823

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Processing

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

0グッド

0クリップ

投稿2019/12/06 20:33

編集2019/12/06 21:20

超音波センサーの値をProcessingの描画に反映させたい
↑の質問の追記で、別のスケッチを試し、成功したと感じたのですがダメだったので追加の質問を作りました。
こちらもついでに読んでいただけるとありがたいです。

実現したいこと

超音波センサー(HC-SR04)を使い、ArduinoからProcessingに値を送信して、
その値を0 ~1200に設定し直して描画に反映させたいです。

試作として、距離センサーの値を水色の縦線のX座業で表してくれるスケッチを作ってみたのですが、
エラーはなく動くものの、挙動とコンソールの値が

ちなみに、距離センサーで測れる数値は2cm〜400cmだそうです。

・Arduino側で超音波センサーは正常に動作しています。
・Arduinoの方にはStandardFirmataが読み込まれています。
・processingにおいて、シリアル通信で値を読み取った。。。はずなのですが、
コンソールに当該の値を表示したところ、ずっと同じような値を繰り返しているだけなので
うまくいっていないようです。

発生している問題

<Processing>
距離に関わらず Distanceが同じような値を繰り返しています。
printArray(Distance);でコンソールに出力される値が以下のようになっています。

46 51 54 13 10 50 57 44 50 57 46 48 48 10 50 57 46 51 54 13 10 50 57 44 50 57 46 48 48 10

該当のソースコード

★Arduinoで超音波センサーの値を読み取るスケッチ(正常に動いています)

Java

1int trig = 3; // 出力ピン 2int echo = 2; // 入力ピン 3double Duration = 0; //受信した間隔 4double Distance = 0; //距離 5 6 7void setup() { 8 Serial.begin(9600); 9 pinMode(trig,OUTPUT); 10 pinMode(echo,INPUT); 11 12 } 13 14void loop(){ 15 16 digitalWrite(trig ,LOW ); 17 delayMicroseconds(2); 18 digitalWrite( trig , HIGH ); //超音波を出力 19 delayMicroseconds( 10 ); // 20 digitalWrite( trig, LOW ); 21 Duration = pulseIn( echo , HIGH ); //センサからの入力 22 if (Duration > 0) { 23 Duration = Duration/2; //往復距離を半分にする 24 Distance = Duration*340*100/1000000; // 音速を340m/sに設定 25 Serial.print(Distance); 26 Serial.println(); 27 } 28 delay(50); 29}

★超音波センサーの値をProcessingに反映させるスケッチ(値がおかしいです)

import cc.arduino.*; import org.firmata.*; import processing.serial.*; Serial port; int Distance; void setup() { size(1200, 640); // Macのシリアルのリストの最初のポートがFTDIアダプタのポート String portName = Serial.list()[4]; // ポートとスピードを設定して、Serialクラスを初期化、 port = new Serial(this, portName, 9600); } void draw() { stroke(50,255,255); line(Distance*20,0,Distance*20,640); stroke(100,255,255); } void serialEvent(Serial port){ // 設定したシリアルポートからデータを読み取り Distance = port.read(); printArray(Distance); }

試したこと

Arduinoのmap関数を試してみようと思います。

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

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

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

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

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

m.ts10806

2019/12/06 20:54

なんでしょう。タイトルの「追記」って。編集されたあとはないようですが… またタグにある内容をタイトルに詰め込みすぎて要件がわかりづらくなってます。整理願います
aiaiai7823

2019/12/06 21:22

私の過去質問に対する追記が、かなり長たらしくなってしまったため別の質問を作ったという意味だったのですが、適切な言葉がわからず結果分かりにくかったかと思います。ご指摘いただきありがとうございます。
m.ts10806

2019/12/06 21:22

当該質問解決してないのなら当該質問に追記して対応続けてください 同じ問題であれば別質問にするメリットは双方にありません。
aiaiai7823

2019/12/06 21:40

前質問に追記載せました!
y_waiwai

2019/12/06 22:39

なんの説明もなく同じ質問を建てられたら、こいつ、ふざけてるんか、ってことでそいつには触らんようにしますな。 質問文は後で修正できるんだし、きちんと説明するなら、不要な質問は削除依頼するなりきちんとしましょうよ。
aiaiai7823

2019/12/06 23:13

分かりました。ベストアンサー取り消せることや削除依頼等色々知らず混乱させてしまい申し訳無いです。。。こちらの質問は同じ件ですが違うファイルを実行しているので残させていただきますが、前回の質問は削除依頼を出してみようと思います。
aiaiai7823

2019/12/06 23:18

まだ削除依頼する資格がないとのことだそうです。。。
m.ts10806

2019/12/06 23:25

回答がついた質問は直接削除依頼できません。 お問い合わせから運営に相談することになります(ヘルプから削除ポリシー参照のこと)
aiaiai7823

2019/12/07 00:31

ありがとうございます。相談して回答待ちです。
guest

回答1

0

Serial.print(Distance);

Serial.println();

送信側は文字列で出してるんだから、
受信側も、
この1行の文字列を取り込んで、
文字列から数値に変換、
してその数値を取り出す、
ってことをしなくちゃいけません。

受信側はそうはなってませんな。

投稿2019/12/06 23:22

y_waiwai

総合スコア88038

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

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

aiaiai7823

2019/12/07 05:31

arduino側からDistanceの最初から計算された値をつかう・・・ということができないのでしょうか。
y_waiwai

2019/12/07 05:43

なんでもできますよ。 でも、そのまえにお互いの通信をきちんと出来るようにしときましょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問