Arduino初心者熱烈大歓迎質問スレ part25
■ このスレッドは過去ログ倉庫に格納されています
>>54
基本的に回路に著作権はない
arduinoに関してはarduinoと名乗らなければ問題ない
逆にarduinoの回路はavrにusbシリアルくっつけただけに過ぎないわけだが
ブートローダーやusbシリアル変換に使ってるavrのファームは別な話になるけどね >>38
車載の水温センサーなんかは基本的にサーミスタでB特性の値から計算するのが普通だけどね
安いしただの抵抗だから耐久性も高いし必要十分な精度あるし
自作しようとするならネジに穴開けて埋め込むだけでいいし
昔の車なんかで見かけたのは精度いらなきゃ線1本で引き回しておしまい >>57
車載だと壊れにくくシンプルなの優先するだろうから
ラジエターの冷却液の沸騰上限と凍結下限さえわかれば
途中の温度狂っててもなんでもいいのでは?
CPUの内部温度もサーミスタですよね >>58
燃料の噴射量にも関わるので、あまり雑にはできない。
車内の水温計ならそんなレベル。 >>58
>CPUの内部温度もサーミスタですよね
PN接合の順方向電圧を使います。 >>58
まぁ水温で何をするかというと燃料補正
水温が低いときの増量や水温上がってきたときの補正とか
せいぜい10度単位とかだよ シリアルモニタのウインドウが表示されないのですが、どうすれば良いでしょうか。
ポート認識はしていて、(windowsタスクバーを見る限り)シリアルモニタ起動もしている様なのですが。
互換品のelegoo uno r3で、ソフトの再インストールはしました。 ARDUINO 1.8.10 2019.09.13
[ide]
*ライブフォントのサイズ変更がコンソールとシリアルモニターにも適用されるようになりました@ Pieter12345
* Windows @ Pieter12345のソースからIDEを簡単に構築できます
*超小型画面に適した、より小さな設定ウィンドウ
*ダウンロードしたjsonをキャッシュし、@ mattiabertorelloを変更した場合にのみ取得します
*ボードが突然切断された場合、シリアルモニターを一時停止する
*ライブラリは、libインストール中に提案される依存関係を宣言できるようになりました
* SerialPlotter:@chromhelmラベルの追加を許可
* Board Manager @vowstarのtar.xzアーカイブをサポート
* SerialMonitor:コマンド履歴を追加(矢印キーを使用)@ Pieter12345
*アクセシビリティ:設定@ joew46167でアクセシビリティを有効にするチェックボックスを追加
このモードでは、ナレーションとキーボードナビゲーションが大幅に改善されます。
例えば。リンクはアクセス可能なボタンになり、リストは苦痛なく矢印キーでスクロールできます
[wifi-updater]
*最新のNINAファームウェアを追加 [ハードウェア] *新しいavrツールチェーンをバンドル(5.4.0および64ビットの互換性を今後のmacOS Catalinaと修正)
[arduino -buidler]
* 1.4.7 への更新(新しいarduino-cliに基づく) タスクマネージャーで、起動してる(けど見えない)シリアルモニタウインドウを最大化したら見えるようになりました。
最大化をやめたらまたすぐ消えたんですが、少しいじっている間に直りました。
原因が分かりませんでしたが、とりあえず良かったです。 >>67
ディスプレイの表示範囲の外に表示されてただけでしょ。
arduino云々の話じゃなくwindowsの基本操作の範疇じゃね?
タスクバーにはシリアルモニタ表示ってやったときにarduinoIDEの二つ目のアイコンが重なって表示されてたはずだからそれのシリアルモニタ側のアイコンにカーソルあわせてちょっと上にカーソル移動するとシリアルモニタのサムネイル画像(っていうのかな?)が表示される。
この時右クリックのコンテキストメニューから移動って選ぶとカーソルキーとかで自由に画面外のwindowでも動かせるようになるんでそれで画面内に戻せばいい。
注意点としてアイコンの上右クリックじゃなくてサムネイルのうえで右クリックね。 すみません
やりたいことが有り、まだ座学なのですが、電子工作で可能なら始めたいと思っていて、
そのための情報集めている段階なのでテストなど出来ないのですが質問させてください
arduinoをコアに
8chのマルチプレクサ10個をデイジーチェーンでコントロールしたいと思っています
TC4051Bのようにデイジーチェーンの仕組みのないマルチプレクサでそのようなコントロールする場合、
I2CやSPIなどで通信するのがスマートな気がするのですが、
後付でそのような機能を提供するような汎用チップのようなものはありますか?
また、他にもっと簡単な方法がありましたら教えて下さい
用語などを間違っていましたらすみません 74HC595を4個直列にしてシリアル-32bit出力を作って
3bit毎に4051を10個ぶらさげればいけるけど
単純に595を10個並べて80bit出力にしたほうがシンプルだよな
16chの74HC4067も入手しやすいはず
こっちならIC9個で実現できる >>69のコピペ元の大本質問者です
初心者質問スレ その134
https://rio2016.5ch.net/test/read.cgi/denki/1566321111/753
コピペしたのは私じゃないす
>>72
ありがとうございます
元スレにて、
アドレスデコーダー
シフトレジスター
という情報いただき、調べる過程でIOエキスパンダーでも行けそう
という感じになっています
で、マルチプレクサなんですが、 実際にはデマルチプレクサとして使用で8チャンネル10個が必要な回路になります >>73
だったら4051じゃなくて14051じゃね
16bit IOエキスパンダー MCP23017
8bit IOエキスパンダー PCF8574 (LCD*I2Cアダプタに搭載してるやつ)
とかでも別にいいと思う
配線大変そうだけどがんばってね M5.Lcd.drawJpg(const uint8_t *jpg_data, size_t jpg_len, uint16_t x, uint16_t y);
xを-10、yを-20にしたいんですが、uint16_t となってるから負の値は指定出来ないんでしょうか? int16_tならいいのかな
int16_tの負の数ってどう表現したらいいのかな >>77
なぜスクリーン上の座標をマイナスにしたい?
画像の描画範囲をずらしたいなら、引数 offX offYで操作するんじゃないの? >>78
x, yは画像の描画の原点でデフォだと左上の0, 0になるんですが、
スクリーンのサイズよりも画像が大きいため、画像の右側と下側が見切れてしまいます
そのため、画像の中心がスクリーンの中心に来るようにx, yをマイナス値に出来ればなと思いました >>79
Docsを見るとメンバ関数はこうなんだが
void drawJpg(const uint8_t *jpg_data, size_t jpg_len, uint16_t x = 0, uint16_t y = 0, uint16_t maxWidth = 0, uint16_t maxHeight = 0, uint16_t offX = 0, uint16_t offY = 0, jpeg_div_t scale = JPEG_DIV_NONE);
引数 offX offYでjpegの描画開始位置を変えられない?ダメだった? >>80
わあ!ありがとうございます
ライブラリ見てたら
M5.Lcd.drawJpg(const uint8_t *jpg_data, size_t jpg_len, uint16_t x, uint16_t y);
しか載ってなかったのでsdカードから画像を読み込む関数と違って使える引数がほとんどないんだと思っていました。
試してみます >>80
うまく行きました
ありがとうございました M5Stackの画面に1秒間隔で時計を更新して表示する関数と5秒間隔で気温の測定とラズパイのデータベースをチェックする関数を作ってマルチタスクで動かしてみました。
画面には時計と気温が表示されていてラズパイのデータベースの値は画面には表示させてないです。
もし、ラズパイのデータベースの値があらかじめ設定した値を超えた場合は時計と気温を非表示にしてデータベースの方だけを画面いっぱいに表示させたいんですがそういうことって可能ですか?
時計の方の更新間隔を伸ばさないと無理ですか? 割り込み処理っていうの使えばいいのかなと思ったんですがそれってボタンやセンサーのような外部入力だけですか? タイマー割り込みを使えばいい。
"arduino 時間 割り込み"でぐぐってみたまい。
というかそもそも君のそのマルチタスクのプログラムというのは
タイマー割り込みを使用しないで出来ているのか? 割込み使ってれば>>84の書き込みにはならない
ポーリングなら>>83の質問にはならない
いろいろ謎w データベース値が設定値超えたら
時計表示をパスすりゃいいだろ
更新と表示を一緒くたにして作るからそうなる ど素人の俺からすると
単純にインタラプト入れればいいだけのように思う レスありがとうございます
現状ですが、
https://nagatani.github.io/posts/m5stack-dht12-temptoifttt/
を参考にxTaskCreatePinnedToCoreっていう関数を使いました。
んでsetup関数に以下を書きました。
xTaskCreatePinnedToCore(clockTask, "clockTask", 4096, NULL, 1, NULL, 0);
xTaskCreatePinnedToCore(tempTask, "tempTask", 4096, NULL, 2, NULL, 0);
clockTaskは1秒ごとに時間の表示、tempTaskは5秒ごとに気温の表示とラズパイへのアクセスです。
loop関数にはM5.update();だけ書いてあります。 arduino 時間 割り込み
ググってみました
現状は関数の中で例えばディレイを1000として時計を動かしていますが、そうじゃなくて、
まず5秒毎にラズパイのデータの確認をして設定値より低ければタイマー割り込みという機能を使って1秒毎に時計を表示する関数(clockTask)を動かす、5秒毎にtempTaskを動かすって感じでしょうか? タスク間で通信をするんだよ。一番初心者にも解りやすいのはグローバル変数で作ったフラグやデーターを使う事です。
まず、1秒毎に起動するタスクと5秒毎に起動するタスクをつくる。
1秒の方では現在時刻の取得、最新温度とデーターベースから取得された値の確認をして、条件に合致しなければ時刻表示、合致したらアラート表示。
5秒毎の方では温度の計測と保存、データーベースへのアクセスと値の取得を行う。
みたいにすればいい(一例です)。
割り込みを使わず泥縄式にloop(){delay(1000);every1sec();if(count++%5==0)every5sec();}でも
各時間毎の処理内容は同じで出来ます。どうするのが良いかはスキルとプログラムの要求仕様や規模などによる。よく考えてみてw timeInfoで201910062143って今の時間を変数に入れるのってどうやるんですか?
dday = timeInfo.tm_mday;って取り出したら06じゃ無くて6になっちゃう >>95
String imaNoJikan = "";
imaNoJikan = String(sprintf("%04d%02d%02d%02d%02d%02d", timeInfo.tm_year + 1900, timeInfo.tm_mon + 1, timeInfo.tm_mday, timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec));
ってやったら
invalid conversion from 'int' to 'const char*' [-fpermissive]
こんなエラーが出ました >>96
そらそやろ。sprintf の戻り値はintだからやで。しかも引数も間違えてるよ。 sprintfの出力文字列は第一引数にchar配列を入れて受けるんだよ
ググればすぐ出てくるだろに >>96
sprintfの戻り値ってintだから当然そうなる。あと第1引数は文字列を格納するバッファー。 char imaNoJikan[14];
sprintf(imaNoJikan, "%04d%02d%02d%02d%02d%02d", timeInfo.tm_year + 1900, timeInfo.tm_mon + 1, timeInfo.tm_mday, timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec);
Serial.print(imaNoJikan);
コンパイルのエラーは出ないけどシリアル見てたら再起動繰り返してるっぽいです >>101
今やったらちゃんとimaNoJikanの中に入っていました
>>97
>>98
>>100
どうもありがとうございました >>101
今の時間の2秒前ってどうやって求めるんですか? 1970/1/1からの秒数のまま計算するんじゃない? 今の時間の2秒前のUnix時間を作ってそこから
>>101 みたいに変換する感じですかね?調べてみます >>105
JST変換するとき9時間足すのを
8時間59分58秒足す感じで DCモータ2軸制御のためにArduinoシールドを探しています。
動かしたいモータはマブチのRS-280RA-2865で、特性は
URLのような感じになります。
https://i.imgur.com/wbAO6r0.jpg
モータは起動時には最大出力で回り、以降はバランスをとるためにほぼ0rpmあたりになる予定です。
ざっと見た感じ、AdafruitのServoShieldしか見つかりませんでしたが、
これでも十分動作できそうですか? 電源電圧何ボルトなの? 静止時に流れる電流に耐えられれば使える
3ボルトで4.7Aとはまあ結構流れちゃうねぇ。 >>108
マイコンボードはSTM32の予定です。
電源電圧を複数用意するのは面倒なので5Vを3Vに降圧しようと考えています。 >>101
imaNoJikanに終端文字の\0が入る領域が足りてないが大丈夫か? Nano Everyの出荷始まってるけど話題ないの?
Pro Miniで充分だから? 10倍の価値があり、総務省様のお眼鏡にかなえば
そのうち話題になるやろ、どっかでw 照度を調べたいのでフォトトランジスタNJL7502Lを買ってみました
CdSセルに比べてちょっと向きを変えただけで大きく値が変わってしまって難しいです
必要な抵抗値とArduinoでの計算式が知りたいです
10kΩの抵抗を付けてAnalogReadを1024で割って3.3をかけたらいいんですか? >>116
https://www.njr.co.jp/products/semicon/PDF/NJL7502L_J.pdf
半値角が±20度しかない(データーシート4頁のDirectivity参照)。
これはレンズによるものだから、CdSに近づけたいならレンズを削り取る。
照度換算は、10kΩ負荷で5V系ならanalogReadの値に1.48を掛けるんだな。
感度が33μA@100Lx。10kΩ負荷では0.33V@100Lxよって3.3mV/Lx。
float Lux = analogRead(ch) * 5.0/1024 / 0.0033;
なお、15kΩ負荷にすればanalogReadの値が即Lux値になるから小数計算不要で高速化。 >>117
どうもありがとうございます!
NJL7302L-F3だと±55度だそうなのでこっちの方が使いやすいですか?色が黒なので赤外線用っぽく感じたので。
直列で10kΩ+1kΩ+1kΩ+1kΩ+1kΩ+1kΩと繋ぐと15kΩになりますか? >>118
これでやると蛍光灯の室内で130前後でiPhoneのライト当てると986くらい
16bitのADC使った方がいいんでしょうか? NJL7502L ピ−ク感度波長 560nm
赤外線 850-940nm
560nmは緑ー黄緑 うーん全く分からない…
廊下持っていくと照明ついてるのに0にしかならない >>118 >直列で10kΩ+1kΩ+1kΩ+1kΩ+1kΩ+1kΩ…
OKだよw
でも10kΩを2つ並列にしたら5kΩになるから、これと10kΩを直列にしたら全部で3個で済むよw
>>119
16bit必要かどうかは、何をどう計りたいか、という君の要求仕様による。
7.5kΩを負荷にしたらanalogRead()*2がLux値になるから2047Luxまでいける。最小分解能はもちろん2Luxになる。
晴天時野外とかは数万Lux有ったりするけど、人間用の室内照明で1000Lux越えるのは珍しい。といった条件を総合して考える。 >>123
>ACD
部屋の電気を消すだけで数値は必ずゼロになってしまうから気になりました
実際には真っ暗じゃないです ProMicroを使用してPB,PD,PF合計額18個のピンでdigitalReadをfor文で18回繰り返してるんですが、
もしかして一度、もしくはポート毎の3回とかでバイナリ値で取れたりしますか? >>124
人の目は慣れると1ルクス以下でも見えるからな
計測するなら対数変換するかレンジ切替とかした方がいいんじゃないかな >>125>>126
入力を拾うのはPINxレジスタの方だね
PORTxは出力を設定する方
マイコンのポートとArduinoのピン番号の対応をぐぐれば同じポートのピンはまとめて取れる 半年前に作ったプログラムと回路が難しすぎて、どのように動作しているのか理解出来ない ど素人です。お手柔らかにお願いします。
VCCから5Vを取り出して大体0.5Vにしたいので分圧しました
10kΩと1kΩ直列にしてグランドにつないでみました
VCC→10kΩ→0.5V取出→1kΩ→グランド
0.5V取り出したら分岐して6個のセンサーを付けて
センサーからそれぞれA0〜A6につなげた場合
A0〜A6各それぞれの入力インピーダンスは10kΩということでいいのでしょうか? >>131
違う
というか色々繋ぎ方にも疑問があるのでセンサーの型式と回路図(ちゃんとした記号を使った奴じゃなくてもいい)をあげてほしい >>131
それで分圧した場合、0.454v位のはず
また、0.5v-センサ-アナログ入力ってなにか違う気がする
たとえばこんな感じゃない?
(ただし分岐しない前提)
抵抗----0.5v----アナログ入力
|
センサ
|
グランド アナログ入力の電圧はArduinoの1.1Vを使います
交流なので本当はまんなかの0.55Vが理想なのですが
多少はズレても一定であればプログラムでなんとかなりそうなので0.45Vくらいとします 「10kΩと1kΩで分圧したインピーダンス」は、テブナンの定理と言って約909Ωです
単に0.5Vの電源を作りたいって場合は、オペアンプを使った手法(単電源で仮想GNDを作るときによく使う) >>137
クランプ式電流センサを使用して交流の電源(おそらく100vや200vの商用電源)
の消費電力(流れてる電流)を測定したいって事かな?
基本的な考えはOKだと思いますが、VCCの電圧とArduino内蔵のFVR?(内蔵基準電圧)を使うと測定値が安定しないと思います
今回のような場合、AREFを使って外部のリファレンス電圧を参照した方がよいと思います
例えばVCC-R8K-R1K-R1K-GRDの様な分圧用抵抗を用意する(R8KはR3.3K+4.7K or R1.2K+6.8K等)
R8K-R1Kこの間からAREF用の電圧(1.0V)を得る
R1K-R1Kこの間から0.5Vの電圧を得る
センサが1:2000+R1Kだとして0.7A位まで測定できるかな・・
この回路で同様のセンサーを複数繋いでも問題は(測定結果の誤差など)無いはずです
(クランプ式センサー使ったことがなく、Arduinoも昨日始めたばかりなので間違えてたらごめん!) >>137
あと、測定するものが電熱器みたいのならその回路でも大丈夫だけど、
電流が絶えず細かく変化する相手(電熱器以外の殆ど)ならサンプルレートを考慮しながら
クランプセンサの抵抗と並列にコンデンサを繋いで測定する電圧の変化を安定させたほうが無難だとおもう
Arduinoがどの位の性能か把握してなく可能か不明だが、1秒当たり数千回×センサーの数のサンプルが必要なのでは? 遅くなりましたが皆さんありがとうございます
>>138テブナン定理大変勉強になりました
オペアンプこれから勉強してみます
>>139
確かに安定しないのです
ソフトウェアローパスフィルター入れて無理矢理安定させてる感じです
教えていただいた回路試してみます
楽しみです
>>140
測定するものはAC100〜220V50Hzで電流は1mAから1A程度までで常に変動しています
交流なのですがコンデンサ入れた方が良いのですか?
50Hzなのでサンプリングレートは特に問題ないと思っています
そうですね今暗算したところその程度の回数は必要ですね
回数はまだカウントしたことはないですが
以前計算してみたところ全然余裕で逆に制限を入れるか検討していたところです
回数は実際見た方がいいので確認しようとは思っています >>141
>交流なのですがコンデンサ入れた方が良いのですか?
コンデンサを使用するのは手段の一つだと思います、回路次第で他にも手段が有るので・・・
サンプル速度にもよりますがサンプルの間で電流が激しく変動するなら何らかのフィルターが必要だと思います
サンプル速度を上げてなるべく小さなコンデンサを使うことで誤差を少なくできるかと
また、クランプ式の電流センサーのコイルがある程度フィルターとしても機能してるので必要ない可能性も・・
センサーの抵抗にコンデンサはあれだったので(強引)以下のようなRCフィルターはいかがでしょうか?
センサ ーー抵抗ー+ーAD入力 ←(コイルの出力とAD入力の間にまず抵抗を加える)
|
コンデンサ ←コンデンサで細かな変動を減らす
|
分圧の0.5V
追伸
>A0〜A6各それぞれの入力インピーダンスは10kΩということでいいのでしょうか?
今回のような回路の場合、分圧の抵抗から電流が流れないので
分圧抵抗は入力インピーダンスには関係ないはずです
後は・・まあもっと詳しい人が教えてくれるかと・・・ ↑図面っぽおいのがブラウザによってズレてるので・・・
コンデンサの位置は抵抗とマイコンの間です 交流のまま取り込む訳だから毎秒数百回サンプリングしてソフトで全波整流
してローパスフィルター掛ければいいんじゃね? Pythonの場合、何もしない関数やif文の場合、中に「pass」と書いておけばいいんですけどArduinoだとどう書いたらいいですか? ブロック内に何も書かなければなにもしない
if (true) {
}
else {
}
void func1()
{
} 回路の質問をした者です
大変参考になりました
ありがとうございます
また質問させていただきます 本当の素人質問で申し訳ないのですが、
5vをつないで回路を作るときと5vをつながずに回路をつくるときの違いがわかりません
ぜひ教えてほしいです >>150
参考にした回路図があるんだろうから画像かなんかで見せて >>150
Arduino UNOとかマイコンの出力には5Vが出ているが
LED1個か2個点灯させる程度のドライブ能力しかない
もっとたくさんのLEDやモーターなどを使いたい時は
トランジスタやFETをスイッチさせて、
外部から供給した5Vを制御する回路が必要となる
基準は40mA超えるかどうか >>153
質問者の意図に合ってるかは分からないが、推理力に感心した。 ■ このスレッドは過去ログ倉庫に格納されています