[過去ログ] Arduino初心者熱烈大歓迎質問スレ part25 (977レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): 2019/09/13(金)16:15 ID:MfBQFDi7(1) AAS
http://www.arduino.cc/

【質問者心得】
・スレに一応目を通してから質問しましょう
・回答者はエスパーではありません。状況が分かるように詳しく書きましょう
 詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです
【回答者心得】
・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう
・節度ある初心者さんには、特に優しくね

前スレ
Arduino初心者熱烈大歓迎質問スレ part23
省20
2: 2019/09/13(金)16:24 ID:glcgM5Mw(1) AAS
~---~~-~~---~----~~-~-~~---~--~~~-~-~~-~-~~----~~~~~~~---~~~~-~--~~~------~~
-~--~~~--~---~-~~~~-~~--~-~~-~-~-~~-~-~-----~----~~-~--~~-~--~-~-~~~~~-~--~~
~~-~~--~-~-~--~-~~~--~-~~~~--~~-~~-~---~--~-~~--~~-~---~~~~-~~~---~~---~----
--------~~~~~---~~-~~~--~~~---~-~~~~~~---~-~---~-~~-~-~~----~-~-~----~~~~~~~
-~--~--~--~~-------~-~~~~-~--~~~~~~-~~-~~--~~~~~~-~~~-~------~-~---~~-~-~~--
-~~~~~--~~~-~~~-~-~--~-----~~~--~~~-~~~~-~~---~~-~~--~------~~-~-~---~-~--~-
-~~-~-~-~~~~~~-~--~~~~-----~~-~~~---~~-~--~---~~--~~----~-----~--~~-~~-~-~~~
~~~---~-~~~-~~-~~~-~----~~~~----~~----~-~----~-~~~~-~--~~--~~~~-~-~-~~--~---
~-------~---~--~-~-~~~--~~--~~~-~-~--~--~~~~~-~~~--~~--~--~~--~~~~~~-~-~~---
--~--~~~~~~--~~~~~~---~~~~~----~----~~~--~~~~~~--~-------~~~~--~~~~~--------
省40
3
(1): 2019/09/13(金)19:17 ID:fzwPxfAJ(1) AAS
微妙に模様を変えやがって1おつ
4: 2019/09/15(日)11:37 ID:ks8YDs7J(1) AAS
WDTすらハングるてことやっぱあるよね?
5
(3): 2019/09/15(日)12:04 ID:sLhfGpgy(1/4) AAS
初心者です お願いします…
温度センサーから読み出した値の10回平均を出力したいです。
ネットで色々調べたのですがうまく行きません…
一番簡単な記述はどんな具合になりますでしょうか?
スケッチは以下です

void loop(){
int val = analogRead(A0); // 温度センサーの出力値を読み取る
float volt = map(val, 0, 1023, 0, 5000); // センサの出力値を電圧に変換
float temp = map(volt, 300, 1600, -30, 100); // 電圧を温度に変換

この変換されたtempを10回取得してから10で割って、
省2
6: 2019/09/15(日)12:28 ID:bpYY4V/5(1) AAS
最初の1回目から9回目はどう扱うの?
というか色々と試したとあるけど貼ってもらったほうが早いと覆うよ
7
(1): 5 2019/09/15(日)12:36 ID:sLhfGpgy(2/4) AAS
書き方が悪かったようです
10回計測した平均値のみを取り出して出力したい…の誤りでした。
8
(3): 2019/09/15(日)12:56 ID:5lisf+dq(1) AAS
float total = 0;

for(int i=0;i<10;i++){

 val = analogRead(A0); // 温度センサーの出力値を読み取る
 volt = map(val, 0, 1023, 0, 5000); // センサの出力値を電圧に変換
 temp = map(volt, 300, 1600, -30, 100); // 電圧を温度に変換

 total += temp ;

 delay(適当に);
}
省1
9: 2019/09/15(日)13:14 ID:XkJQ4elW(1) AAS
>>7
概略だけど、大域変数を宣言してsetup()で初期値を0にする
次にloop()内で局所変数の配列を宣言して、その配列[大域変数]に各回のセンサー値を代入しては、大域変数をインクリメントする
これを大域変数が9になるまで繰り返し、配列[0]から[9]まで加算して10で割り、Serial.print()で出力して大域変数を0に戻す
と言うのでは?
10
(2): 2019/09/15(日)14:52 ID:nJbL/fJ9(1) AAS
>>8
どううまくないのか書かないと。
あとスケッチは全部書く。
各行の間にserial出力を入れてSerial Monitorで値を見る。
11: 2019/09/15(日)15:19 ID:qG6hZd7u(1) AAS
>>10
おまえが書け
12
(1): 2019/09/15(日)16:01 ID:O1VAu+gr(1/3) AAS
/* 温度センサーDS18B20で10回計測した平均 */
#include <DallasTemperature.h>
OneWire oneWire(4); // 温度センサーのDATピン
DallasTemperature sensors(&oneWire);
float Tempdata[10]; // 取得データ列
int TempdataMax=0; // 取得データ数
int TempdataCnt=0; // リングバッファのポインタ

void setup() {
Serial.begin(9600);
sensors.begin(); // 温度センサー初期化
省15
13
(2): 2019/09/15(日)16:13 ID:wup9bbOr(1) AAS
配列組むとプログラムサイズが大きくなるから
単純に10回足して割る10ではどう?
14: 2019/09/15(日)16:23 ID:O1VAu+gr(2/3) AAS
そうだね、移動平均を使えば1000個の平均も取れる
近似値になってしまうけど、ピーキーな値を取り除くなら有効

/* 温度センサーDS18B20で100回計測した擬似移動平均 */
#include <DallasTemperature.h>
#define SAMPLE_COUNT 100 // サンプル数
OneWire oneWire(4); // 温度センサーのDATピン
DallasTemperature sensors(&oneWire);
float tmptotal; // 取得データの合計値
int TempdataMax = 0; // 取得データ数

void setup() {
省15
15: 2019/09/15(日)16:27 ID:O1VAu+gr(3/3) AAS
>>13
センサーの中には計測に0.7秒かかるのもあるから
DS18B20を高精度12bitモードで使用した場合がそれなんだけど
それだと7秒後に結果がでる
用途によるけどあまり実用的では無いよね
16: 5 2019/09/15(日)17:14 ID:sLhfGpgy(3/4) AAS
おお!こんなにレスが… 徹夜で悩んでたので寝てしまっていました…
>>10 さんのやり方で計測を20回にして少し精度の高い値を取れました
ありがとうございます!
>>13 さんもありがとうございます!こんな高度なコードは自分には
まだ無理そうですが今後の為に保存しておきます。

他の皆さんもありがとうございました!
最終コードは以下のようになりました

void setup() {

Serial.begin(9600);

void loop() {
省10
17: 5 2019/09/15(日)17:23 ID:sLhfGpgy(4/4) AAS
間違えました >>8 さんのやり方でうまく行きました
>>12 さんのやり方はまだ自分には少しコードでしたの誤りです
他の回答くれた皆さんもありがとう!
18: 2019/09/16(月)00:22 ID:odnGgdjR(1) AAS
サンプルコードは少ないコードで解りやすく簡潔にが鉄則
19
(1): 2019/09/16(月)12:21 ID:GCbRAGFo(1/2) AAS
Pro Microで、MsTimer2による割り込みで呼ばれた関数内でWireによるI2Cを行うと
Wire.endTransmission実行時に固まり、PCとの接続もできなくなって
RSTピンを2回GNDに落として接続と書き込みをし直さないといけなくなるんだけど
WireとMsTimer2を一緒に使っちゃいけないとか何かある?
このあとTimerOneも同時に別の目的で走らせようと思ってるんだけど・・・
20
(1): 2019/09/16(月)12:30 ID:hu90ndLO(1) AAS
>>19
こことか
http://kuchem.kyoto-u.ac.jp/kinso/weda/blog/?date=20180107
1-
あと 957 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.336s*