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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

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

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

解決済

2回答

3933閲覧

arduinoで超音波センサを用いて距離を計測する際に受信した超音波の電圧の大きさを距離と同時に表示したい。

hogeegoh

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

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

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2016/06/07 06:00

###前提・実現したいこと
Arduinoで超音波センサを用いて距離を計測する際に受信した超音波の電圧の大きさを距離と同時に表示したい。
###発生している問題・エラーメッセージ
loopの中に電圧の大きさの表示のさせ方がわからない。

### #define USS_T_PIN 7 // 送信側センサー接続のピン番号(デジタル接続) #define USS_R_PIN 0 // 受信側センサー接続のピン番号(アナログ接続) // 電源起動時とリセットの時だけのみ処理される関数(初期化と設定処理) void setup() { Serial.begin(9600); // 9600bpsでシリアル通信のポートを開きます } // 繰り返し実行される処理の関数(メインの処理) void loop() { int ans ; ans = UsonicMeasurRead(USS_T_PIN,USS_R_PIN,20,30) ; Serial.print(ans) ; // 表示を行う Serial.println("mm") ; delay(500) ; // 500ms後に繰り返す } // 超音波センサーから距離を得る処理 // txpin=送信接続ピン rxpin=受信接続ピン temp=周辺温度 correction=距離補正 // 距離をmmで返す(検出できない場合は0を返す) int UsonicMeasurRead(int txpin,int rxpin,int temp,int correction) { unsigned long t , t2 ; int ans , val ; ans = 0 ; tone(txpin,40000) ; // 送信センサーに40KHz信号を200us出力 delayMicroseconds(200) ; noTone(txpin) ; // 40KHz信号停止 t = micros() ; // 現在の時間を記憶する while(1) { val = analogRead(rxpin) ; // 受信センサーの値を読む t2 = micros() - t ; // 時間をカウントする if (val >= 205) break ; // 受信値の電圧が2V以上なら反射信号とする if (t2 >= 30000) break ; // 反射信号が返って来なかった場合の処理 } if (t2 < 30000) { t = 331500 + (600 * temp) ; // 音波の伝搬する速度を求める t = (t * t2) / 1000000 ; // 距離の計算 ans = t / 2 ; // 往復なので÷2 ans = ans + correction ; // 距離の補正値を加える } return ans ; }

###補足情報(言語/FW/ツール等のバージョンなど)
超音波センサの回路やスケッチは以下のURLを参考に作成しました。
http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/USS/USS.htm

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

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

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

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

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

guest

回答2

0

関数から"ふたつ(以上)ある値の組"を返したい、ってことでしょうか?

C

1struct pair { 2 int voltage; 3 int distance; 4}; 5 6struct pair UsonicMeasurRead(int txpin,int rxpin,int temp,int correction) { 7 struct pair result; 8 ... 9 result.voltage = xxx; 10 result.distance = yyy; 11 return result; 12}

投稿2016/06/07 07:07

episteme

総合スコア16614

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

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

hogeegoh

2016/06/07 08:52

そういうことです。 解決できました。 ご回答ありがとうございます。
guest

0

ベストアンサー

UsonicMeasurReadの中のvalをloopに渡して表示したいということでしょうか?

でしたらloopでUsonicMeasurReadを呼び出す際にポインタを渡して値を受け取るか、ansとvalの両方を格納できる構造体を定義して、そのインスタンスをreturnするかのどちらかになると思います。

投稿2016/06/07 06:14

nukosuke

総合スコア145

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

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

hogeegoh

2016/06/07 06:21

: UsonicMeasurReadの中のvalをloopに渡して表示したいということでしょうか? はい。そのようにしたいです。 すいませんC言語も初心者でして、お手数ですが詳しく教えていただけないですか...?
nukosuke

2016/06/07 06:36

int UsonicMeasurRead(int txpin,int rxpin,int temp,int correction, int *voltage) { ... *voltage = val; ... } void loop() { int ans, voltage; ans = UsonicMeasurRead(USS_T_PIN,USS_R_PIN,20,30, &voltage); ... } 値渡しの引数はスコープを抜けると破棄されますがポインタを渡してloop内で宣言した変数の値を書き換えることで値を受け取れます。 C言語の基礎ができていないとマイコンを扱うのは難しいと思いますので、入門書などで一通り勉強してからの方が良いと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問