~---~~-~~---~----~~-~-~~---~--~~~-~-~~-~-~~----~~~~~~~---~~~~-~--~~~------~~ -~--~~~--~---~-~~~~-~~--~-~~-~-~-~~-~-~-----~----~~-~--~~-~--~-~-~~~~~-~--~~ ~~-~~--~-~-~--~-~~~--~-~~~~--~~-~~-~---~--~-~~--~~-~---~~~~-~~~---~~---~---- --------~~~~~---~~-~~~--~~~---~-~~~~~~---~-~---~-~~-~-~~----~-~-~----~~~~~~~ -~--~--~--~~-------~-~~~~-~--~~~~~~-~~-~~--~~~~~~-~~~-~------~-~---~~-~-~~-- -~~~~~--~~~-~~~-~-~--~-----~~~--~~~-~~~~-~~---~~-~~--~------~~-~-~---~-~--~- -~~-~-~-~~~~~~-~--~~~~-----~~-~~~---~~-~--~---~~--~~----~-----~--~~-~~-~-~~~ ~~~---~-~~~-~~-~~~-~----~~~~----~~----~-~----~-~~~~-~--~~--~~~~-~-~-~~--~--- ~-------~---~--~-~-~~~--~~--~~~-~-~--~--~~~~~-~~~--~~--~--~~--~~~~~~-~-~~--- --~--~~~~~~--~~~~~~---~~~~~----~----~~~--~~~~~~--~-------~~~~--~~~~~-------- -~--~~-----~--~-~~~~~~~~~~~-~~~~-~~-~---~~--~-~--~~--~-~~--~~-~-------~~~--- ----~~--~-~~---~~~-~--~--~~-~~~~~~~~-~-~~-~~--~--~~-~~-----~-~---~-~~~~-~--- ~--~~-~-~~~--~-----~~----~~~----~-~-~~-~----~--~~~~---~~-~-~~~--~~~-~-~~~-~~ ~~-~-~~~-~~-~~~~-~-~---~~--------~---~~-~-~-~--~--~--~~~~~~--~~-~~-~~---~--~ ~~-~~~~~-~~~---~~------~~~~----~-~-~--~-~--~~-~-~~--~~-~~----~-~~-~~--~---~~ ~~---~~-~~~-----~-~--~~-~~--~~~~~---~-~-~~--~~~~--~~~--~~~-~~--~----~~---~-- ~----~--~~-~~~-~~~---~-----~~-~~--~-~~-~~-~~~~~-----~-~~~~~~~--~~--~----~--~ ~~-~~------~~~~~-~-~---~~~---~-~---~~-~-~~-~~---~-~-~~-~--~--~---~~-~~~~-~~- ~~~--~~-~~~--~~-~~--~~-~~---~-~~~-~~~~----~~------~~---~--~-~--~-~~--~-~-~~- ----~--~-~~~~--~-~-~--~--~~~-~~-~--~-~~-~~-~~-~-~~--~---~-~-~-~~~---~~~--~-~ ~--~~-~~-~-~---~~~~---~---~~~--~~----~-~~--~~~-~-~-~-~~-~-~-~~~~-~~-~-~----- -~~~~~~~~---~-~-~-~-~~------~~~~~----~-----~---~~-~~---~~~--~~~-~~~--~--~-~~ ~~~~---~~-~~--~~--~~~--~-----~----~-~~---~~-~~------~--~~~-~~-~-~-~~-~-~~~~~ ~-~-~-~--~-~~~~-~~---~-~~~~-~-~--~~----~~~~~~~-------~-~~-~~-~--~~~-----~~-- ~~---~--~~~~~--~--~-~~-~~~--~~-~~~~~---~-~~~~-----~-~-~-~~~-~-~------~~---~- ~-~~~~-~-~~~------~~~~-~-~~-------~---~-~~~~-~~----~---~-~~--~~~~----~~~-~~~ ~--~~~~-~-----~~-~~-----~-~-~~~~~-~-~--~~--~--~~~-~--~-~~~~~~~~~-~-~-------- ~---~---~-~-~~-~-~~~-~--~~~-~--~--~~-~-~--~~-~-~~-~~~~~--~-~~--~---~~----~-~ ~---~~~~~~-~-~~~-~-~~-~--~--~~--~~~~~~~---~--~--~-~~----~~~-----~~-~-~-~---- -~-~~--~~----~--~~-~--~~-----~~--~--~~~--~-~~~~---~-~~~-~~---~-~-~--~~-~~~~~ -~--~~-~--~--~--~--~~--~--~-~-~----~~~--~-~~~---~-~-~-~-~~~~~~-~---~~-~-~~~~ ~~~~---~--~~~--~----~~~~~~--~--~~-~-~~~~~-~---~-~~-~~-~-~-~--~-~-~-~--~----- --~-----~~--~~~-~-~~~--~~~-~--~--~---~~--~--~-~~--~~~~~---~~~--~~~-~-~~-~--~ ~~-~~-~~--~~-~~~-~--~-~~~----~~-~-~--~-~~-~~-~-~~-~----~--~--~~---~-~~-~-~-- -~~~-~--~-~~~----~-~~--~-~~--~~-~~--~-~~-~~--~~~~~-~~~-~--~---~~~--~----~--- ~~~--~----~----~~---~~-~~~~~----~-~~~-~~---~~~~~-~--~-~-~~-~~--~~-~--~---~~- -~--~~~---~-~~~~-~~~---~-~-~~~-~~-~~-~~~~--~~~~--~-~--~-~~----~~----~~------ ~~---~~~~~-~~----~~--~~-~-~-~~~--~~~----~~~~~~--~~--~--~------~---~~--~~~--~ -~---~~~~~--~~-~----~~---------~-~-~--~~-~-~~~-~~~~-~~~~~~----~--~-~-~--~~~~ ~~--~-~---~---~-~-~-~~-~-~~---~~--~---~-~---~~-~~-~-~~-~--~-~~-~~-~~~-~--~~~ -~-~~----~~~~~-~-~~-~---~~----~-~-~~-~-~-~--~~~-~-~~~--~-~~-~~---~~~-~-~---- ~-~--~-~---~--~~-~------~~-----~-~~~~-~-~-~---~-~~---~~~~-~~~~-~~~~~----~~~~ -~~~---~---~~~~~-~~--~-~-----~-~--~~~~~----~~~-~~--~-~~~--~~-~~~~~-~------~- -~-----~-~~~-~~~~-~~---~-~-~~~--~~~-~-~--~---~-~~--~~~---~-~-~~~-~-~--~~--~- ~-~~~--~~-~~~~~~--~-~-~~~--~-~-----~~~~-------~-------~~~--~~-~-~-~-~~-~-~~~ --~-~---~~-~~-~--~-~-~---~~--~--~----~--~~~~~----~-~-~-~-~-~~~~~~~~-~--~~-~~ -~-~~-~--~~--~-~~--------~-~~~~-~-~~~-~-----~-~~~~~~~---~-~~~~---~-~~~---~-~ -~-------~~~~-~~~-~~--~~~-----~-~~---~~-~~-~-~~-~---~~~~-~--~-~-~~-~--~--~~~ ~~-~-~~-~~~~-~~---~-----~~~--~~~-~-------~--~--~~-~~~---~~-~~~-~~--~~-~-~~-- -~---~--~--~---~~-~---~~--~-~~-~~-~~-----~~~---~~~--~~~----~~-~~~~~-~--~~~~~
初心者です お願いします… 温度センサーから読み出した値の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で割って、 Serial.print(temp-average);で出力したいです。 for文を使って色々と試してはみましたが… よろしくお願いします。
最初の1回目から9回目はどう扱うの? というか色々と試したとあるけど貼ってもらったほうが早いと覆うよ
書き方が悪かったようです 10回計測した平均値のみを取り出して出力したい…の誤りでした。
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(適当に); } Serial.print(total/10);
>>7 概略だけど、大域変数を宣言してsetup()で初期値を0にする 次にloop()内で局所変数の配列を宣言して、その配列[大域変数]に各回のセンサー値を代入しては、大域変数をインクリメントする これを大域変数が9になるまで繰り返し、配列[0]から[9]まで加算して10で割り、Serial.print()で出力して大域変数を0に戻す と言うのでは? >>8 どううまくないのか書かないと。 あとスケッチは全部書く。 各行の間にserial出力を入れてSerial Monitorで値を見る。 /* 温度センサー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(); // 温度センサー初期化 } void loop() { sensors.requestTemperatures(); // 温度取得要求 188ms Tempdata[TempdataCnt]=sensors.getTempCByIndex(0); if (TempdataMax<10) TempdataMax++; float tmpavr=0; // 平均の算出 for (int i=0;i<TempdataMax;i++) tmpavr+=Tempdata[i]; tmpavr=tmpavr/TempdataMax; Serial.print("datacnt="); Serial.print(TempdataMax); Serial.print(" new="); Serial.print(Tempdata[TempdataCnt]); Serial.print(" average="); Serial.print(tmpavr); Serial.println(""); TempdataCnt=(TempdataCnt+1) % 10; delay(300); } インデント崩れると思うので CTRL+t で整形してちょ
配列組むとプログラムサイズが大きくなるから 単純に10回足して割る10ではどう?
そうだね、移動平均を使えば1000個の平均も取れる 近似値になってしまうけど、ピーキーな値を取り除くなら有効 /* 温度センサーDS18B20で100回計測した擬似移動平均 */ #include <DallasTemperature.h> #define SAMPLE_COUNT 100 // サンプル数 OneWire oneWire(4); // 温度センサーのDATピン DallasTemperature sensors(&oneWire); float tmptotal; // 取得データの合計値 int TempdataMax = 0; // 取得データ数 void setup() { Serial.begin(9600); sensors.begin(); // 温度センサー初期化 } void loop() { float tmpavr; sensors.requestTemperatures(); // 温度取得要求 188ms float tmpnew = sensors.getTempCByIndex(0); if (TempdataMax < SAMPLE_COUNT) { TempdataMax++; tmptotal += tmpnew; } else { tmptotal = tmptotal / SAMPLE_COUNT * (SAMPLE_COUNT - 1) + tmpnew; } tmpavr = tmptotal / TempdataMax; Serial.print("datacnt="); Serial.print(TempdataMax); Serial.print(" new="); Serial.print(tmpnew); Serial.print(" average="); Serial.print(tmpavr); Serial.println(""); delay(300); }
>>13 センサーの中には計測に0.7秒かかるのもあるから DS18B20を高精度12bitモードで使用した場合がそれなんだけど それだと7秒後に結果がでる 用途によるけどあまり実用的では無いよね おお!こんなにレスが… 徹夜で悩んでたので寝てしまっていました… >>10 さんのやり方で計測を20回にして少し精度の高い値を取れました ありがとうございます! >>13 さんもありがとうございます!こんな高度なコードは自分には まだ無理そうですが今後の為に保存しておきます。 他の皆さんもありがとうございました! 最終コードは以下のようになりました void setup() { Serial.begin(9600); void loop() { float total = 0; for (int i = 0; i < 20; i++){ int val = analogRead(A0); float volt = map(val, 0, 1023, 0, 5000); float temp = map(volt, 300, 1600, -30, 100); total += temp; delay(100); } Serial.println(total / 20); } 間違えました >>8 さんのやり方でうまく行きました >>12 さんのやり方はまだ自分には少しコードでしたの誤りです 他の回答くれた皆さんもありがとう! サンプルコードは少ないコードで解りやすく簡潔にが鉄則
Pro Microで、MsTimer2による割り込みで呼ばれた関数内でWireによるI2Cを行うと Wire.endTransmission実行時に固まり、PCとの接続もできなくなって RSTピンを2回GNDに落として接続と書き込みをし直さないといけなくなるんだけど WireとMsTimer2を一緒に使っちゃいけないとか何かある? このあとTimerOneも同時に別の目的で走らせようと思ってるんだけど・・・
>>20 サンキュー同じの見つけてた 確かにsei()を入れたら意図した動作をするようになった リファレンスにsei()とcli()が載ってないなあ どうしても必要な場合以外、通信の記述はメインループでやるように書くのが吉
割り込み処理中に別の割り込みの記述するとか 長い処理書くとか頭おかしいのか? 割り込み処理内にはフラグ立てるとか カウンターのインクリメント程度に留めて メイン側でフラグ見て処理すべきだろ 割り込み処理内に色んなことしてたら スタックの消費もバカにならんし デバッグもめんどくさいだろうに
初心者なんだからそんなもんだろ わけのわからんエラーが山のように出たり 場当たり対応して他の割り込みころしてたり 色々痛い目にあって成長してくもんだ
質問です! 3つの信号出力を持っているセンサーが2つあって、Arduinoへの入力は3本1系統しかないから、レールを切り替えるように手動で切り替えられるようにしたい。 ピンヘッダを考えたけど、もっと省スペースで済ませられる方法はある?
スケッチの質問なんですが関数を作成した時、LOOPの前と後どちらに書いた方がいいとかありますか?色々とスケッチを見ていると決まりはないように見えるのですが気になっていまして。
前に書かないとエラーになった時あったな だからいつも前に書いてる
>>28 暗黙の宣言、暗黙の関数宣言 とかでググってみてください。 Arduino IDEでは>>29 の言うように一時期あったけど、いまはどうでもいいみたい、好みで。 水温センサーをarduinoで利用したい。 amazonとかで買える汎用のセンサーをお湯とか使って何度でいくつの抵抗値か調べようと思ってる。 調べた特性をグラフにしてarduinoのアナログ入力で読み取る予定。そこで気になったんだけど、グラフが比例してれば、プログラムの対応は出来る。 もしグラフがしっかり比例していなかった場合は、どうプログラムを組めばいいのかな?
どんなセンサー使うつもり? 熱電対でやったことあるけど誤算範囲でほぼ完璧にリニアだった。 補正すること自体を体験的にやってみたいなら別だけど意味無くね?
>>33 普通にXYグラフ描くつもりでいい グラフ描くときに比例してるとこで区切って座標とって描くだろ? データとしてはその点の数だけのXY座標があるじゃん で、入力値がX座標のどこにあるか判別して その両側の2点を得る あとはmap命令で済むだろ >>33 温度センサーはDS18B20がオススメ 抵抗値や電圧じゃなくて温度がデジタルで読める 校正とかいらない 防水ステンレスキャップで延長コードついたのも200円くらい >>35 まだ調査してないから、リニアか分からないけど、車の社外水温メータpivotに付いてた水温センサーをそのまま使いたかったんだよ。 他の人が教えてくれたデジタルのセンサーでもいいんだけど、センサー先端のネジとかをどうやって作ればいいんだろう? >>36 この方法が自分の知識で今すぐ出来るやり方だと思う。変換テーブルはまだ使ったことないけど、勉強してみます。 ありがとう。 >>33 ExcelとかRで回帰分析して回帰式を用意するのが良いと思う。 プログラムは1次式ではなく、求めた回帰式を利用するだけなので簡単。 33が回帰式のモデルとなる式(2次式、3次式、etc)を用意する必要があるのと回帰分析の知識が必要。 ググればなんとかなるとは思う。 >>36 の書き方だとプログラムするのに誤解しちゃうかもな 両側の2点を得る、じゃなく分岐処理するだけでよい せいぜいグラフは3つの直線で済むだろう そうすると3つのmap命令を用意して あとは入力値で分岐処理、だな >>42 入力値で分岐して、その中のmap関数で数値を出すんですね。グラフの特性に合わせて分岐を増やせばいいのか・・・ なんとかやれそうです。 ありがとう! >>41 回帰分析をググったけど、まだarduinoにスケッチするとこまで行くのは難しそう。 みんなこんなすごいのを、さらっとやっちゃうんですか?スゴいです。 >>44 Arudinoでは回帰分析はしないよ。多分できなくはないけど大変だよ。 調べたサンプルの回帰分析はPCでして、読み取り値のxからyを推定する回帰式を作るんだよ。 33は比例と書いているけど、回帰分析ならば、1次式以外にも3次式とか対数式に近似する回帰式も作れるよ。 回帰式さえ作っちゃえば、Arudino側は回帰式に読み取り値xを入れれば、yが返ってくるので、読み取り値で条件分岐するとかが不要になるよ。 >>45 仕事の合間に回帰式を勉強してきました。重回帰分析じゃないんで、一次関数でいけるかな。式さえ出来れば関数作ってコールしてデータ入れれば結果が出せますね。式が出来るかなぁ。まずはグラフを作るか。テスターと温度計用意だね。 >>46 1次ならググるとExcelのデータ分析を利用する例がたくさん出るから頑張って。 最低でも10から20はサンプル必要だろうから、実際の特性調査の方が時間が掛かると思うよ。 折れ線グラフを扱う汎用的なのを作っておくといろいろ便利だよん
みんな凄いなあ 初心者から見るとカッコいい〜 オレも頑張るぞっと pythonも少しやり始めたんだけど 分析してグラフ化はこっちに任せたほうが良さそうだね
>>33 自分もDS18B20が楽で良いと思う。 ただ、校正はいらないけど個体毎の誤差は結構あるので、最初にまとめて温度とアドレス控えておいた方が良いかも。5個買って1℃位の差があったので、そこは補正してる。 技術的な質問じゃなくて、法律・倫理的な質問なんだけど、 LeonardとかでVIDやPIDを書き換えるのって違法になる? メーカーが金を出して所得した番号を使う時点で違法確定なのか、 販売はNGだが、個人ならokなレベルなのか、 それとも技適警察みたいにネット上では批判される程度のものなのか。
業界団体規格なので違法にはならんでしょう。USBx.x準拠とかうたったら優良錯誤で違法になるかもしれんけど。
Arduino UNOの回路をばくって、USB付きの目覚し時計を自作して売ったら、何か駄目な事ってある?
>>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個で実現できる
>>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 今の時間の2秒前ってどうやって求めるんですか? 1970/1/1からの秒数のまま計算するんじゃない?
今の時間の2秒前のUnix時間を作ってそこから >>101 みたいに変換する感じですかね?調べてみます >>105 JST変換するとき9時間足すのを 8時間59分58秒足す感じで DCモータ2軸制御のためにArduinoシールドを探しています。 動かしたいモータはマブチのRS-280RA-2865で、特性は URLのような感じになります。 モータは起動時には最大出力で回り、以降はバランスをとるためにほぼ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 質問者の意図に合ってるかは分からないが、推理力に感心した。 すみません ほんとの素人なので質問もうまくできないんです 質問を変えさせてください この画像の回路図ってどうなってるのですか? これ絵には書いてないけどArduinoにはACアダプタかUSBが刺さってる前提の回路だね このままだと電源がないから何の反応もないよ
>>155 あーうー、13番ポートとGNDの間にLEDがぶっささってるが、5Vが無いと言う意味か? 13番ポートには5Vか0Vのどっちかが出力されるから、5VはArduinoの中から来るんだよ。 (ちなみにポートにLEDを直接繋ぐのは関心しないのだが、これはそのうち。) 次に、図の上の方にある回路に5V(とGND)が供給されている=5Vが必要なのはなぜかという事だ(ろう)が、 これは7番ポートが入力だからだよ。Arduinoが入力だから、5V(かGND=0V)は回路側で用意する必要があるから、 Arduinoの電源ポートからもらって来来る必要があるんだよ。 >>156 なるほど!!!! OUTPUTに指定したピンは電圧の源みたいに考えて大丈夫ってことですよね? >>155 あなたの持っている「Arduinoを始めよう」をちゃんと読めばそこにすべて書いてある。 自分が読んで理解した内容を踏まえて質問するべき。 あえてどこからの引用か隠して質問する意図は何? >>158 そのとおり!でも、20mA、最大40mA程度しか流すことができない。 そこで>>153 さんの言ってることが役に立ってくる! >>155 質問の内容が判ったかも 図面のLEDはあくまでボード上の内蔵LEDの代わりに表記してると思われるのでスルーします。 質問は押しボタンスイッチの接続の方法が主に3種類あってそれぞれの違いを知りたいって事だと思います。 1・ 5v(vcc) ― sw ―ポート 加えて sw―ポートの間に抵抗を繋いでGNDに接続 2・ GNDーーswーーポート swとポートの間にに抵抗を繋いで5v(vcc)に接続 3・ GND ― sw ― ポート 上から 1、入門者向きボタンを押したら入力がHIになる 2、ボタンを押したらLOWになる 3、内蔵のプルアップ機能を使用する 2で使用してる抵抗と同等のものがチップに内蔵してるのでそれを使用する(ボタンを押したらLOWになる) >>157 ありがとうございます!これのレスのおかげでかなり理解がすすみました!! >>159 すみません 引用を言い忘れていました 別に他意はないです 本を読んでもわからなかったので質問させていただきました >>160 なるほど! もっと理解が進んだときに役に立出られるように覚えておきます >>161 難しいですが、ちょっと考えてみます わかりづらい質問を何回もして申し訳ないのですが、 LEDの方とスイッチの方の回路は別々と考えてもいいってことですよね?スケッチで指示しているから、ボタンを押したときにLEDが付くという認識でいいでしょうか あとOUTPUTに指定したポートから出て最後にINPUTのポートに戻るような回路はダメなのですか? OUTPUTが出力でINPUTが入力という理解ならば大丈夫なように思えるのですが、調べてみたらI/Oポート同士を繋げたらショートすると書いてあったので混乱してます
>>166 別にどうつなごうと勝手にすればいいが、+出力とGND出力をつないだらショートして 大変なことになるだろうことは想像できるでしょ 自分で出力したものを自分で入力するなんてのは無駄だから普通はやらないってだけ。 5Vと12V、二つのACアダプタのGNDをつないで、回路の5Vと12Vの入力に使ったら、爆発するのかな?
抵抗なしでLED繋ぐ奴多いな、UNOぶっこわれるのに 壊れ方は爆発とかしなくて、出力状態に関わらずLEDが点灯してしまうとか 別のピンオフにすると壊れたポートもオンになるとか 指でGNDに触れると出力状態が変わるとか そんな感じの壊れ方になる場合が多いよ
>>167 >自分で出力したものを自分で入力するなんてのは無駄 普通にやるだろ センサー入力を止めたい 外部ICでデコードする シリアル制御線がループバックになってる 等 >>166 Q)あとOUTPUTに指定したポートから出て最後にINPUTのポートに戻るような回路はダメなのですか? A)OK Q)OUTPUTが出力でINPUTが入力という理解ならば大丈夫なように思えるのですが、 A)OK Q)調べてみたらI/Oポート同士を繋げたらショートすると書いてあったので混乱してます A)場合による INPUTに設定したI/Oポート同士を繋げた=OK INPUTに設定したI/OポートとOUTPUTに設定したI/Oポートを繋げた=OK OUTPUTに設定したI/Oポート同士を繋げて、両方のピンが0Vになってる=セーフ 〃、両方のピンが5Vになってる=セーフ 〃、片方が0V,もう片方が5Vになってる=アウト 元の文は”I/Oポート同士を繋げたらショートする場合があるので注意”ではないだろうか Hi/Loとハイインピーダンス組み合わせてIOピンより多いLED制御するトリッキーな回路思い出した
俺はラダー抵抗によるDA回路が頭に浮かんでしまうな
>>171 なるほど! I/Oポート同士を繋げたら絶対にショートするわけではないのですね! とてもわかりやすい解説ありがとうございます! >>174 なんでかっていうと 短絡(ショート)とは、電位差のある2つ以上の点を、非常に小さい抵抗値の導体で接続することをいいます。 だからね。 >>166 もしかしてINPUTを電流が帰ってくる所だと思ってないか? OUTPUTから電気が出てきて、INPUTに入っていく分けじゃないぞ D0→抵抗→LED→D1 のときD0とD1はどっちもOUTPUTだぞ(D0がHIGH、D1がLOWで点灯) 5V→抵抗→LED→D2 のときD0もOUTPUTだし(D2がLOWで点灯) D3→抵抗→LED→GND のときD1もOUTPUTだぞ(D3がHIGHで点灯) マイコンの入力と出力だからな >>178 2,3行目のD0,D1はD2,D3の書き間違え 読み替えといて >>170 なんか誤解してるようだけど、出力ポートをそのまま入力ポートにつなぐなんてのはめったにやらん というかやらん。 >>175 ショートのことをよくわかってませんでした ありがとうございます! >>178 すみません たしかになんかごちゃごちゃに考えてました INPUTに指定したピンをdigitalReadなどで情報を読み取り、OUTPUTでその情報を受けてなにかの結果を出すということですよね? でもこのINPUTピンの使い方がよくわかりません >>155 にあげさせてもらった回路もどのような電気回路で電圧を読み取るのかわからないです あと D0→スイッチ→抵抗→LED→D1 としたときはINPUT OUTPUT の関係はどうなるのですか? そもそも足し算や引き算を理解できていないような状態で 掛け算や割り算を理解しようとしているようなもんだから ここで質問したところで回路を理解するには自ずと限界がある 遠回りのようでも電子回路の基礎知識を身につけた方がいい
>>180 キーマトリクスで使うだろ 4ピンでスキャン出力して4ピンで入力 4x4=16ボタンの状態を知る 元の質問は Q> OUTPUTに指定したポートから出て最後にINPUTのポートに戻るような回路回路はダメなのですか? A> 自分で出力したものを自分で入力するなんてのは無駄 "最後に"とわざわざ書いてるのは "なんらかの回路を経て最終的に"という意味なんだと思われ まあ、キースキャンのようなアクティブにセンス信号出す場合には使うよ >>181 > D0→スイッチ→抵抗→LED→D1 これはかなりの変化球というか何がやりたいのかわからん 先にスイッチやLEDの定版回路や定石を理解すべき キャッチャーまで球届かない奴が いきなりフォークボール投げたいといってるようなもん スイッチ押したら光る回路なら Vcc→抵抗→スイッチ→LED→GND マイコンいらんねん
>>182 わかりました!高校までの電磁気の感じとはちょっと違うみたいなのでしっかり学びたいと思います >>185 たしかにマイコンをただの電池みたいに考えてました UNOに電源供給されてないのは 本当に電池だと思ってたんだなw UNOで上に載せるボードとUNO本体に個別に電力を供給したいんだけど、 12Vの組み込み電源から1本線を描くように直列にプラグとコネクタを設置して電気を供給しても大丈夫? 電源の電流容量は余裕あると思う。
>>188 それを個別に供給したと言うのならそうなんだろうね >>191 スケッチはアイダフルトのサンプルそのままです スマホのライトを近づけると2600luxくらいまで行くんですけどそれ以上近づけると-1.00luxっていう値になってしまいます センサのスペックは /* Dynamic Range: 600M:1 */ /* Maximum Lux: 88K */ らしいんですが… >>189 電車内でスマホからだけど resolutionは分解性能のことだと思う 計測可能な最大値を変える事で低い値の分解性能が上がるはず この辺の設定で変わるのでは? TSL2591_GAIN_LOW: Sets the gain to 1x (bright light) TSL2591_GAIN_MEDIUM: Sets the gain to 25x (general purpose) TSL2591_GAIN_HIGH: Sets the gain to 428x (low light) TSL2591_GAIN_MAX: Sets the gain to 9876x (extremely low light) 変なとこで改行しちまった(´・ω・`) TSL2591_GAIN_LOW TSL2591_GAIN_MEDIUM TSL2591_GAIN_HIGH TSL2591_GAIN_MAX
>>195 さっき電車からレスした者です >部屋のluxの値も60luxくらいととても低いです センサーの向きや状態にもよるけど部屋の明るさなら十分あり得る値かと思います >スマホのライトを近づけると2600luxくらいまで行くんですけどそれ以上近づけると-1.00luxっていう値になってしまいます センサーモジュール内のADコンバーター(またはカウンター等)が最大値でオーバーフローしてます // Check for overflow conditions first if ((ch0 == 0xFFFF) | (ch1 == 0xFFFF)) { // Signal an overflow return -1; } 以下の部分を変更して感度を調整すれば88000luxまで測定出来ると思います //tsl.setGain(TSL2591_GAIN_LOW); // 1x gain (bright light) tsl.setGain(TSL2591_GAIN_MED); // 25x gain ↓ tsl.setGain(TSL2591_GAIN_LOW); // 1x gain (bright light) //tsl.setGain(TSL2591_GAIN_MED); // 25x gain [ 1733721 ms ] IR: 322 Full: 2053 Visible: 1731 Lux: 79.397003 蛍光灯をつけた室内だとこんなかんじで、4項目の数値が出てます。 IRは赤外線、Visibleは可視光線、Luxは明るさだと思うんですが、Fullは何を表しているんでしょうか? それぞれの単位って分かりますか? >>196 ゲインを変更してスマホライトをつけたり部屋を暗くしたり試してみました。 ゲインをLowにするとLuxの最小値は1.360000、これ以下だとinfかnanになるから薄暗い場所の数値は見れない。 ゲインをMidにするとLuxの最小値は0.027200辺り、最大値は2600辺り、これを上回ると全て-1.000000。 市販の照度計もこんな感じで、室内の場合、屋外などの明るい場所の場合ってその都度設定を変える感じなんでしょうか? センサーを真上に向けて手に持って蛍光灯の真下に立って測ると300くらいになりました。 CdSセルだと確実に光源に向けたりしなくても、真っ暗な部屋、薄暗い部屋、パソコンのモニタの光だけの部屋、蛍光灯を付けた部屋、直射日光の当たる明るい部屋などがだいたい判断出来ました。ルクスは分からないにしても、もしかしてCdSセルって優秀なんでしょうか? >>197 抜けてました ゲインをLowにしてスマホライトを当てたら50000くらいまでは出ました >>197 IRは赤外線、Visibleは可視光線、Luxは明るさだと思うんですが、Fullは何を表しているんでしょうか? FULLはFULLSPECTRUMって意味だと思う 赤外線と可視線の両方を足した明るさの値と思われる(単位はLuxでない) そもそもFULLからIRを引いた数字をVisibleと表示してるため あとそれぞれの単位は以下の式で使用されてるので単純な明るさの単位ではないと思う >cpl = (atime * again) / TSL2591_LUX_DF; >lux = ( ((float)ch0 - (float)ch1 )) * (1.0F - ((float)ch1/(float)ch0) ) / cpl; >市販の照度計もこんな感じで、室内の場合、屋外などの明るい場所の場合ってその都度設定を変える感じなんでしょうか? 自動的にゲインが調整されると思います 必要があれば、測定値に応じてゲインを自動的に調整出来る様にプログラムすればいいと思いますが・・・ >もしかしてCdSセルって優秀なんでしょうか? 今回の明るさセンサーの場合、光度が直線的に出力されるが(出力というより取得か) アナログ回路等で電圧に変換しADコンバータで読み取ったCdsの場合、明るさの測定値が曲線的に出力されるためだと思われます >>199 LEDの光ってスペクトル分布が独特だから、センサーとの相性とかあるかもしれない 古いタイプの照度計だとLEDの照度が正確に測れないものもあるし、、、 簡易なものは知らないけど測定器としての照度計はテスターのようにレンジ切替がついてるよ アルデュイーノを使って電子工作をしていますが、クロック周波数が最大16MHzしかないので水晶振動器を使いたいと思っております。 し かし、配線の仕方やプログラムの作り方がわかりません。 またプログラムはサンプリング周波数にあったdelay をループの中に突っ込んでいますが、正確な周波数で命令を実行するのはこのやり方でいいのでしょうか? またアルデュイーノは最小のdelay設定がマイクロ秒までしか設定できないですがマイクロ秒まで設定できるようにできるのでしょうか? 長文失礼しました。
>>202 落ち着いて読み返して再質問しろ 用語の使い方が支離滅裂で何言ってんだかぜんぜんわからん 餅突け。 まずは、>>1 を欲嫁。 何をやろうとして何をしてその質問に至ったのか、具体的に、出来れば図表、蛾を添えて詳しく。 >>202 >クロック周波数が最大16MHzしかないので水晶振動器を使いたい そう思った理由を書いてみ クロックを変更せずに解決できる予感がする クロックを変更するとブートローダも改造しないとスケッチが転送できなくなるんじゃなかったっけ?
アドバイスありがとうございます。 目的は30Mhzでデータのサンプリングです。アルデュイーノでは最大クロック周波数が16Mhzなので、外部から早い周波数の信号が必要ですよね? そこで、水晶が良いのではないかと思った次第です。 ちなみに、自分は電子工作初心者です。 本職は設備のメカ設計をしております。
プログラミングについても教えて頂けるとありがたいです。 今までは、そこまでサンプリング周波数の高いプログラムを作ったことがなく、delay関数を使って希望のタイミングでサンプリングをしていました。 しかし、高周波サンプリングをする場合、delay以外の命令実行に時間が掛かるとお聞きし、希望の周波数ではサンプリングするのは難しいと聞きました。なので他の命令の有無に関わらず、正確にサンプリングを行えるような関数があれば教えて頂きたいです。
>>210 本当に「正確」にきっちりとやりたいのなら単体DACを備えたシステムを組む必要があるよ。 ちんけなワンチップマイコンひとつでやろうというのは無理。 >>210 どのArduinoか知らないけど、ポピュラーな所で328Pだとして最大動作クロックは20MHz 無理だということはお分かりいただけますかな? 専用のADCチップをお使いください さっきEnergiaを覗いてきたんだけどさ もう一年以上もVer.UPされてないね やっぱARM系は STM32duinoの方が人気があるってことなのかな
30MHzって電波をサンプリングするの? 何がしたいか全然分からん まあ俺も初心者だし何も分からんけど
デバイスのデータシート読んでね 使える最大周波数は決まってるから その調子だとDCモーターをGPIOに直付しそうだなw
>>215 ああ、あの食パンにいろいろはさんでパックにしたやつな 昔前澤の女が宣伝してたやつ 30MHzサンプリングはマイコンじゃむりだなRF系のデバイスかFPGAが必要 金があるならADCのDSK買えばpcには取り込めるかななにがしたいかしらんけど
何を観測するか知らんけど、30MHzサンプリングだとデジタルオシロの領域だなぁ 対象が電圧だと仮定して、観測した結果を使ってアクションを起こすのでなければ、デジオシをレンタルしたほうが早そうな?
色々と助言頂きありがとうございました。 今さらですが、用途は超高速モーターの回転数サンプリングです。 外注で回転数の表示はしてくださっていますが、出来れば自社で作った基盤でもサンプリングしてみたい、といのが事の発端です。
モーター回転数のサンプリングデータで予知保全 とかもしたいので
>>210 実現したいサンプリング周波数の為にはクロックは30MHzが必要とも取れたんですが、 1.観測するのが1/0のデジタルかアナログか 2.周波数 = 観測する信号 or サンプリング or cpuクロック がわからないと arduinoで作ったがもう少しパワーが欲しいと言う話なら、stm32duinoはどうでしょうか、こっちはmax 72MHz >>224 1.観測するのが1/0のデジタルかアナログか 2.周波数 = 観測する信号 or サンプリング or cpuクロック 1.デジタル信号です。 2.モーターの軸を10vに帯電させ一回転ごとに軸と銅線(ブラシ)が接触するように考えております。多分、矩形波のような信号になるのかな? 今持っているのがアルデュイーノunoなので、 出来ればそれでテストしたいです。 水晶使っても無理ですかね? サンプリングじゃなくて割り込み使えば、クリスタル変えなくてもいけます。「avr 周波数カウンタ」で探せば良いかと。 それともモーターからはキレイな矩形波が期待出来ないから、サンプリング周波数を上げてデジタルフィルタ的な事をやろうとしてるのか
デジタルならArduinoUNOでも簡単な外付け部品で30MBit/Sでのサンプリングも夢じゃないかも つまり ・外部に30Mhzのクロックを用意 ・クロックを8ビットのシフトレジスタに直結 ・外部のクロックを1/2にしてArduinoを15MHzで駆動 ・命令4サイクル分でIOポートからSRAMに蓄積
>>225 接触子では難しいんじゃ無い?光学エンコーダかマグネットローター+ホール素子でしょ。機構屋さんだよね? そもそも既に回転数の表示が出来てると言う事は、モーター内にセンサが有るのでは? >>225 回転数ならパルスでデジタルだから、今までと話が全く変わるぞ。 例えば120000rpmとしてもパルスはたかだか2kHzで、マイコンにとってはあくびが出るような話なんだけど…。 そのあたり、何が測定したいのか自分で認識できてる? あんたみたいに情報を小出しにしてるとラチあかんわ。 2kHzとかそんな話だとガックシだなw もーちょい ってレベルじゃなく、もっと詳しく書いてほしかったな。 回転数の情報も出てこないしなぁ
モーターごときの回転数で30MHzってのがいったいどっから降ってきたのか また永遠の謎で終わるんだろうなあ、毎度のことだが
【質問者心得】 ・スレに一応目を通してから質問しましょう ・回答者はエスパーではありません。状況が分かるように詳しく書きましょう 詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです 【回答者心得】 ・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう ・節度ある初心者さんには、特に優しくね
>>234 1回転ごとに検出して30MHzって そんなモーターが存在するの? 信じがたいんだが 予防保全でモーターの振動を測定してるのはだいぶ昔に某大手メーカーで見たことあるけど。 回転数じゃなくて振動を測定したいんじゃないのかな。
回転のムラを測定したいなら30MHzというのも納得いく。
もう一度計算してみたけど、やっぱり167KHzになるな。
だってお題は >>225 >一回転ごとに軸と銅線(ブラシ)が接触する だもの。 >一回転ごとに軸と銅線(ブラシ)が接触するよう こんなことまじめに書いてるお方なんだから、動くもの作れるわけない 終了
減速機歯面の欠けとかを検出して故障前に保全したいって話じゃないのかな。
僕はむしろ、保全現場の人がArduinoに目を付けたのは頼もしく思うけど。
決まって後出し三昧、その挙句質問者はトンズラ なのに必ず、ただ勝手な想像で話を膨らまして遊ぶだけの奴が登場して語り始める 毎度毎度楽しそうだなと思う
だからそう言ってるじゃん、楽しそうだなと 何が不満なの?
質問スレには技術者しかいないのが欠点だろうな。 営業板から人を派遣してもらえないだろうか。
>>239 昨日、質問をさせてもらったものです。 おっしゃる通り回転数ムラもみれればと考えております。回転数を1/10000の精度で見るために、10ns周期でサンプリング出来ればと構想してます。 ずぶのど素人だけど 回転数はシーケンサーでできると思うよ 保全目的なら 回転数 振動 音の周波数 とか関係してくるだろうから どうしてもArduinoなら それぞれのセンサー取り付けて 表示のLCDつけて データシート通りにプログラムすればいいだけ 難しくない大丈夫
>>254 サンプリング とか 見る とかいうことばがあいまい 最低限として1回転毎の時間を得たい その解像度を10nsにしたい ということと仮定して得た時間のデータをどうしたい? Logを取りたいのかメータ表示で良いのか 規格を超えたときに信号を出すのか? 回転ムラを得たいとして 1/10000というのが 例えば10000回転の時間をチェックできればよいのか、 1/10000回転を個々にデータ取得したいのか そのデータを保存するのか、メータ表示か、規格を、、以下略。 >>257 1/10000回転を個々にデータ取得したいです。 >>258 あと、logをとりたいです。表示は無くても問題ありません。 1回転に1パルスじゃ1/10000回転の個々のデータ見れんだろ それは1回転の時間を10000で割っただけのものに過ぎん
中古のカウンターからGPIB経由でデータ取りにいかせたら?。 横川のTC110あたりで十分。
回転パルスでリセットするカウンタ作って(ここはハードでやる)それの値を取り込めばいいだろうそうすればレート=回転数だ
制度が10nならカウンタのクロックは100MHzだからちょっとしたものだな CPLD+Atmegaでできるかな 回転検出にはホール素子でも使うかな カウンタの桁あふれに注意だな
ログ取るなら記憶部もそれなりのものがいる RAMじゃないと間に合わないかな そのさいずは とかいろいろ考えることはあるな
>>262 だな 1回転の時間計測したいのに ADCで電圧から得ようとしている 間違った手段を練っても目的に届かないよ ログ採りたいとか言ってるけど 1秒間に1万データ全て残す必要は無くて 最大値と最小値と移動平均を0.5秒毎に更新みたいなもんでいいんじゃね >>254 コイツ、完全にカマッテチャンだろ >目的は30Mhzでデータのサンプリングです。 >10ns周期でサンプリング とか、適当に吹いてるだけw >>254 そろそろマジレスすると モーターの回転数を取得する方法だけど 手段はいくつもあるので参考までに attachInterrupt()を使いモーター1回転毎に割り込みを使う(1回転1パルス前提) モーター用のカウンターを用意 最初にモーター用のカウンターをリセットする 現在のタイマーを取得する micros()関数でμs単位で取得できる(分解性能は4μs) モーター400回のカウントする 400回に達成したらmicros()を使い前回のタイマーからに経過時間を計算する 60,000,000 / 計算した時間(μs) * 400 = RPM 回転数の分解精度を上げる場合はカウント数を増やす 質問者の言う所の10nsの分解精度があるはず また別の手段としてコンペアモジュールを使い400や任意の回数をカウントさせて割り込みを行う手段も有る (あと、arduinoではLチカしかやった事ないので間違ってたらごめん) >>267 方法としてはポピュラーなものだけど >10nsの分解精度があるはず ってのがよくわからないので説明よろしくお願い 質問者ではないですが >>202 この程度の理解度しかないから ほんとの1から教えないと分からないよ多分 こういうひとはいくら教えたって馬耳東風だ 自分勝手に妄想して言い散らすだけ
横から質問です。 外部割込みって、周波数の大きいものはどの程度までカウント可能ですか? あまり速いとHighとLowの区別がつけられなくなると思うんですがその限界は?
連投すみません。 割込みルーチンの処理速度以上に拾っても何もできないから無意味なので そっちがボトルネックってことでいいんでしょうか?
arduino ideのコンパイルが毎回遅くて困っているのですが、皆さんは何か工夫して早くしているんですか?
>>271 目的が周波数やパルス幅の計測ならプログラムでカウントする事は一般的に行わないです。 タイマーにそういう計測機能が各種あるからそれを使って、 計測が終わったらタイマーに割り込みを発生してもらって、CPUは計測値だけ頂くのです。 AVRのカウンタークロックは最大で1/1システムクロックだから、16MHzなら16MHzです。 ボトルネックは仰る部分にもなりうるのですが、要求仕様によりけりです。 デジタルオシロ(安い奴)のように画面に表示してる部分の前後に表示されていない部分(取りこぼし)がある、 みたいな仕様を許容するなら逃げようはあります。 希に起こる特異な現象を確実に拾い上げる、みたいな用途では問題になりえます。 >>273 内蔵しているgccのスピードなので根本的にはしょうが無いように思いますが、 ライブラリからなんからいちいちフルビルドするのをやめさせるという方向で設定する方法はあるようです。 "arduino gcc 高速化"でググってみるとよいでしょう。 >>268 おそらく質問者は回転数(分or秒)を求める手段として1回転の時間を測りそれを元に計算しようと試みたと思われる 1回転の時間がms単位では回転数の計算に使えない 例>1ms単位なら計算で出せる回転数は1000,500,333,250,200,166・・・回転/秒の刻みでしか計算できない もっと細かな単位(ns)なら細かな回転数を計算出来ると思ったよう思われる 質問者の >おっしゃる通り回転数ムラもみれればと考えております。回転数を1/10000の精度で見るために、10ns周期でサンプリング出来ればと構想してます。 この書き込みを翻訳すると 回転数を確認するために1回転の回るのに掛かる時間を1/100000秒単位で測りたい (1/100000秒は10μsで10000nsなんだけど・・・・) 質問者の言う10nsってのが1回転当たりの時間の刻みの可能性が高いのでそれを求める手段を考えてみた 10nsの分解精度とは・・・ ArduinoUNOには起動後から常に動いてるカウンターが有りmicros()関数でμs単位で取得できる ただしこれは4μs単位で動くらしく(ネット調べ)1μsでは取得できないらしい? 4μsを10nsを直すには1/400にすれば良い事になる つまりモーター400回転時間のμsを400で割れば1回転の時間が10ns刻みで計算出来る事になる >>271 割り込みだと割り込み後の処理によって計測可能な速度が大きく左右されるので具体的な速度は出せません。 UNOだとして単純にカウンターの変数に1足す(インクリメント)するのと数値の比較なら30サイクルから100サイクル程度じゃないでしょうか? アセンブラで詰めればもっと早くなるとは思いますが 16Mhzで100サイクル必要なら最大160KHz程度になりますがもっと少ない可能性があります 今回の質問のようなモーターの周期なら十分に対応可能な速度で動くと思われます また他の人も回答してますがUNOにはハードウェアでパルスなどの入力をカウントする機能が備わってます そちらを使用すればより高い周波数のパルスをカウント出来ます >>274 Each half period of the external clock applied must be longer than one system clock cycle to ensure correct sampling. The external clock must be guaranteed to have less than half the system clock frequency (fExtClk < fclk_I/O/2) given a 50/50% duty cycle. Since the edge detector uses sampling, the maximum frequency of an external clock it can detect is half the sampling frequency (nyquist sampling theorem). However, due to variation of the system clock frequency and duty cycle caused by oscillator source (crystal, resonator, and capacitors) tolerances, it is recommended that maximum frequency of an external clock source is less than fclk_I/O/2.5. An external clock source can not be prescaled. AVR未経験なので間違いの可能性が高いですが、上記の説明を読むと 理想なパルスが入力出来たとしても6.4MHz程のようです 実際の状況ではより低くなると思われます カウンターに非同期モードが有れば16MHzより高速なパルスをカウント出来る可能性も有ります(未確認) 400回の合計を1/400にしたら平均しか出ないんじゃないの? モーターの安定性って早くなったり遅くなったり回転ムラだから そもそもモーターって 一般モーター 8000rpm (133rps) 1周7.5ms 高速モーター 16000rpm (267rps) 1周3.75ms 超高速モーター 300000rpm (5000rps) 1周0.2ms(=200us=200000ns) 仕様として0.5%のふらつき検出でいいような気がするんだけど
4μ毎にしかパルス測れないものを 400回測って1/400しても意味ねーだろ
時間軸の分解能は下がるだろう。量子化の分解能はちょっと上がるかな
リトルインディアンだのバルスだの スレチしか居ねーな
>>282 アホか 1回に1パルスしか得られないんだぞ? 1回に〇〇パルスという数値が得られるわけでも何でもない >>284 そのパルスの間隔を高精度に測るって話だよ。 モーターからセンサで拾った信号なんてノイズ乗りまくりだぞ、パルス化で位相雑音になってジッタ出るのに10nsの精度なんてあり得ない。仮に精度が出たとして、負荷に繋がってるモーターだよ、その精度で何を見るんだよ。 からかわれてんだよ。
純正Esp32 Wroom 32d DevKitCです Aduino IDEからだと書き込めるけどVSCodeだと、 Connecting......で失敗してしまいます VSCodeでもほかのArduinoだと書き込めます あと、コンパイルの前で 2019-10-31T12:38:52.604Z WARN p.a.h.BoardCloudResolver:64 [cc.arduino.packages.discoverers.serial.SerialDiscovery] Fail to get the Vid Pid information from the builder response code=404 こんなのが出てかなり時間がかかります この2つどうやったら治せますか?
質問者です。 様々な助言ありがとうございます。 理想は20000rpmのモータの回転ばらつきを 0.01%の精度で見れればベストです。つまり20001rpmと20000rpmが 識別できればいいのですが… その場合隣り合うパルス間隔が 20001rpm=333.35rps(pps)→2.99985ms/pulse=2999850ns/pulse 20000rpm=333.33rps(pps)→3.00000ms/pulse=3000000ns/pulse この違いを識別しなければならないと考え 10ns単位でlongの変数へカウントさせ 299985が入っていれば20001rpm 300000が入っていれば20000rpm というアルゴリズムでできればと思っております(100nsでもいけるのかな?) 現実的かどうかは素人なのでわからないですが… 低価格でそれなり分解能(せめて±0.1%)で測れるのであれば この方法にこだわりはありません。
>>290 それって1秒あたりの平均値のRPMじゃダメなの? なんでもいいからやってみなよ やらなきゃ何にも始まらないよ はじめの方でdelayがどうこう言ってたけど そのスケッチ見せてみなよ
>>290 奇麗な波形がえられれば20000rpmなんてせいぜい3ms周期だからCPUのスピードから したらどうということはない。 20000prmを1rpmの精度だったら0.01%ではなくて0.005%で150nsだよね。 16MHzクロック(62.5ns)で16ビットカウンタを自走させて1回転ごとの割り込み でカウンタを読み取れば充分のような気がするけどね。 14640rpm以下になるとカウンタがオーバーフローするから回転数によって クロックを下げる必要があるけど。 それよりも >モーターの軸を10vに帯電させ一回転ごとに軸と銅線(ブラシ)が接触するように考えております。 このやりかたで奇麗なパルスが得られるとは思えない。 チャタリングのようなものが盛大にでてフィルタ入れたら何を測ってるのか 分からなくなりそう。 まずはセンサーの再検討が必要と思う。 >>291 Arduinoでやるならがそれがいいとこだね >>293 「充分のような気がする」の根拠が知りたいなあw >>291 平均値は分母をどのぐらいとるかによりますが 1パルス毎で判断するよりリアルタイム性が薄れる(精度が良くない) と思います。 簡易的な方法で良いとは思いますが、 おそらく、10nsの案がダメな場合は精度を犠牲に 平均、もしくはメディアンでみることになろうかと思います。 ふつーホール素子使うよね 回転の検出ってさ それか光 非接触でやらないとな
>>296 ホール素子か光で試してみます。 そのセンサーで行えばノイズが乗りにくいという認識であってますでしょうか? ブラシよりはるかにマシだがカウンタに入るまではアナログ回路だってことを忘れんように
個体のバラつきとか全然考えてないだろ スペック上2万rpmで買ってきたモーターは 定格電圧で1割くらい平気で違うぞ、 10v流して21000rpmだったり19000rpmだったりする 個体ごとに10.2vにしたり9.7vにしたり調整が必要なわけね 20000rpmで安定回転させるにはpwmで電源制御する必要がある 電源制御で狙い通りの回転数が得られたとして色んな問題が発生する 例えば 毎周回ばらつきがある 3005us 3001us 3011us 3007us ... 数秒周期でうねりのように加減速する ばらつきを平均化して、うねりをフィードバックでつぶすと 更に安定化できると思う そこいらが理解できたら、DVDドライブやFDD安定走行用ICのほうがはやいじゃんとか 思えてくるんだとおもわれ
質問者のお題では >>222 >色々と助言頂きありがとうございました。 >今さらですが、用途は超高速モーターの回転数サンプリングです。 >外注で回転数の表示はしてくださっていますが、出来れば自社で作った基盤でもサンプリングしてみたい、といのが事の発端です。 だから、必要なデータは取れてるというか、やり方が知りたければその外注に聞けよで終了の案件。 >>299 こんなに回転数に拘るモノなんだから、クローズドループで制御してると言うことになる。外注に作らせたものには回転数が表示されると言ってるでしょ。 モータには既にセンサは内蔵されてるから、センサ出力を分岐させる方法か、外注の制御器にリードアウトをつけてもらうのを検討するのがスジ。 >>290 http://codepad.org/B3qhDgdb 適当なスケッチ作ってみた Arduinoはこれ以外にはLチカ経験のみなんで色々間違ってると思います 詳しい方の補足や修正お願いします スケッチの内容は293の方の説明と同様の物です 一応PICから約332HzのPWM出力させて期待した動作はしました ちなみに20000PRM付近の刻みは以下の程度になるはずです (スケッチでは小数点以下は第一位まで) 20000.83 20000.42 20000.00 19999.58 19999.17 PICとarduinoでコード書いているところ見ると どうみても自分で書いたものではありませんね。
arduino nanoとかでできるでしょLチカ、PWM
ふと思ったのですが、PCに直接センサーをつけてデータをサンプリングすることって できるのでしょうか? アルデュイーノでセンサーから情報をもらい、それをPCにシリアルで送るという のが普通の方法?なのでしょうか?
ATTiny85が乗ってるdigisparkオススメ
最近のノートPCでは省略されている事も多いが PCにはCOMポートとLPTポートがあって、 COMポートはシリアル入出力 本来はモデムやXYプロッタを接続していた 温度計やソーラーチャージャーやMP3プレイヤーなど LPTポートは8-11bitのパラレル入出力 本来はプリンターやスキャナなどを接続していた GPIOのように使うならこちら
>>308 OSが走ってるから正確なタイミングでは無理。 外部でサンプリングしたものを取り込むしかない。 速度による。簡易的にはオーディオ入力使うとかする応用も
この質問者頭おかしいよね 質問に答えてくれてる人は全スルーなのに 聞きたいことだけ聞いてくる まるで人工無脳のようだ
今頃気づいたのかよ むしろそれに返答してる連中の神経の方が怪しいと思うわ
> PCに直接センサーをつけて もはやArduinoと何の関係も無いな PCの使い方について他で学べ
「PCに直接センサーをつける」自体があいまい。 USBインターフェースを備えたセンサーなら普通につながる。
>>316 Lチカマイスターが張り切ってるからね。 モータや動力知ってそうな人の指摘はガン無視だから。 タイマーを作りたいんだけどいい方法が見つからない 用途は ・場所G:給水ポンプの清掃→14日後に報知 ・場所R:スマホの充電→6日後に報知 ・場所G:植木A群に給水→5日後に報知 ・場所P:植木B群に給水→3日後に報知 ・場所K:炊飯の開始→45分後に報知 ・場所K:圧力調理の開始→30分後に報知 ・場所B:風呂の給水→25分後に報知 ・場所K:コーヒーの開始→12分後に報知 方法1) 5箇所にWifi端末を設置し、ボタンを押すとサーバーに送信、スマホにpush通知 方法2) 5箇所に1個30円のIDタグを設置し、モバイル端末で読み取り、端末上で報知 方法2改) 5箇所にQRコードを印刷して貼り付け、スマホだけでなんとかする もっと良い方法があれば教えて欲しい
方法3) 8個ボタンの装置を持ち歩き、規定のボタンを押す (装置を持ち歩くのが絶対ネックになると思う、それは方法2でも同じか
・場所K:炊飯の開始→45分後に報知 ・場所K:圧力調理の開始→30分後に報知 ・場所B:風呂の給水→25分後に報知 ・場所K:コーヒーの開始→12分後に報知 ここらへんは100均のタイマーをセットしてポケットに入れといたらいいんじゃねw?
質問です 9v600mAのACアダプターが余ってるのでArduinoに挿して Arduinoの5vからマイクロサーボを動かしたいんですが問題ないですか?
>>327 数分後に報知する系統と 数日後に報知を分けろというアドバイスだな ありがとう検討してみる >>323 iphoneなら、上4つはリマインダーに登録すればどうでしょうか、○○日おきに通知と言うのができます。 下の4つは、タイマーなんだけど、Timeglass timer & stopwatch アプリで「コーヒー」「圧力鍋」等と言う名前で定型タイマーが登録できます。 電子工作に絡まなくてすいません。 >>329 マイクロサーボに流れる電流がどれだけか、と Arduinoに載ってるレギュレータが何なのかで問題の有無が変わりそう。 あと、9V 600mAのアダプタがいわゆるトランス式なら、レギュレータの 負担はもっと重くなるかもしれないから注意。自分で判断できないなら、 そのACアダプタの写真(3方向ぐらいから撮影したものならなおよし)を 出してみて。 >>331 折角のご提案だけども、スマホを持ち歩く習慣がナインだ >>327 氏の提案で、 キッチンに4つボタンのタイマーを置いておいて イベント発生したら該当ボタンを押して、その装置を持ち歩く、 終わったら元の位置に返す これでかなり便利になりそう。 数日イベントは"今日何したか"思い出しながら自作アプリのボタン押すかと 思ってます。でもこれはめんどくさくなってすぐやめそう >>332 Arduinoにはレギュレーターがついてて5vに降圧してくれるものだと思ってました・・ アダプターは重いトランス式です 降圧には向かないんですね 勉強になりました ありがとうございましたm(_ _)m >>334 サーボもそうだけど、モーターのような大電力を消費する回路は制御回路とは別に電源を供給するのが常道になっている。 UNO R3を例にすれば、搭載のNCP1117ST50T3Gはスペックでは5VでMax1Aを出力できるが、それはあくまで絶対最大定格の話し。 9Vから5V600mA取ったら(9V-5V)*0.6A=2.4Wも発熱する事になるから、基板上で十分なヒートシンクもないのにこのレベルの放熱は無理。 トランス式ACアダプターの出力は脈流で、9Vとは9Vを割り込まない事を最悪でも保証できるという意味で、実際の電圧は9Vより高いからさらに条件が悪い。 したがって、発熱をせいぜい1Wに押さえるとしたら、使えるのは200mA以下だろう。 >>334 早合点は禁物です。 っていうか、初心者の人は、OKかOKでないかのイチゼロ思考に陥りがちですが、 たいていのことは、あいまいな中にあいまいな答えがあります。(明確にシロクロがつくこともあります) Arduinoにはレギュレーターがついてて5Vに降圧してくれるものもあります。 でも、載っていても、どれぐらいの電力損失や電流が許容されるかは、載っているレギュレータ次第です。 「降圧には向かないんですね」とカタに嵌めたような理解は危険。スイッチングノイズを嫌う用途なら 積極的にレギュレータとともに使います。 あなたの例で問題になるのは、トランス式ACアダプタの実際の電圧が確定しないので、 仮にレギュレータの型式やマイクロサーボの電流がわかっても、大丈夫そうかどうかが判断できないことです。 >>334 > Arduinoにはレギュレーターがついてて5vに降圧してくれるものだと思ってました・・ 9V→5Vしてくれるけど、5V/200mAが作り出せる程度の能力しかない 代表的なマイクロサーボSG-90は5V/250mA、 モーター系は起動時に消費が増えるので倍の500mAを見込んでおく マイコンは多くても50mA程度 200mA<550mA 全然足りない 200円で5V/1AのACアダプタ買って全体供給したほうが幸せになれるぞ >>338 それは存じておりますが、質問者が所有してるのがどっちか解らない以上は 条件の悪い方を前提にするべきでありましょう。 わわざわざ問い糾してどっちか判明してからでないと答えかねる、という案件でもないし。 Arduino Nanoとサイズとピンが互換のNordicのBLEのボードってありますか?
ラインドライバのオムロンロータリエンコーダを知人から貰いました。 これarduinoのGPIOに繋げてパルスカウントしてみたいなぁと思っているのですが、ABZそれぞれにプラスとGNDがあるのでどう配線すればよいかアドバイスをいただきたいです。 こんなモジュール嚙まさないと、とかあれば是非。
>>346 何十メートルもコード延ばしたいとかじゃなきゃ適当に終端して非反転の方から拾えばそのまま使えるんでね 別に長くするわけじゃないけど差動信号を扱ってみたいとかならラインレシーバが必要 とりあえずくるくる回して試したいだけなら まず 黒と黒赤を1KΩの抵抗で繋ぐ 白と白赤を1KΩの抵抗で繋ぐ 橙と橙赤を1KΩの抵抗で繋ぐ んで 青をArduinoのGNDに繋ぐ 茶をArduinoの5Vに繋ぐ これで 黒からA相 白からB相 が取れるから適当にネットに落ちてるロータリーエンコーダのスケッチの通りArduinoの入力この2つに繋げば回して遊べると思うけど
アドバイス通り繋いでみたらあっさりパルス拾えてしまいました。ありがとうございます。 これで4逓倍カウントとかフリーランカウンタで低速検出処理とか夢が広がります。
イーサネットアダプタとして、W5100、W5500、ENC28J60の3種をproMicro互換機に つないでみた。 ENC28J60が安いけれど、半日くらいでハングアップしてしまう。 チップが触れないくらい熱くなるのでヒートシンクを付けてみたが効果なし。 別個体でも同様 W5500はほんのりあったまる程度でハングすることもなく連続でもOK。 Eathernet2.h を使えと書いてある記事もあるが、Eathernet.h で普通に動いた。 2個テストして問題なし W5100は古いせいか小さいモジュールが無い。 以上チラウラでした。
Arduinoのプログラムの書き込み速度は何kbpsなのでしょうか?
こんばんは。 Arduino UNOのタイマー割り込みでtimer1とtimer2の2つを併用してなおかつ同じタイミングで割り込みがかかった場合どちらが優先されるのでしょうか? それと、sirialprintですが、例えば以下のように sirialprint("1"); sirialprint("2"); sirialprint("3"); と記述した場合シリアルモニタでは 「123」と表示されるかと思いますが、例えば以下のように sirialprint("1""2""3"); と記述した場合も 「123」と表示されるのでしょうか? またそうであった場合処理速度は早くなりますか? 素人丸出しで申し訳ないのですがご回答頂けると嬉しいです
>>355 1つめ Interrupt Vector Definitionでググれ。 2つめ やってみりゃわかること聞くな。 以後、質問は1件ずつにして。 【回答者心得】 ・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう ・節度ある初心者さんには、特に優しくね
ArduinoとリレーでAC電源機器のオンオフを試してます ACのケーブルの他にArduino用のDC電源ケーブルも必要なんですが、 AC電源一本でやるにはどうしたらいいですか? Sonoff BasicだとAC電源だけで済むのであんな感じでやりたいです
>>358 そのACからDC5〜12Vを生成する回路を作れば良い。 リレーだとONの時に励磁電流が必要だしSSRの方がオレは好き。ノイズ出さないし。
>>362 この工作例はある程度の電子回路の知識をお持ちの方が対象で、回路図などをご覧に なり自己責任で自作できる方が対象です。 って書いてるやろ、お前はやめとけ。 どうもありがとうございました >>363 USB電源だと便利そうです 小型のUSB電源探してみます c#を使ってWiFi経由でARUDUINO内のセンサデータを読み込む方法を考えています。 ARUDUINOから受信したhtml本文に記述されたセンサデータを文字列処理して取り出す方法しか思い付きませんでしたが、他に方法があれば教えて頂けますでしょうか?
>>367 UART対応のWiFiモジュールでもバイナリ転送できるかと >>367 JSONはどうだろ。.NETならAPIもあります。 ノートPCとArduinoをUSBで繋いでます。 負荷が24V系なので別の安定化電源から24Vを供給し、Arduinoからトランジスタを駆動しようと思います。 ノートPCはACアダプタに繋がっていて、安定化電源は接地されているのですが、USBと安定化電源のGNDを繋いで大丈夫なのでしょうか。何かでノートPCと別電源の機器を繫いで壊したというのを聞いて気になりました。
心配なら24V系とArduinoをフォトカプラで分離すればいいんじゃね
>>371 24V電源のGND(DC出力の0V側)とフレームは接続されてる? あと,ACアダプタに絶縁不良がなければ大丈夫かな >何かでノートPCと別電源の機器を繋いで壊したというのを聞いて気になりました。 USBで接続する場合なら、グランドが浮いた状態で信号線が接続されてようなケースかな?
>>371 電源が商用電源に接続するもので、正規のものなら、(PSEマークのあるACアダプタでもOK) (A)があなたが作った機器だとして、GND1とGND2が内部で接続されている場合なら、 PCと(A)を接続するときに、GND2が接続されることは問題はない。 GND2を接続する前にUSBの信号線が接続されるのは良くない。(そうならない工夫はコネクタで されているし、少々のことなら保護素子で守られるはずだけど) >>367 367です、皆さんありがとうございます! TCPを使って何とか行けました。 vscodeでシリアルモニター表示とポート選択ができないんだけど同様の現象の人います? 乗り換えようかと思ってarduino ide proなるものをインストールしたけど大して進化してるようにも見えないから開発環境が固まらずウロウロしてる
VSCodeで新規ウインドウ開いてフォルダを開いてその中にinoとか置いたらボード選択とポート選択出来る inoがひとつあるフォルダを開くのがキモ 例えば、~/Documents/Arduino/Sketch/の中に沢山フォルダを作ってその中にinoがひとつひとつあった場合は、Sketchフォルダを開くんじゃなくて、使いたいinoがあるフォルダだけを開くとうまくいく
ガチガチ初心者です。 赤外線を受信したら、フォトカプラを介してLEDをつける回路を作成中。 IRremoteなるライブラリを使って、赤外線リモコンの値(16進数)を読み取るところまでできたんだけど、その値を使ってフォトカプラを動作させるやり方が解りません。 IFで変数==読み取り値(16進数)を直接じゃあかんの。 読み取り値を入れてるところがエラーになるんだけども。
>>379 >IFで変数==読み取り値(16進数)を直接じゃあかんの。 それでええんやで。コードの記述の仕方がアカンのやで 仕様を見る限りmegaはunoの上位互換って考えていいのかな? 中華互換ボードなら価格差も大して変わらなさそうだけど使い分けたりする?
unoよりnano、組み込むならpromini megaよりESPって感じかな IOほしければエクスパンダで
サイズがでかい、価格が高い、消費電力が大きい という要素があって上位互換と言えるだろうか
シリアルモニタへの文字の表示なんですが、 画像のようにスケッチを書いて5秒事に表示させてます。 だけど、画像の下のウインドウのように「Apporox」までで止まってしまい、次の5秒になると「. Alttidude〜Apporox」までかプリントされます。なぜ一度に最後までプリントされないんでしょうか? 試しに80〜90行目をコメントアウトしたら今度はPressureの途中で切れました
>>387 パソコン側の問題かも 文字止まった後もマイコン側の送信LED5秒ごとに光ってない? >>390 言葉足らずですみません パソコン側へのプリント自体は5秒毎にずっとされるんですが、プリントの開始文字の終わりの文字の位置がおかしいんです 途中で来れる→5秒後→切れた所から改行含んでその直前の位置まで→5秒後→繰り返し >>391 コードに問題点は見られないので、 arduino本体のマイコンは正常に機能してる可能性が高く、シリアルusb変換のICからパソコンのソフトの間の問題の可能性が高い まずはシリアルの通信速度下げてみて あと出来れば違うPCかosで試して pressure ってのは 100.0F で割るモノなの?
>>393 パスカルからヘクトパスカルに変換してるんだろう >>394 thx. ヘクト(h)は ÷100.0 なのか。÷1000.0 だと思ってたw すると最後の"F"の意味が判らん。 あ、floatだから最後に"F"なのか? "LL"みたいな?
1.0fは単精度浮動小数点 1.0は倍精度浮動小数点
おー!! それぞれに意味があるのか! 勉強になるぅ〜 thx.
通信速度を9600に下げて書き直したけど改善しませんでした。 そのままのコードで別のマイコン(ESP32DevKitC)だとOKでした って事はマイコンボードのUSB変換の問題ですか? ドライバーですけどDevKitCはCP2012Nだけど、nRF52840はAdafruitの名前が付いてました
スルーしてて申し訳ない。 パソコン側のシリアルバッファーに溜まって吐き出していないだけの様な気がするので、 Serial.print("m"); をSerial.print("m________________"); としてみてはいかがだろう?
>>387 細かく追いかけてないですが、自分もserial.printを連続でコールしてシリアルが詰まったような現象になった事があります。 その時は、何回かに一回sleepを入れる、もしくはstringに溜めておいてserial.println一回だけにすれば回避出来てました。 Windowsだとならなかったんで、MacのIDEの問題かもしれません。 >MacのIDEの問題かもしれません。 IDEかドライバか切り分けしたら? $ ls /dev/tty.usb* /dev/tty.usbデバイス名 $ screen /dev/tty.usbデバイス名 9600 macもってないけどこれでシリアルみれるみたい
ArduinoUNOのpluseIn関数のタイムアウトを100msに設定して関数の前後にmillisを入れてタイムアウト時間をを測定したのですが、70ms前後になります。 何故ですか?
皆さんどうもありがとうございます >>400 アンダーバーはどういういみですか? ダメでした。 >>401 Stringに溜めてprintln一回だけはどうやるんでしょうか? >>402 screenコマンドとcuコマンドで見てみましたが同じく途中で切れてました >>406 アンダーバーは、シリアルで送る文字列をうしろに長く伸ばしたら、 途切れる場所が変わるかどうかを見極める為で、アンダーバーである必要はありません。 シリアルバッファーを埋めて送信した文字列を吐き出させる為に付加してみました。 変わらないですね。てか、なんでピリオドの前で止まるんでしょうね。 ピリオド取ってみたら? >>406 いろいろもがいてみるしかないかな? Serial.println()の次の行にSerial.flush()いれてみるとか… >>407 アンダーバーの件了解しました。 どうやらピリオドで止まるわけじゃなさそうです 画像のように初回のプリントはPressureのPressで止まり、以降は毎回Approxまでで止まってました 試しにApprox.を消したらAlttitudeの途中まででした >>408 Serial.flush()試してみました しかし上の画像の通り残念ながらこれでも変わらなかったです >>409 んじゃあ、Serial.println();の次におまじないのdelay(10); >>410 わあ!うまくいきました! これはどういう理屈ですか? 68行目(printlnの後)で5000マイクロ秒ディレイしてあるんですけれど、それとは何が違うんでしょうか? >>411 乙です。 ピリオドは関係なかったですね。申し訳ない。 自分の場合だとprintln()は使わずprint("\n")と書いてます。 まぁ、個人的な決まり事ですがw まとめると ・UNO(nRF52840版)でシリアル送信が5秒遅れる場合がある ・同じスケッチでESP32DevKitCだとこの問題は発生しない→スケッチに問題なし ・Macと接続した場合発生する。WindowsPCでは発生しない→UNO(nRF52840版)に問題なし ・ArduinoIDEの問題ではない→Mac自体に問題がある MacのnRF52840シリアルドライバがポンコツくさいな 最新ドライバかパッチを探してみたら?
あら、公式"Reference"の"Example Code"を見ると、 println()はdelay(10);を入れるようになってるね。 print()の方はdelayがない。
>>411 効いたみたいで良かったです。 シリアル通信で他デバイスにデーターを送るときとか、GPIOからボタンなどの入力を受け取るときとか、 インターフェイスが絡む場合、経験上delay(10);でひと息入れさせると上手く行くことが多いです。 すみませんが、68行目のdelayとの違いの本当の理屈はわかりません。 ただ、関数を抜ける際などの取りこぼしはままあるので、そういうものと受け止めつつ、 実用上、挙動が怪しいところでは、他のソースに手を入れる前にこうしてみています。 すみません、Pulsin関数ってArduinoUNOだと13番ピンは使えないですかね? PWM対応ピンでしか機能しない可能性ありますか?
春に出たnanoシリーズの話題全く見かけないんだが誰も買ってないのか?
esp8266,esp32が無ければ話題になったんだろうけどな
>>419 そういうあなただってリンクすら張らず、話題にする気も興味も全く無さそうじゃんw Nano Every MCU ATMega4809、USBシリアル変換にSAMD11 唯一の5V Nano 33 IoT MCU SAMD21、WIFIモジュールにESP32 Nano 33 BLE nRF52840 Unoのフォームファクターはレガシーとして残すけど、これからはZero、Nanoをこれからのフォームファクターに移行したいように見えるんだがどうよ 3.3V中心だし >>421 公式のボードなのにリンクがどうとか難癖かよ リンクは>>1 にあるだろう お前、話題にしたい人間の態度じゃねえな、やり直せ。
>>422 メインのMCUよりもシリアル変換モジュールや通信モジュールの方が性能が上とかもうよく分からんな >>422 見事な平文で感心した 死んでもリンク張らねえぞって意気込みが無駄に空回りしてて笑う リンク張れって言われてここまで意地張る僕ちゃんかわいい >>427 それSAMD21だからESP32以下じゃん 素直にESP32だけ使わせてくれた方がよっぽどマシ AliexpressのセールでESP32-CAMとESP32Devkitあわせて$5でした。
m5stackがコスパ機能ともに最高すぎて arduinoゴミ箱に捨てたわ
voutからの供給をソフトウェアから停止したい。 ESPr Developer(ESP-WROOM-02開発ボード)にUSB接続して動作させています。 voutは、挿されたUSBのvccに直結だとどこかで見た記憶があり、 voutからの電流はスケッチからソフトウェア的に停止することはできない認識でいますが正しいでしょうか。 なので、voutからの供給を止めるためには、リレーなり、トランジスタなりを挟んで、GPIOで制御するしかないのでしょうか。
あ、esp8266スレがあった……。 つい初心者というスレタイに誘われて……。 こっちじゃだめですか
お二方とも、ありがとうございます。 トランジスタでのスイッチを検討したいと思います。 ありがとうございました。
中華Pro Miniについて質問です 3.3Vのが欲しいんですがアマゾンを見てもFTDIの並びが逆のタイプしか見当たらないです もう以前のように普通の並びのは売られてないんでしょうか?
>>440 どうもありがとう リンク見てみたけど3.3のはAtmega168しかなかったです クリスタルを8kHzのに張り替えたらいいって事ですか?
>>442 クロック落とさないと3.3v安定動作しない (16MHzのままでも一見動作するが誤作動の原因になる) 8kHzでは遅いのでせめて8MHzでね >>441 あった https://www.aliexpress.com/item/32963423749.html 俺は6P-6Pのフラットケーブルで接続してる 完璧を求めるならレギュレータも5V品から3.3V品に交換 内部発振8Mに変更するなら部品交換は不要 動作クロックで如実に消費電力が減るのでおもしろいよ Mega328P MU 3.3V 16MHz 7.5mA (BuitinLED 1.5mAを含む) ※参考値 Mega328P MU 3.3V 8MHz 4.8mA (BuitinLED 1.5mAを含む) Mega328P MU 3.3V 1MHz 2.0mA (BuitinLED 1.5mAを含む) Tiny44A 3.3V 8MHz 2.0mA Tiny13A 3.3V 9.6MHz 1.0mA >>446 >届かないか心配です ケーブルで対応しろ 1)Arduino-IDEにMiniCoreボードマネージャーをインストールする https://github.com/MCUdude/MiniCore 2)"Atmega328", "8MHz internal"をセレクト 3)ブートローダーの書き込み(フューズビットの設定) たったこれだけで16MHzのProminiが8MHzや1MHz動作に ただ内部RCは精度が悪いのでシリアルで問題が出る場合がある そこは固体ごとにOSCCALを校正 >>438 が何言ってるのか全く分からなかったが ジャンパー線で済む話だったのな、応用力無さすぎじゃね? こんな感じでアクセスされてるICへの信号をArduino(16MHz)経由で記録したいと思って CSの立ち上がりで割り込みをかけてCS,RD,WR,A0を含むポートを参照、次にD0〜D7を含むポートを参照しようとしたんだけど うまくいかず、理解も全然追いついてないんだが、これはArduinoでは速度的に無理ってことになるのかな? というかCSの立ち上がりが発生してるはずの回数より明らかに少なくしか拾えてない アセンブラで書けばいけるとか言われたらお手上げだなあ >>448 どうもありがとうございます OSCCAL大変そうです もし、>>440 のクロックを8MHzに変えるなら面実装のレギュレータも3.3Vに張り替えるって事になりますか? >>449 > 応用力無さすぎじゃね? そういう話じゃなくて、ジャンパー線で繋ぐよりもシリアル変換アダプター直結だと繋ぐ向き考えたり線でゴチャつかないで済むからです AdafruitのPro Trinketも逆並びだから地味にめんどくさい コピー元のSparkFunのPro Miniはこれまで何度かマイナーチェンジしてるけど一度も逆向きになった事無いと思うけど何故中華Pro Miniは逆向きになったんでしょうか? ただ、今日教えてもらった感じだと、普通の並びのPro Miniの出品はほとんど無さそうなのでコストや入手性等考えたら逆向きの方がいいのかも知れないですね >>445 以前ESPスレに書き込まれたかたですか? >>446 一番オーソドックスだと思うFT232RLのピンが全部出てる赤い基板の奴に合わせてるんじゃないの >>452 なるほど! 中華変換ボードはその並びですね >>450 9MHzとか無理w がんばって1MHzくらい ゴチャつかないで済む 地味にめんどくさい お前は電子工作自体をやめたほうがいい
>>456 そっ、それも初心者に対するアドバイスなの? スレの趣旨からすると厳し過ぎるような。。。 シリアルのピンアサインそろえるためだけにモジュールをえり好みしてる初心者なんぞ 早めに電子工作から手を引かせた方がいいに決まっとろうが
>>450 ソフトでやるのは無理なのではないかと思う。16Mクロックで1クロックで1アセンブラ命令が動くとしても62.5nかかる。割り込みでそれまで動いてた処理で使ってたレジスタやプログラムカウンタをセーブし 割り込み処理を起動するだけで10命令以上動くから625n以上かかる。さらに割り込み処理内でゴニョゴニョしてる間は次の割り込みは待たされる。 >>459 そいつスパークファンと同じピンアサインの互換品探してるだけだろ?何もおかしくないと思うが おかしくないよ ジャンパー線でつなぎかえりゃ済むでしょと言ってるだけ どっちが手間なんだかw
PlatformIOってこのスレ? 過去スレで話題あるなら読んでみたいんだが
>>458 教えてくれ→教える→俺はこうなんだよ→好きにせーや まあこうなるわな >>465 冷たいヤツ⇒放置 優しすぎるヤツ⇒忖度し回答 ちょっと優しいヤツ⇒不備指摘 >>455 >>460 だよねー となるとch数と速度が十分なロジアナか、もっと速いマイコン使えってことになるか… >>467 マイコンだとキツイんじゃないかな 尼で1000円くらいの24MHz 8チャンネル USBロジックアナライザなら ギリギリ使えそうだけど、コンデンサー交換しないとUSB認識しないとコメあるし チャンネルごとにトリガー掛けられるからI2CやSPIのデバッグに便利そうだけど アルドゥイーノとラズパイ組み合わせたらどんなことできますか?
>>472 これって、PC側のソフトは何を使うの? >>472 そのケースだけ欲しい デバッガやシリアルコンバータにちょうど良さそうな大きさ こんなケース秋月かどこかで買える? ケースいろいろ買い集めたけど3Dプリンター買ったら全部放置してあるなあ ケースだけにかさばるんだよなあw
VSCodeにPlatformIOを入れました Arduino IDEの様にボード事や追加したライブラリ毎のサンプルスケッチってどうやって開くんでしょうか?
>>472 安ロジアナの定番、自分も半年くらい前に買った アプリはオープンソースのものとこのロジアナのパクリ元メーカからダウンロードできるやつの2種類使えるな >>468 >>450 の画像がまさにその手のロジアナ使って見た状態(24MHzサンプリング) 8chだと足りないし速度も余裕なさそうな感じだから少し上のスペックで安いのを物色してるところだけど ch数によって周波数が変わるのが多いようで、確実そうなスペックだと安物でもあまり安くはないなぁ もちろんちゃんとしたメーカーのだともっとずっと高いが、安物買いの銭失いとはよく言ったもので サンプルとかが入っていドキュメントの中のArduinoフォルダVSCodeで開ければ見れるはずだよ
>>484 どうもありがとうございます Arduino IDEはインストールしないでPlatformIOだけでやりたくて… 安いロジアナ問題なく使えてるよ というかpulseviewが優秀
>>483 この辺かな 長め(少なくとも数min程度)に記録したいからストリームモード前提として Logic16/LA1010 16ch時16MHz、9ch時32MHz DSLogic 16ch時20MHz、12ch時25MHz 6022BL 16ch時20MHz? どれもCY7C68013Aなのかな(8chのやつも本家Saleaeも含めて ATTiny13Aで出力ピンが足りなくなったので、 3つの出力ピンで4つのLEDを順に点灯する回路を考えてみました。 D0,D1,D2が出力ピンで、A-DがLEDです。 表にすると 012 ABCD 000 0000 001 0001 - Dのみ点灯 010 0100 - Bのみ点灯 011 0101 100 1010 101 1000 - Aのみ点灯 110 0010 - Cのみ点灯 111 0000 高速に切り替えればデューティー1/4で4つ同時に点灯しているようにも見えるはずです。 この回路は電気的に問題無いでしょうか? 電源は5V、LEDのVf=2.0V、R=470Ω、6.4mA流れるのを想定しています。 また、ハイインピーダンスを使用したアクロバティックな回路を見た記憶があるのですが、 検索しても見つける事ができませんでした。 もっとLED増やせるなどのご指摘がございましたらご教授下さい。 >>488 ふと思いつきましたが、図のように抵抗減らしても問題無いですよね? Arduinoではないけど、Microchip社のCompiled Tips `N Tricksってドキュメントに 6個駆動する例が紹介されてる
別途IC使用おkなら74HC138, 74HC4514とか
こういうのは ICを追加せずに実現方法を考えるのが楽しいのよ
全く関係無いけど、DELLのCRT破壊したらコントロールパネルのボタンが分圧式?で驚いたわ よく耳にするけど実際にあんな製品で採用されてるとは思いもしなかった LEDのこんな制御も実際に採用されてたりするんだろか
>>494 分圧式のスイッチはモニターだと見かける気がする だから接点が劣化して抵抗が増えると決定押しても別のボタンとして反応するとかの不具合が発生したりする >>491 正にこれです!ありがとうございました。 IC制御のタクトスイッチをArduinoでON-OFFの制御をしたいです IC INPUT_PULL___o ̄o____GND ICの制御 ------┤← +とGNDをICが切り替えている Arduino--------┘← はんだをして割り込ませる ICのプログラムは変えることができないので試行錯誤をした結果 ArduinoのポートをINPUT_PULLUPとdigitalWriteのLOWを切り替えて +とGNDを再現して思った動作はできました これって異端だったりしますか?何かスマートな方法あったりしますか?
>>497 考え方は間違ってないけど以下の条件を満たしてる必要がある ・GNDの電位が同じ ・ケーブルが短い(内蔵プルアップのインピーダンスが高いため) ・IC側の入力インピーダンスが高い さらに arduinoとICの駆動電圧が違う場合 arduino5vでIC3.3vの場合は入力の耐電圧超える可能性がある(入力にクランプダイオード等が有れば問題無し) arduino3.3vでIC5vの場合は動作の確実性が弱い(誤作動の可能性有り) 一般的には駆動電圧一緒なら抵抗を挟んでdigital writeのhigh lowでやるんじ無いかな (抵抗はなくても動くが保護の意味も含めて念のため) >>491 折角なのでブレッドボードで配線してみました 3OUT-6LEDでサウンドレベル表示してみましたが 2msx6=12ms,83fpsでチラつきも無く快調です 4OUT-12LEDも試してみたいと思います。 見づらい配線図より、実際に動いている写真のほうがいいな
こんな感じでどう?20LED by 5I/OPort 見かけ上の同時点灯数が5個なのでそこそこスムースに見える
>>502 8PinのAVRとLi-Poかなんかで小さくまとめようと思ってたけど動くのが確認できた時点でもうやる気がなくなってしまったという… モデム付いたESP32ならあるね ただ2GのGSMだかで日本じゃ使えないとか?
>>501 なめらかですね 時計とか同時点灯少ないものには有効そう >>507 固定パターンの繰り返ししかしていないからね、ほとんどがdelayでの待ち時間だと思う >>498 3つの条件をクリアしているのと駆動電圧も同じなので 抵抗を挟んで動かしてみます 想定される条件など詳しくありがとうございました! >>507 弾の縛りが無ければWS2812Bがコスパ良すぎて Nano 33 BLE買ってみたけどライブラリもサンプルも全く無くて泣きそう
>>511 あなたがパイオニアなんだから頑張って! これからArduinoを始めたいんですが お勧めの本や㏋を教えて頂けますでしょうか。 やりたいことは鶏の孵化機で温度・湿度管理にそれに合わせた 加温や加湿、数時間ごとの卵の回転です。 温度などの計測は比較的簡単そうに見えるのですが モーターなどの動力に関しては色々難しそうなので そのあたりが詳しい本などを紹介していただけるとありがたいです。 又、お勧めのArduino本体とLCD(20*4)バックライト付き見やすいものも 教えて頂けないでしょうか?
>>514 かなり前に温度と湿度だけはできました 加温+循環ファンに関してはSSRにドライヤーつなげでなんとかなりました ただ、タイマー+モーターによる卵の回転は最初は上手くいっていたんですが 2〜3日でシステムがフリーズしたりするので 動力電源の取り回しやモーターのノイズ拾っておかしくなったのかと? で、こんどはちゃんとしたものを作ろうと改めて勉強したいので 分かりやすい本など教えていただけるとありがたいです。 >>515 その最初は上手くいったってやつの情報を出した方がいいのでは? 「タイマー+モーターによる卵の回転」なんて本はない訳だから、 たたき台があった方がいいよ。 >>513 ELEGOOの三千円台のスターターキットにPDFのガイドブック付いてるよ。 >>515 タイマー+モーターだけで済むでしょ? Arduino介するからフリーズとかするんだよ 電子回路でなく電気回路で充分 Digispark で、キーボード上のScroll Lockの LEDと、ledPin1を同期させたくて 見つけてきたんだけど、点灯しっぱなしで上手くいかない、何が間違ってますか? #define LED_NUMLOCK (1 << 0) #define LED_CAPSLOCK (1 << 1) #define LED_SCROLLLOCK (1 << 2) const int ledPin = 1; uint8_t keyNone[8] = { 0, 0, 0, 0, 0, 0, 0 }; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { uint8_t ledStatus; delay(100); Serial.write(keyNone, 2); // Release key // keyboard firmware will send back 1 byte every time it receives a key // this byte represents the LED status for the keyboard: // Bit 0 - NUMLOCK, Bit 1 - CAPSLOCK, Bit 2 - SCROLLLOCK ledStatus = Serial.read(); if (ledStatus & LED_CAPSLOCK) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
>>520 ホントだ、気づきませんでした、ありがとう御座います。 でも、動作しません。。。 そもそも"Serial"に2byte送るとキーボードのステータスが返ってくるの?
数年もやってるの? すごいね!! オレなら一日で投げ出してる。 リンク先を読ませてもらいました。(ざっとだけど) ちなみに"atmega8u2"のファームは書き換え済みなんだよね? >>Uno
IMEのON・OFFランプを作りたいんだけどなぁー。なんか無理っぽいね。 日本語入力になってると思って文字打ってたら、英語だったり またその逆だったり、よくあるんだよなー
>>524 いえ、USBタイプのDigisparkで・・・ その数年というのは、 USB付きのpicから初めて、Arduinoを知って スマホ操作の自動化をやりながらなので せっかくクーポンゲットしたけど、とりあえず今は何も買う物がないっていう
何のクーポン?Arduinoのクーポンとかあるの?
>>525 オレも欲しい でもIMEのON/OFFの状態ってPCの外部で判別できるのかな? >>529 出来ないと思う。PC側でソフトを常駐させて、IMEを監視してシリアルでマイコン側に送る方法になると思う ちと古いかもしれんが IME_GETOPEN ここらの情報読み出せばおk
下のコードの goto init; で for(;;){} に分岐した時は無限ループになるのでしょうか? void loop() { boolean flg1; boolean flg2; if (flg1 == true) { if (flg2 == true) goto init; <処理> } else { init:; for(;;) { } } }
つまり、君の疑問の答えはそこには書いてないという事だ。
>>538 はじめにavr以外を対象にwiringがあって それを利用してavrを使った別プロジェクトの成果としてArduinoができて その後Arduinoが流行って、Arduinoをスタートラインとして他のマイコンでもつかえるよう対応されていった どの段階でピンへだがクソ配置になったか分かるね。 今となっては経緯なんざくだらねえし、NanoかESPしか使わんからどうでもいいが。
そのシールドというものは1枚も持ってないなあ 件のピン配置見たあと初ArduinoだったUNOはそっとしまい込んだから もっともそれも中華製クローンだったがw
最初のArduinoが最近買った「ATmega2560 (Mega 2560)」の新参者だけど 使用例としてコードを渡されて書込装置が「atmel STK500」なので比較的すぐ慣れた。
つかその程度ならProminiで良かったんじゃないのか
>>546 やっぱ富豪だよ ここの多くの住人は300〜400円(送料込)の中華unoとか200円前後(送料込)の中華nanoとか使ってる さらに80円(送料込)以下の使う人らも Pro miniは融通が効かなくて結局nanoに落ち着く
>>546 全容が良く分からないけど、やってること比で大げさ感がだけが残る。 そんなわけ無いだろうけど、もしそれだけの処理ならATTiny13で出来そうw
昔の8ビットパソコンのCPU代わりに使うのでVCC、GND除いてI/Oピンが30本程必要。 それにしても Pro Mini でさえ某店舗では 1,266 円 とは高い。 https://www.switch-science.com/catalog/946/ どちらにしても今回の使い方では nano も使えないし ATmega2560でも速度が足りない感じで 期待した動きにならない。アセンブラで短いサイクル、一括でI/OピンがINPUTになる命令はないかなと。 >>552 自分のレスをよーく読んでみたらいい。 何やりたいか情報少なすぎて分からないから、はたからはただのひとりごとにしか見えない。 >>554 大筋でやりたいことは自分では判っている。 挨拶から始まり道草したけど質問としては下。 「ATmega2560のアセンブラで短いサイクル、一括でI/OピンがINPUTになる命令」があるか否か。 USBシリアル変換機を繋いでATTiny13とか85にブートローダーやスケッチを書き込むにはどんな配線にしたらいいんでしょうか? ググってもUNO経由のやり方しか見つけられないです
補足 ハード的にはバッファとして74LS244等を追加すれば機能は実現するも知れないけど 確証がないしハードを追加してまで確認する必要はないと現時点では考えてる。
>>555 DDRxポート(xはA〜D)に0書けば全部入力ポートになる というかリセット直後がこの状態だけど PORTxポート(xはA〜D)を読み出せば8bit分一括で読み出せる しかしなんで質問者がこんなに態度がでかいんだw 有能な人は自分の能力の程度を客観的に把握できており、 さらに上を目指す以上、自分が身を置いた場所に自分より上が必ず存在することを必須条件として生きている。 よって物腰はやわらかい。
>>556 絶対に出てくるから!これでも聞きながら諦めないで! VIDEO >>558 レスありがとう。リセット直後に全部が入力ポートの状態になることは知ってる。 欲しい機能は「出力ポートの状態から一瞬で入力ポートの状態になる命令(機能)」。 >PORTxポート(xはA〜D)を読み出せば8bit分一括で読み出せる 多分PORTAと言う1本(1ビット)の入力ポートから一括で8bit分と言う意味じゃないのか? そうではなくて24本の出力(に設定状況)ポートが一瞬で入力ポートの状態になる命令が欲しい訳。 理由は、出力ポートが一瞬で入力ポートに変らないから不都合が生じると考えてる。 補足で書いたように、バッファとして74LS244等を入れれば一瞬で出力でも入力でもない ポートにはできるけど、究極的に自分が期待する状態になるかは判らない。 詳しく書いてくれたので自分の欲しい機能と君が提示してくれた機能とは違うことは判った。 図を書けば 74LS244 を挟むことによってファンアウト的な問題が無ければ数命令で済む。 「ATmega2560」←→ I/Oポート → 74LS244 → 8ビットパソコン 直前までの出力ポートを一瞬とまでは行かないけど出力でも入力でもないポートにできる。 Arduino 単独では 出力ポートの状態を変えるには入力ポートにするしかない訳でしょ。
>>562 なにも理解してなくて草 ゼロレジスタ用意しときゃ1命令でポート内の全ビット入力に出来るじゃん てか>>558 の書いたことなんも理解してないよね? 自分が解ってない側なのに間違った想像したうえなんでそんな偉そうに出来るのか甚だ疑問 もう二度とレスもらえないと思うよ >>564 申し訳ない、少し調べてみる。ありがとう。 Pro Microだとポートこんなにバラバラに割り当てられてるのね ┌ B5 B4 E6 D7 C6 D4 D0 D1 xx xx D2 D3 ┐ │ │ │ 32u4 USB │ │ └ B6 B2 B3 B1 F7 F6 F5 F4 xx xx xx xx ┘ ビットの取り出しや並べ替えをした上で複数のポートから一部分ずつ出力するにしても なるべく余計な計算が少なくなるように配線も含めて工夫する必要があるのか…面倒だ
>>568 抵抗が無い場合、PSWがOFFの時にPD1の信号レベルが不安定になる CMOSの入力はこういう状態は良くないのでプルアップ抵抗を入れる Arduinoの内蔵プルアップ抵抗を有効にした場合は 外付けの抵抗は不要になる P0では長いケーブルとかでAVR内部のプルアップだけだと弱いから、外部プルアップ抵抗入れろと書いてある PSWは調べてみるとStart upとかresetとかに使うようで、Dataピンよりシビアな要求はなさそうで、なくても行けると思うけど プルアップしておいたほうが無難かと思う
>>566 案内どうもです。面白そうな内容なのでブックマークしました。 ただ今の所は千円程度ならアドレスピン等でも16本は欲しいと考えてます。 昨年までは下のスレにいまして322が自分です。自分も千円がはした金とは思いませんけど 千円程で基板設計やソフトで楽できるなら安いと考えてるから余裕があるのかも知れません。 因みにリンクで画像を貼った「緑色の基板」も実装して1300円で個人的には、お手頃感です。 ただし秋月のFT245RL(千円、しかも送料500円が痛い)は除きます 【懐古趣味】ワンボードマイコン総合スレ 第三章 http://2chb.net/r/i4004/1504237364/ 322ナイコンさん2018/02/16(金) 21:44:28.65>>326 >>315 当時の技術書には拡張ハードの製作があって手を咥えて見てたけど、その手の拡張ハードの基板を 1000円〜2000円の安価で提供し技術書をCD(DVD)等で同梱したERISシリーズを2万円なら納得する。 ここまでするなら横流しと揶揄されない。ただ未だ形になってないので現時点では妄想レベル。 326ナイコンさん2018/02/17(土) 08:20:54.91>>330 >>322 数が出ないものをそんなはした金で提供しろと? そこまで言うなら自分で企画して開発委託でもしてみりゃいいんじゃないですかね いくらかかるか >>562 俺も詳しくないけど AVRの場合、wレジスタIOレジスタの移動は1サイクルで実行できるので予めwレジスタにx00とxffを用意しておけば24本のIOを3サイクルでin/outの切り替え出来るって >>558 の人が書いてる >>569 >>570 どうもありがとうございます PD1はプルアップ無しで作ってみたんですがやり直します >>568 この続きです S端子ケーブルを切断してみたら4本の線の他に被覆無しの寄り線も入っていました コネクタ周りを分解してみると被覆無しの寄り線はコネクタの外側にはんだ付けされてました この被覆無しのより線はArduinoのどこに繋いだらいいんでしょうか? これもGNDですか? >>575 シールド線のことだね それはノイズから信号に影響を受けない様にする あるいは信号線からノイズを外に出さない様にする為だけど 非常に難しい問題が含まれているのでいるので説明しないけど 1. GNDに接続する 2.金属筐体に接続する 3.カットしてどこにも接続しない の内のどれかです ただ今回の場合はどれでもいい気がするけど >>576 どうもありがとうございます ケーブルの中には色付きの被覆あり単線が4本、被覆無しより線が1本で、そしてそれらの周りにはすぐに千切れる薄いアルミ箔みたいなので覆われていたんですが、このアルミ箔はどこにも繋がないで捨ててしまって大丈夫ですか? 分解してみたコネクタだとアルミ箔は外してあるみたいでした 繋げなくていいですよ、アルミ箔はまさしくノイズ対策 ノイズの影響を遮断するために、わざわざコードにアルミホイルを巻いたりするぐらい
>>572 案内どうもです。はるか昔、8bitPCで拡張カードを作りたかったことを今実践しています。 それで>>546 のリンク画像の「黒い基板」でやりたかったことは8ビットPCで、CPUの切替でした。 リンク先の画像に写ってるFM-7と言う8ビットPCはメインCPU(MPU)が6809だけど動作しながら、 オプションのZ80とCPUが交代できる仕様です。今回はZ80の代わりに「Arduino」を使って切り替える 実験をしてます。 それで、「6809 → Arduino」はサンプルがあったので実現できてますけど、その状態から再度6809に 戻すことで躓いています。動作させながら CPU(MPU)の切替は面白い試みですがハードルも高い感じです。 理由は切替のフラグを74LS74で持ってるようですが、既定値を書いて「Arduino → 6809」に戻す際に ソフトで処理してるので、Arduino と 6809 でバスが衝突してるのではと推測しています。ですので ハードを追加しないと確実な動作は無理かなと思いながら衝突する時間が短ければ大きな不都合がなく、 制御が 6809 に戻る可能性もあるとも考えてまして Arduino の出力を一瞬で停止したかった訳です。 >>573 説明して頂いたことを指針として高速処理したい部分をインラインアセンブラにしてみましたした。 結果は質問の前よりは前進しました。因みに前進した内容は「BREAK + RESET」で先に「RESET」を 離し次に「BREAK」を離すと(ホットスタートと言うことがあります)6809に戻ることがあってメモリに Arduino で書いた内容が残っていました。ただ書いた内容が正確に反映されてない問題や確実に戻ると 言う状態でもないので、その辺りはもう少し実験してみます。 長文失礼しました。 全く理解出来ない趣だけど、実機でCPUエミュレーション?する事に意義があるんじゃないのか
対策はわからないけど、そういうものを何に使うのか、なぜそうなっちゃうのか興味がある。
PC88MkUSRのFM音源を実機のスピーカーで聴きたい願望はある
>>584 歳取って時間を持て余すようになるとな 当時出来なかった事を死ぬ前にやっておきたいと思うようになるんだよ 悔いが残らぬよう そういえばFPGAにZ80コアあったからそれ使えばワンチップで出来ちまいそうだな
結果報告をします。アドバイスを提示してくれた方へ、ありがとうございました。 下のようにインラインアセンブラのコードを入れましたけどソフトでは無理のようです。 asm("DDRG = B00000000"); // data D40 EB port inputmode asm("DDRF = B00000000"); // address(0-7) port inputmode asm("DDRK = B00000000"); // address(8-15) port inputmode asm("DDRL = B00000000"); // data D43 RWB=WRITE port inputmode asm("DDRC = B00000000"); // data(30-37) port inputmode >>581 >やっと具体的な機種名出たか 画像から判る方はいると思いましたし黒い基板の製作者に迷惑が及ぶのではと考え当初は 積極的な明示は控えました。とは言え回答する方も「結局、何がしたいのか?」と訝しむ的なことは 当然と思います。基板の製作者に迷惑が及ぶことを避けたかったことが真意ですので御了承下さい。 因みにリンク先の方は知ってました。現在彼が趣味で取りくんでる内容は40ピンのインターフェースを 通じてMMUを用いて 6809 で1Mバイトのアドレス空間にアクセスする(ほぼFM-77仕様)ことです。 FM-7の40ピン使う着想は似てるかも知れませんが今回の基板は自分のオリジナルではありません。 >>586 正にその通りです。 実機に新たに作った拡張ボードや周辺機器を付けたいってのはいっぱいあるし 逆に周辺側のものや古い部品で新たに作ったものを 実機じゃなく今新たに制御したいってこともよくある
>>589 同期はどうなってんの? 6809は2MHz、MEGA2560は16MHzなんだから 7命令以内で完了すれば間に合いそうだけどな Arduinoで日本語を扱いたい場合どうしたら良いんだ UCS/UTF16なら全対応のSJISテーブルでどうにかなるけどUTF-8とか どうしたら良いのかさっぱり
>>589 インラインアセンブラをなんだと思ってンの? 何もかも違うしそのコードコンパイルしたアセンブリコード見た? 何もしてないでしょそれ ATmega2560でDDRC,F,G,K,Lを0b00000000するインラインアセンブラならこう __asm__ __volatile__( "eor r16, r16" "\t\n" "out 0x07, r16" "\t\n" "out 0x10, r16" "\t\n" "out 0x13, r16" "\t\n" "sts 0x107, r16" "\t\n" "sts 0x10B, r16" "\t\n" ); もちろんこのままじゃr16は破壊されるからそこは自分でなんとかしろ その関数内でゼロレジスタとして決め打ちしておくとかpush,popで待避するなり
Pro MicroにLチカのスケッチを書き込んだらその後シリアルポートから消えてしまい書き換えが出来なくなってしまいました。 どうやったら再書き込み出来るんですか?
その手のは書き込みが始まった時にリセットボタンを押せばなんとかなったりするんじゃなかったっけ
あーシリアルポートからも消えたのか じゃあ違うかもな
>>591 下のCPUの状態(遷移)は74LS74が保持してることを前提として 1)6809 の停止は「POKE &HFD05、1」と言う命令で FM-7 自体が停止状況を作り出す(LED点灯) その後 6809 が停止した状態では MEGA2560 が FM-7 のバスを支配下に置きメモリ等に読み書き可能 2)6809 が停止した状態から同じアドレスに MEGA2560 が「0」を書き込んで 6809 の停止状態を解除する(LED消灯) 3)しかし「0」を書き込んで 6809 が動きだした時点で MEGA2560 は未だアドレスバス等でOUTPUTの状態を維持し 信号を出しているので バス が衝突してることは確かなのではと考えてる。つまり MEGA2560 が 6809 の停止解除後の 7命令以内であれば 6809 が停止を続けてると言う訳ではなく、解除したと同時に動作は始めてる。 自分としては、その状況が有っても、運良く大きな支障(影響)もなく 6809 に制御が戻る可能性に期待したけど 確かめてみると、そうは問屋下ろさなかったと言う結論になりました。 なおロジックアナライザがあれば更に詳しくは判ると思うけど、その類の機材はないので。 >>594 MEGA2560 が FM-7の「&HFD05」に「0」を書き込んだ後は物理的に MEGA2560 が壊れれない限り レジスタ の内容の破壊は許容範囲。とは言え asm("DDRG = B00000000"); ではダメなのかな? 一応、自分なりに調べて「DDRD = B11111110;」を真似して asm(" "); で括ったけど。 http://www.musashinodenpa.com/arduino/ref/index.php?f=0& ;pos=850 >>599 asmで囲むことにどういう意味があるかわかってんの? なんかやりたいことに対してあまりにも知識が無さすぎると言うか バカにしてるとしか思えん 俺は抜けます >>595 が正解だな >>601 DFUローダのやつ?Leonardクローンのやつ? >>601 中華コピーだとオマケのUSBケーブルがくそだったりするから ケーブル変えるのも1つかな。あとはIDE再起動。 >>602 >>603 Hiletgoの中華コピーです。ケーブルは付いてきて無いです。 GNDとRSTにタクトボタン取り付けてみました。 ボタンを押すと一瞬だけシリアルポートが見えるみたいでした。 これが通常の動作ですか? PC再起動も試しました。 一番最初にPro MicroをMacに繋いだ時、キーボードがなんとかってダイアログが出てきてそれを閉じたんですが関係ありますか? それ以降そのダイアログは出てきてないです。
6502といい6809といい、なんでZ80ボード載せたがるんだろうなw
テーブルや変換に莫大な容量使う位なら、テキストをSJISのHEXでchar型に入れた方が手軽なのかな
>>608 いくつかケーブルあるけど他のボードだと大丈夫でした (sparkfunやadafruitなど) >>609 中華&Macか、CH340のドライバかも。 以前MacOSごと落とすひどいドライバに当たったことある。 >>609 リセットの手順ちょっと違った pro miniの場合だけどこんな感じ 参考にしたページのアドレス貼れないからコピペ Arduino Pro Mini側のリセットボタンを押しながら、 Arduino IDEのアップロードを実行し、 FTDI-USB変換ボードのTXが光った瞬間に、 Arduino Pro Mini側のリセットボタンを離す。 >>605 comポートが変わった事にお前さんが気付いていないだけなのでは? >ボタンを押すと一瞬だけシリアルポートが見えるみたいでした。 って書いてるから、んなわけないでしょ
書き込めなくなったときのリセット2回押しとかのタイミングって 何回かやってるとコツが分かってくるんだけど 問題起きたときしかやらないから記憶に残ってないし口では説明しにくいな 2回押ししてから素早くポート選び直して転送開始し LEDが通常の転送成功時と同じパターンで点滅した直後か点滅してる途中ぐらいで再度2回押し とかだったかな
>>599 マップドIOだと思うので アドレスバス使わないとレジスタ&HFD05に書き込めない 6809のクロック立ち上がりか立下りを待って 同期取らないと7命令確保できないよ >>610 Pro MicroなのでCHxxxなどの話は今回は関係ないです >>612 リセットボタンを押して一呼吸くらいしてから(そしたら一瞬現れる)からシリアルポートを選択 書き込みボタンを押してからふた呼吸くらいしてからリセットボタンを押したら書き込めました >>614 ls /dev/tty.*で確認してます >>616 ぐぐると、2回押すとDFUモードに入るかとかなんとかって書き込みがあったんですが、その状態になるとどうなるか分からないので難しいですねこれ >>618 もう一度、確認してみな。 今、LeonardoでLチカをやってみたが、 com5で書きこみしてcom13に変わったぞ。 >>619 すみません、Windowsの話は分かりませんが、自分は特定のポートを決め打ちして書き込もうとしてる訳じゃなくて、そもそもポートが見えないって話です。 で、リセットボタンを押すと一瞬だけ表示されるからその時IDEで選択して書き込みボタンを押す、そしてまたリセットボタンを押すと書き込みが出来るという所まで分かったというのが618です。Macではポート番号は変わってないです。(結果的に決め打ちしてますけど) 中華はともかくとして、SparkFunのPro Miniでも毎回この手順を踏まなきゃ行けないんでしょうか? >>621 すみません、Pro Microの間違いでした 書き込めたのね。よかったよかった。 Leonardoを引っ張り出して思いだしたw HIDを使ったあとはcomポートがすぐにHIDに切り替わっちゃって、 パソコン側でcomポートがつかめなくなっちゃうんだった。 オレも経験したわw >>620 むかし、オレもこのケースはすごく悩んだ気がするが、 LeonardoはArduinoIDEが"書き込んでます"の表示になったら リセットボタンを押すとアップロードできたと思う。 HIDを使わなければこの症状はならない。 HIDを使わなければ っていうのはどうやるんですか?
最終的にピンモードの高速変換を下のようにして(インラインアセンブラなのか?) 1)MEGA2560 使った FM-7 のメモリに書き込みは成功(これは前から成功例あり) DDRG = DDRG | B00000000; // data D40 EB port inputmode DDRF = DDRF | B00000000; // address(0-7) port inputmode DDRK = DDRK | B00000000; // address(8-15) port inputmode DDRL = DDRL | B00000000; // data D43 RWB=WRITE port inputmode DDRC = DDRC | B00000000; // data(30-37) port inputmode 2)この後ホットスタートで 6809 に制御が戻り、モニタコマンドでメモリの変更を10回程確認 3)しかし FM-7 のメモリに書いた(テスト)プログラムの起動は BASIC の EXEC コマンドでも モニタの G コマンド でも失敗。最終的に↑がしたかった。ソフト的な面では、この辺りが限界かなと。 お騒がせしました。 >>600 何せ「Arduino(IDE)」を使い初めて8日目なので判らないことが多いです。 >>624 HIDはヒューマンインターフェースデバイスだったかな。 つまり、"Keyboard.h"や"Mouse.h"をインクルードしない。という意味なんだけど... >>626 どうもありがとう サンプルスケッチのLチカを呼び出しただけだからそれらはインクルードしてないはずなのに…なんででしょう? >>626 ではないが 原因はわからないけど、そういう報告が結構あるから>>612 みたいな対処法を書いてくれてる人がいるんだと思う ちなみにおれもPro MiniでLチカやっただけなのに2度め書き込めなくなった経験がある >>627 うちの場合は、Leonardoだけど、下記の三つがある。 Arduino Leonardo bootloader (com4) リセットした時に一瞬でるやつ。 Arduino Leonardo (com5) "Keyboard.h"をインクルードするとcom5になる。 Arduino Leonardo (com13) "Keyboard.h"をインクルードしないとcom13になる。 Windowsだから参考にならないかもだけどw あ、原因はオラにもわからんです。すまん。 SSD1306の描画ライブラリ書いてて思ったけどVerticalモードでアクセスした方が良いのかな P/Hは縦8ドットのフォント描く場合に限って楽だけど、それ以外はVの方がビット配列的に自然?
>>628 >>629 どうもありがとうございます 昨日の >>596 です 今日は別の店のPro Microが届きました 昨日のボードとは違ってMacに繋いでもキーボードがなんとかのウィザードは出てこないし、MacのシステムプロファイラやArduino IDEではArduino Microとして認識していました ボードからArduino Microを選んでサンプルのLチカを書き込んでも昨日のようにシリアルポートから消える事もありませんでした。 これなら普通のArduinoとして使えそうです >>632 賛成 Arduino側が扱う回路によっては、USB経由で最悪パソコンを壊す可能性あるし、中古で充分だから、万一壊しても損害の少ないWindowsマシンを1台持っとくといいと思う >>585 音源に付いて同様な思いがありますけど例えば Arduino を使って脈はありそうですか? PSGなら実際にやってみたしFM音源もやればできると思う(やってる人は沢山いる) 今やってるのはAVR16MHzのdigitalWriteだと辛い感じだけど
日高総帥のマシン語サウンドプログラミング読めば FM音源チップでまともに演奏するには気が遠くなるぞ
>>635 >>636 レスありがとうございます。 先ずはPSG音源から始めてFM音源については、その後に考えてみます。 Arduino Nano 33のMicro USB端子はもげやすいタイプなんだな 高いのになんだかなー
先日始めたばかりの者で、プログラミング関連は全く入門以前の知識ではありますが質問失礼いたします。 前置きとして・・・電子タバコの電源機器(電気回路としての分類上は電熱回路)を作りたいと思い、ひとまず現在システム試作としてUNO REV3と OKL-T6-W12N-C搭載秋月オリジナルモジュールを組み合わせて、以下に提示する接続回路およびプログラムでコンバータモジュールの出力を 任意で調整できるところまではやってみました。 ・ブロック図(Trim-GND間の部分をトランジスタ換装でデジポテ的に電流制御しました) ・プログラム ・テスト時の実際の様子 VIDEO ここで次の段階として、コンバータ出力段に接続した発熱体コイルの抵抗値を常時読み取り、演算を介して電力指定でArduinoボードが出力電圧を 自動的に調整するようなプログラムおよび回路を組むには一体どんな方法がありますでしょうか? 例えば発熱体コイルの抵抗値が1Ωだとして、9Wの出力電力を指定して3Vの出力電圧に自動で調整するといった感じです。 >>639 > 発熱体コイルの抵抗値を常時読み取り 考え方として 発熱体に与えた電力は全て熱に変わると仮定して 供給電力制御のみ行ったほうがシンプル DCDCの発生する電圧は発熱体の許容80%程度にTrim設定しこれをいじらない 上記を100%性能とし、DCDCのON/OFF端子をスイッチングしPWM制御する データシートを見るとDCDCのON応答は6ms遅延があるので数Hzで 次のステップは温度センサーで制御になるけど 最初の10秒はフルパワー、以降50%、3分後に自動OFFとかでいいんじゃね 1Ωは計測できるでしょうけど、サブオームを計測するのは、無謀なのでは? 温度管理するには、Ni、Ti、SS、どのコイルもサブオーム帯での運用ですよね。 普通に FT なりで MOD 買った方が早い。どっちにしろ温度管理も、制御カーブも 使わんようになる。 コイルの抵抗値を計測するために、引っ張りだした配線の抵抗値だけでも。。。 それにコイルに流す電流が 20W〜75W でしょ?
温度はどうでもよくて単に指定のWだけ発熱させりゃいいんだろ? V=√(WΩ)で済むじゃねーか
>>639 初心者にわかりやすい手段としてarduinoのADコンバータを使った手法 回路を以下の通りに変更する ・発熱部のGRD側と出力コンデンサの間に0.1Ω程度の抵抗を挟む(入れる)抵抗値は流す電流によって選択する ・arduinoからVoutの電圧を取得出来る様にする ・arduinoから発熱部のGRD側と上記で追加した抵抗の発熱部側の電圧を取得出来る様にする 測定 DCDCが作動してる状態で抵抗側の電圧測定する(例2.5Aで0.25Vの電圧発生) DCDCの出力電圧を測定 あとは計算すれば発熱部の抵抗値が求められる 例 3v / 2.5a -0.1Ω = 抵抗値 発熱回路を作りたいんでしょ? 電子タバコの抵抗値は少数2桁の精度だよ。 0.10Ωから1.80Ωの間で、赤熱するコイルを計測するんだが、 18650バッテリーを極端に言うとショートさせてる状態。 常時 5V 30A とか流れ、吸いはじめのピークは 60A にもなる。 USBの 5V とは、レベルが違う。 だからバッテリーの許容範囲を超えて、低抵抗にして 爆発事故が頻繁に起こる。低抵抗の方が発熱量が多くて いわゆる若者が好きな爆煙になる。 素直に MOD を買うか、DNA基盤を買ってケース自作程度にしとけ。
直接arduinoの質問では無いんですが、よくあるピンアサイン図の様な物はどう言ったソフトで作るのが楽なんでしょうか おそらく一番楽なのはエクセルだとは思うんですが、フリーソフトで何か無いですかね
>>646 >よくあるピンアサイン図の様な物 例えばどれ? >>640 ご提案有難う御座います。 要するにリバースエンジニアリングするということでしょうか? >>641 ご教示・ご提案有難う御座います。 すみませんが“発熱体の許容80%程度”という部分につきまして、具体的に何の許容値のことかお教えいただけると光栄です。 この許容値とは熱容量のことになりますでしょうか? また、リモート端子の数HzON/OFF制御に関してですが、digitalWriteのHIGH・LOWを使いHIGH側のdelay値を101以上にするということでしょうか? ちなみにですが次のステップとなる温度センサーは、測温抵抗体式として発熱体自体が検温部になることを考えています。 >>642 ご指摘有難う御座います。 まず抵抗値に関してはミリオーム単位の世界で細心の注意を払わなければならないのは重々承知しています。 つきましては各種接合に関しても従来とは違った設計を考えています。 例えばコネクタ部と基板部の接合は、リード線ではなく例えば以下に紹介するLUXOTIC MF BOXのようなターミナルとネジ止めで考えています。 この他にもアトマとMODの接合において、ポジティブピン端面接触ではなくネジ接合を考えています。 また、ネジ切り違いによる問題は例えばアトマベース取り付け後に別途ポジティブ側アセンブリを組み込む構造で解消しようと考えています。 あと余談ではありますが・・・一応既製品は既にいくつも所有しており、電子タバコの愛好暦は現在5年半ぐらいとなりTC使いはKOOPORmini (KP60)使いを機に4年ぐらいになりますが、個人的にはTC機能はおそらくこのままずっと使い続けていくと思います。 特に今はArcticFoxがあり、更に嗜好性・応用性が高められる物があるのでこれはもう手放せません。 それこそパフカットタイム60秒設定やオートスイッチ機能は、電子タバコとしてだけではなく、例えばCigalliaのCIG2.0のアトマを流用して 加熱式タバコおよびハーバルヴェポライザーとしての運用も難なく可能になります。 また、この電熱技術は例えばNovelLife TS80のようなTCハンダゴテとか製作する上で応用が利くと考えています。 ArcticFox使いを機にウェアシステムおよびプログラミングに魅了され、これからはそういった工作も趣味にしていく所存です。 >>643 ご教示有難う御座います。 最終的には温度制御も目標にしています。 一応段階的にシステム開発を考えていましたので、次点としては電子タバコ用語で言うところのVW機能の構築を考えていました。 先に説明した私のプログラムでは、まだVV機能と言われるものでしかなく演算による制御が含まれておらず、温度制御システム構築以前の 問題なので段階的には演算を組み込んだプログラムの作り方を覚えるためにまずVW機能を選択しました。 つきましてはご教示いただいた演算を組み込むための文法等はどんなものがあるのかをお教えいただけると光栄です。 恐縮ですが現段階では各文法等の意味や使い方すらまだろくに知らない状態にあります。 >>644 ご教示・ご提案有難う御座います。 つきましてはプログラミングにおいては一体どういった文法等を選択すれば良いのでしょうか? 恐縮ですが現段階では各文法等の意味や使い方すらまだろくに知らない状態にあります。 また、シャント抵抗に関してですが、ご提案はVoutに対し並列に組むということでしょうか? >>645 ご指摘有難う御座います。 まず危険性については重々承知しています。 そして試作において電池の消費電流に関しては、ラジコン用ワットメーターを活用し監視する所存です。 ※先に提示した動画をご覧いただければそのワットメーターによる監視状態が判るかと思います ちなみにですが最終的な想定としては、コンバータモジュールをもっと高スペックにして50W運用あたりを最大として考えています。 そして電源構成は採用コンバータモジュールの仕様のこともあり、3セル直列構成あたりで終止電圧をセル当たり3.0Vで想定していますので 安全マージンを考慮して効率70%と低く見積もって入力段消費電流は最大10A未満で考えています。 また、採用セルはラジコン用とかの高出力対応小型リポかリフェを考えています。 >>945 あと余談ですが・・・DNAは200以降はチョークコイル二個使いによる昇降圧独立制御コンバータなので魅力的ですが、 肝心のウェアシステムであるEScribeが機能的に狐より劣るのでイマイチ食指が動かずにいます・・・。 特にハーバル使い含めいろんな使い方・ビルドする私にとって、オートスイッチ機能やPI値変更機能が無いDNAはデメリットが大きいです。 すみませんアンカミスです・・・。>>645 でした。 >>648 >>651 こんな感じの 欲しい情報が一枚に揃って無く色々見ないといけない事が多いので、必要な情報纏めたいなと とりあえずGoogleスプレッドシートで弄ってみてます >>650 一応簡単な回路図面 https://imgur.com/iMphtIr 適当にスケッチ書いてみたけど、以下言い訳 ・Arduinoのスケッチを描いたのはこれを入れて3回目のみ ・検証はしていないのでこのまま動かない可能性の方が高い https://imgur.com/tmtPDpW これも、650さんが動かしてるのもそうですが、DCDCが正しく機能してない・・・ 正直MOSFETに置き換えても同じ結果が得られるはず 電子タバコは吸わないので詳しくないけど発熱の回路を作るなら バッテリー>LCローパスフィルター>発熱体>シャント抵抗>N-FET> バッテリー>LCローパスフィルター>P-FET>発熱体>シャント抵抗> で構成してFETをPWM制御した方がシンプルじゃないかな >>656 その程度なら、cassavaという表計算が超軽くていい メモ代わりに使えるくらい軽い >>658 ご教示・ご提案誠に有難う御座います。 まずご教示いただいた内容をきちんと理解して、これから実践して覚えていくと共に精進する所存です。 つきましては恐縮ですがご教示いただいたプログラムにおいて、大まかな概要を人間語および日本語的に箇条説明していただくことは可能でしょうか? なにぶんまだ機械語(および英語)に慣れておらず、更に自身がアスペルガーなこともあり各文法の意味等の理解に苦しんでる状況にあります・・・。 一応人間語的な話で取っ掛かり的な部分が掴めれば理解可能なんですがそれがまだ出来ていない状態です。 ちなみにですが教本は今のところ“ゼロからよくわかるArduinoで電子工作入門ガイド”と“みんなのArduino入門”の二つは買ってみたのですが、先に 説明しましたアスペルガーなこともあり中々行間が読めず教本内容の理解に苦しんでいる状況にあります・・・。 お手数かと存じますがもし可能であればプログラムにおいて箇条説明を宜しくお願い致します。 また、後学のためにDCDCが正しく機能してないという部分において、どういった部分の問題要素なのかご教示いただけると光栄に存じます。 つきましてはシステム全体の回路において、チョッパを介さない方が良いのはどういった要素があってのことなのかご教示いただけると光栄に存じます。 一応電子タバコ用途としての大まかな概要を説明しますと、発熱体は常に単一の物では無く使用者が随時いろいろ仕様を変えて組み込む感じになります。 すみません補足です。 チョッパの意味はチョークコイル等のインダクタによるコンバータの意味で言いました。
>>658 補足としてもう少し電子タバコ用途としての概要を説明しますと、発熱体は測温抵抗体となり主にニッケルコイル等を採用します。 そのニッケルコイル等の抵抗値変動を読み取り、その変動値を温度に換算して演算により指定温度=指定抵抗値になるように 出力電圧および電力を制御するシステムです。 また、多種多様な発熱体を換装して、その都度演算のための基準値を任意の値に変更することが可能なシステムです。 Niコイルってことは、大まかに言うと、常温時に 0.1Ω、発熱時に 0.8Ω ぐらいだよね? その抵抗値を計測する、リード線の抵抗値は? 生セルのメーカーにもよるけど、0.1Ωを少しでも切ると。。。 VIDEO >>663 ご指導有難う御座います。 まず基準となる冷間抵抗値が0.1Ω仕様なら、電子タバコとして実用的運用温度帯の理論値は以下のようになります。 ※基本的には200℃前後の運用温度になるので0.2Ωあたりとなります また、抵抗値測定方法として4端子法のシステムが組めないか考えています。 これであれば問題無いのでは?と考えています。 TCMODの既製品は例えばDNAや狐仕様ですと、リアルタイムレジスタンスで1mΩ単位の分解能で測定していたり、 基板内部抵抗を測定していることからおそらく基板上で4端子法の回路を組んでいるのでは?と解釈しています。 あと破裂事故についてですが、第一にインダクタ式コンバータによる出力制御を想定していますので、出力段の負荷の 抵抗値において直接的影響は低減可能であると存じています。 >>663 補足としまして・・・>>649 で触れましたが、各種接続にリード線は一切使わず全てブロック的な物体で接合して 更にネジ止め可能な箇所は全てネジ締め付けにより接触抵抗の影響も低減する考えではあります。 >>650 コメントつけたよ https://imgur.com/wfGCfup まあ、本読んでも理解するのに時間はかかると思うよ マイコンの場合、電子工作の知識・プログラムの知識の両方が必要だからね(どちらか一方でも詳しければいいけど・・・) Arduinoあたりだとよく理解しないでやってる人も多いんじゃないかな? 私はArduinoに関してはリファレンスマニュアルに目を通した位しか知識ないです DCDCの間違いに関しては以下のことが考えられます ・ArduinoのanalogWriteはアナログの電圧を出力してる訳ではない、490Hzか980Hz周期の矩形波を出力する(指定した数値に合わせた幅でHIGH・LOWが変わるだけ) ・Trim端子は電圧を調整るするために使うが、現状だと低い電圧と高い電圧を上記記載の周期で変化させてるに過ぎない ・負荷が小さいときに出力電圧を測定すると一見うまく動作してるように見えるが、負荷を大きくし、出力の波形をオシロスコープ等で観測すると矩形波に近い出力になると思われる ・つまり現状の回路だとDCDCは正しく機能してるとは言えず、もはやスイッチ程度の動きしかしていない >>チョッパを介さない方が良い これに関しては良いとか悪いとか優れてるとか優れてないの話ではなく(そもそも良いとは言ったわけでなくシンプルと表現した) 目的を達成するために少ない部品(単純な)で構成できたほうが、回路全体に対して理解がしやすいのでは?との考えです。 昇圧なしで単純に発熱コイルの出力制御だけならFETのスイッチングでも良いと思う あと発熱部の抵抗が0.1〜0.2Ωの電流測定なら、シャント抵抗での損失を減らすために、 より低い抵抗値のシャント抵抗(もはや抵抗じゃなくて単芯の銅線を使ってもいい気がする)を使い 低い電圧をはかるための差動増幅回路が必要かもね >>667 ご教示そしてコメントの件誠に有難う御座います。 まずご提案いただいた文法内容の意味と使い方をしっかり理解して、実践を通じ更に自身のやりたいことと合わせて精進する所存です。 それから問題点の意味は解りました。 言ってしまえば矩形波の如くまさに四角い車輪の再発明をしていたことになるんですね・・・苦笑 同時に>>641 さんのご提案の意味も解った気がします。 確かに自分としても発熱体運用テストのとき、出力電圧が降下するのではなく逆に無負荷時より上昇する点は気になってました。 ※動画では無負荷時の最大電圧を撮ってませんが開放電圧を測ったら5.65Vぐらいになります 一応自分なりに解釈してみたんですが、この現象はTHDの上昇により歪みまくった波形になってしまってるということになるんでしょうか? 可能ならオシロテストはやりたいんですが、高価故にまだ買えてないことが本当悔やまれます・・・。 そしてこれは一つの教訓としまして、まず回路構成の簡素化を実施する所存です。 また、これはこれでちょっと面白みがあるので、別途如何にアナログに近づけられるかは探求しようと思います。 つきましてはデジポテについてなんですが、デジポテも結局は同様な意味合いにはなってしまうのでしょうか? あとシャント抵抗の件は解りました。 一応出力段の運用電流が10A以上とかも想定していまして、マルツ経由でデジキーに扱いがある数mΩとかを探していく所存です。 また、差動増幅回路のご提案も誠に有難う御座います。 自分としてはシャント抵抗を低くしたはいいが、その弱電圧をどう扱い処理すれば良いのかが判りませんでした。 ちなみにですが代用の件で銅線以外に、例えば相応に太いカンタルワイヤーとかでも代用は問題ないでしょうか? カンタルであれば抵抗温度係数も抑えられるので最適なのでは?と考えた次第です。 一応現在所有の最大は20ゲージです。 また、抵抗値を決める際はどの測定器がお勧めかご教示いただけると光栄に存じます。 Intelの2MbitフラッシュROM、28F200のワード幅モード(BYTEピン=HIGH)って、通常のバイト幅モードだと 0x00000〜0x40000のアドレスで262144バイトにアクセスするところを 0x00000〜0x20000のアドレスで131072ワード=262144バイトにアクセスすることになるの? バイト幅モードだと16bitデータバスの使わない上位8bitのうち1本を追加のアドレスバスとして使うようなことが書かれてるから アドレス空間が2^17=131072になったり2^18=262144になったりするということで、多分そうなんだろうけど
>>669 DCDCの出力電圧について ちょっとDCDCの仕様書を見てきました 回路から計算すると、トランジスタがONでDCDCの出力目標が約5.51V(Vce0.09Vの場合)に設定される トランジスタのベースに電流が流れない状態だとDCDCの出力目標0.591Vに設定される 負荷が存在し、DUTY比50%の状態だとテスターではこれの中間程度の電圧が表示されるはず DCDCは出力コンデンサにたまった電気を放電すること出来ないので、約5.51V付近の電圧でとどまる 測った数値が5.65Vとのことなので、ほぼ一致すると思います テスターで見えない恐ろしさについて 0.591Vと5.51VをDuty比50%での状況、テスターでは中間の3.05Vほどに見える 単純に1オームの負荷を接続した場合、電圧^2 / 抵抗 = 9.3W程の出力に思える 実際の発熱 (0.591V^2 x0.5 / 1 )+(5.51V^2 x 0.5 / 1) = 15.35W 一応、ArduinoからDCDCの電圧を調整する方法を提案しときます(コスト重視!) https://imgur.com/L7s1RhT この回路なら理論上0.7~5.0V位の範囲で調整可能だともいます (ただしメーカーの想定した使い方ではないので不具合が出る可能性もあります) analogWrite(0)で5V付近 analogWrite(255)で0.7V付近 コンデンサの容量を増やすと電圧のリップルが少なくなり、減らすと応答速度が上がります 注意点としてはArduinoで電圧を指定するまでと&電圧に到達するまでは5V付近に調整されることです DCDCのON/OFFを使い電圧調整後にONすると良いと思います >>669 シャント抵抗について メーカーから精度の良いシャント抵抗を入手して使う場合は、シャント抵抗に差動増幅回路を接続して電圧を読みよるのが無難かと思いましたが、 そんな高価なものを使うのは負けた気がするので、他の手段を提案します また、高価な計測器もなしの方向で(俺は持ってないし込々380円のテスターとか使ってる) 例えば、電子タバコの発熱コイルと電源部分がある程度離れてるなら、その電線をシャント抵抗として考えてもよいと思う (例えば切断面積2.0mm2の銅線1mだと約8.6mオームの抵抗値が有る) あとカンタルワイヤーをよく知らないので素材として適してるかは分かりません 距離が近い場合やらは適当に抵抗になるものを使う(用意する抵抗値に精度は不要なので予測値を計算で出したものでよい) (ただ高い抵抗値の物は自己発熱での抵抗値の変化が考えられるので避ける) 必要な電圧に増幅する(単電源のオペアンプ等を使うと楽かな)増幅値は配線の抵抗も含め5V超えない範囲を狙う 最大電流=4V付近を狙う計算例> 倍率 = 4 ÷ (最大電流 * (シャント抵抗 + ローサイド配線抵抗)) この回路では電流と電圧が比例するので、電流をテスターなどで計測してそれを元に補正すれば精度の高い電流計測が可能になる https://imgur.com/Ih4lbo8 計測1>適当なダミー抵抗などにテスターの測定電流値を超えない範囲で電気を流す(電流値を読み取る)電流はコイル部分よりハイサイド側で測る 計測2>実際に電流検知用の電圧を取り出す所の電圧を計測する(増幅するなら増幅後) (計測箇所のテスターのマイナス棒は電源グランドのArduino用分岐点かArduinoのグランド) 電圧を電流で割ると1Aあたりの電圧が計算できるのでそれを基準にする この回路なら発熱コイル直前の電圧・直後の電圧・電流の計算値を使い、コイルの抵抗値を実用的な数値で求められる(と思う) 増幅回路について シャント抵抗の増幅回路について(増幅回路が必要な場合) ・ハイサイドにDCDCやFETを使った場合、コイル付近のローサイド側の電圧を増幅回路を使い増幅後計測する ・ローサイドにFET(FETをグランドに接地)を使いスイッチングする場合、シャント抵抗の前後の電位差を差動増幅回路で増幅して計測する (ただし、電源>発熱コイル>FET>シャント抵抗>グランドの場合は増幅回路で計測) プルアップされたGPIOでセンサーのHIGH信号を読み取りたい場合 センサーをNPNトランジスタのBに繋ぎ、CをGPIOにEをGNDに接続して LOWを読み取れば宜しいのでしょうか
>>673 センサーの出力部の仕様によって違うけど、製品名と型式は? >>674 おそらくSB612Aと言われるタイプの焦電センサーとRCWL0516のドップラーレーダーで 反応見ながらどちらかと思ってます >>673 その方式でレベル変換回路として成立しますが、ノイズに弱い回路になると思います 一見正常に動作して見えるので、時々でる誤動作に悩まされる可能性が高いです 一般的にはセンサーとArduinoに距離が空く事が考えられますが ◆トランジスタがArduinoに近い場合 ・センサーの配線からノイズを広い、トランジスタで増幅される ◆トランジスタがセンサーに近い場合 ・Arduinoのプルアップ抵抗が大きめの抵抗値の為、やはりノイズに弱い ◆対策(一部、もしくは複数の対策をする) ・トランジスタのベース入力に大きめの抵抗を入れる ・トランジスタのベースをプルダウンする ・トランジスタのベースに抵抗とコンデンサを入れる(反応速度に合わせて適度なもの)(RCフィルタ) ・トランジスタのコレクターにArduino内蔵プルアップより低い抵抗値の抵抗でプルアップする ・トランジスタの増幅率hFEの低いものを選ぶ ・Arduinoのプログラムでセンサーの信号を拾う条件を厳しくする(ソフトウェアフィルタ) また、SB612Aはオープンコレクタ出力なので、上記の接続方法では機能しません 適当な抵抗でプルアップして使うことが前提になります ここはド素人がこんなの作りたいんだけどっていうものを相談しても良いスレですか…?
ありがとうございます まだ内容がとっちらかっているので 後程纏めて相談させていただきます
まずはバッテリー電圧低下の警告からやると良いと思う
音声関連はDFPlayer Miniでクリアできるかなぁ
>>685 じゃあ基板から作る覚悟なんだね すごいな、てっきりまったくの素人かと思っていたら完全なる玄人じゃんw 頑張って! >>686 いや全くのド素人で知識ゼロ 基盤は作らず導線で元のスイッチと連動させるつもり 見た目は悪いけど原理としては基盤直付と同じ動作になる…はず もしできるのであれば作りたいけどね… あもう必要になりそうな部品は調べてある程度持ってる状態なのね 距離計測のセンサーは何か良いのあった?
>>688 そんな感じです 距離センサーはまだ見つかってません ゴルフで使用する距離計をイメージしているのですが 秋月電子で調べても測定距離が2m程度しか無いので実用性が無いです >>687 回答者は意地悪な人が多いなぁ 俺の電動ガン知識がニッカド〜ニッケル水素の時代に少し触れた程度の知識なので時代に合ってないかも・・ 電動ガンのFCUを作るうえで知ってる範囲での注意点を おそらく今でも電動ガンの電池はニッケル水素がメーカー標準だと思う 3セルのリチウムを直接電気流したら遅かれ早かれギアが欠けると思うので電流の制御が必要になると思う 制御にFETを使う事が多いと思うが、ネットの情報で間違いが多い 以下よくある間違い ・FETを使う場合、フライホイールダイオード(フリーホイールダイオード)無だと逆起電力でFETの耐電圧を超える また、サージ電圧が発生するのでマイコンなどを破損するリスクがある >対策として、上記のようにフライホイールダイオード等を使うかスナバ回路を使う (もともとスイッチ保護のためフライホイールダイオードついてるかも) ・FETでモーターを制御する場合、PWMを使うと思うがArduino標準のPWMではスイッチング速度が遅く、滑らかな制御が出来ていない >対策としてArduinoのレジスタを直接制御してPWMの周波数等を変更する ・大容量FETを高速なPWMで制御した場合、FETのゲートを駆動する上でマイコンからゲートを駆動する為の出力が足りない(最大電流値) たとえ4V駆動対応のFETでも瞬間的には十分な電流が流せないとだめ >対策としてFET駆動回路を組む その他の回答は後回しとして、完成させるためには作業するしかない ・適当な作業スペースを確保する(作業机1台専有する気持ちで) ・改造する電動ガンもしくは同等の制御の物をばらす ・作業台に分解した部品のうちギアボックス(またはモーター)とトリガー部分を適当に配置する ・Arduinoとそれ以外に必要な部品を配置する ・機能や目的ごとの回路を作る ・回路が完成したら組み込む電動ガンの組み込める隙間を探す ・隙間に合わせて回路の小型化をする まずは手始めにArduinoからモーターを回したり止めたり出来るところで進めると良いよ 用意した部品の回路や写真を上げれば誰かが色々アドバイス(突っ込み)をしてくれるから 質問した内容の物を全て実現するにはそれなりに地道な努力が必要だと思うので、根気よくやるしかないよ 今の電動ガンはリフェかリポです ニッスイなんて使いません
>>685 電池の電圧監視についてですが、違います もっと簡単にarduinoで電池の電圧検出すればよいと思う まずはarduinoの適当な入門書を読むことをおすすめします >>691 オレもそう思ったのだが、メーカー標準となると確かにニッ水だった数年前 今は純正もリポ? >>690 時間作って作業環境作ってみます ありがとうございます >>693 何かおすすめというかわかり易い参考書を知っていたら教えていただければ幸いです 何が必要なのか全くわかっていないので この本にはこれが載ってるとかわかれば探せると思うので ちなみに電動ガンの主流バッテリーはニッケル水素です AA-12とかは特にリポ使うと不調になったりしますし メーカー推奨はあくまでもニッカド・ニッケル水素バッテリーです >>695 手当たり次第に読んだほうが良いと思います。目的を絞って本を探しても電子工作の基礎がないので結局遠回りになりそう。 本屋で立ち読みできるなら自分の知識に近い本を探すとか さすがにこれ以降は自分で動く努力してもバチは当たらないかと 純正品のUnoに付属してる下にひく透明のトレイのネジ穴のサイズはいくつでしょうか?
3ミリのネジだから3.2ミリくらいじゃないの?知らんけど
机の上にちょうどあった M3のネジ穴が4つ(プラ板のみ貫通) M2.6 のネジ穴が4つ(プラ+基盤を貫通) 基盤の穴のみならM3が通る
>>698 >>699 手元にあったM3のネジだとUNOの基板は通るけど肝心の透明のトレイのネジ穴には入らなかったので… M2.6のネジでいけますか? なぜ自分で測らないんだろう てっきり購入前の確認かと思ってたわw
>>701 M3のネジだと使えなかったから他のネジ購入前の確認です 知ってる人いるかと思って >>703 なぜ穴の径を自分で測らんのかということだが? 穴系決まってからのネジ選択じゃねえのけ? ネジなんか安いんだから2.6と2と両方買っとけばいいじゃん
トランジスタやモータードライバについて教えてください。 5VモータをArduino Pro Mini(5V)で制御しようとしています。 http://startelc.com/elc/elc_14moterContl.html を参考に2SD2012で回路を組んだのですが、ONにしてもモーターはぴくぴく言うだけで回りません 電源は単三4本で、電池と直結とモーターは元気に回ります。 また、少し小さいモータはちゃんと回りましたので回路は問題なさそうです。 2SD2012ではパワー不足なんだとおもいますが、 他のIC(できればピン互換で)でおすすめはありませんか? >>708 ベース電流が足りないんじゃない? ベース電流設定用の抵抗Rを、現状の半分や1/4にしてみたら? >>708 >>709 が書いている通りだけど、それ以前に質問の仕方として、 参考にした回路はともかくとして、 あなたが組んだ回路を提示するべき。 それと大きいモーター、小さいモーターではなくて、もっと具体的にするか、 せめて写真を出したらどうかと思う。 ベース抵抗が問題になっているとしたら、 より少ないベース電流で大きいコレクタ電流を流せるダーリントントランジスタ、 あるいは、(ベースに相当する)ゲートに電流が流れないFETに置き換える手もある。 ↓ダーリントントランジスタ http://akizukidenshi.com/catalog/g/gI-06369/ その2SD2012でもいいし、手元に他のトランジスターがあればそれをダーリントンの初段にして試してみればいい。
ピン互換の縛りがなくて、自分でトランジスタを追加できるなら、 ダーリントントランジスタの構成そのままにするのではなくて、 追加トランジスタのコレクタはVCCに接続する方がいいよね。 >>712 初段のトランジスタのコレクタにも抵抗を入れた方がいいと思う 小さいネジの場合問題になる事少ないのかも知れんが、径だけじゃなくピッチの罠もあるよね あと海外製だとISOのミリネジじゃない可能性も
Arduinoに既に書き込まれているスケッチを 空のArduinoにコピーすることはできますか? ArduinoからArduinoにコピーしたいです 元のスケッチはありません
読み込み avrdude -c arduino -P com20 -p atmega328p -Uflash:r:C:\test.hex:i 書き込み avrdude -c arduino -P com20 -p atmega328p -Uflash:w:C:\test.hex:i
質問。 black pill 買って、ブートローダー書き込んだ。 mac arduino ide では無事スケッチ書き込み成功。 同じモノをwindowsのarduino ide で書けない。文字化けのようなメッセージ。 ドライバーとかは導入出来てる。 誰か助けてください! com20 [使用するポート番号] test.hex [ファイル名.hex]
橙文字はシステムメッセージでポーレートは関係無いんだっけ?
すまん、そもそもArduino IDEのシリアルモニタは別窓だっけ
おそらくFontの設定のどこかがおかしくなってる ArduinoIDE側はFile-環境設定-以下のファイルを直接編集すれば…-editor.font= のあたり ここに物理フォント名ではなく論理フォント名が書かれている場合はWindows側のどっかで論理フォントから物理フォント名に変換しているところかな
Javaは時々おバカさんになるからたぶんJavaなんだろうな
でも書き込み完了となってるので、avrdude がエラーを返さなかったんだろうな。 書き込みの詳細メッセージを表示してみたら?
>>717 です。 windows ストア版のideに不具合がある、という記事を見つけました。なので一旦アンインストール。 本家からインストーラーをダウンロードして使ったら、無事書き込み出来ました。 皆さんお騒がせしました。 web上にあるatmegaのヒューズリセッタのスケッチが動作しなかったけど無事に全シリーズ修整した
こんにちは arduinoでSpotify(音楽ストリーミングサービス)の曲をBluetoothイヤホンから流すっていうのをしたいのですが、可能ですか?走る時に使いたいのでできるだけ小型にできるといいです
>>729 スマホでよくね? 走る時ってどの回線使うの? >>731 スマホだとケース込みで200g超えててかなり重たいです volumioのSpotifyで本家のようにダウンロードできてオフラインでも流せたらなぁって思ってます じゃ DF Player で良くね? Soitify 関係なくね?
>>734 Spotifyでよく聞いてる曲たちをもってないんですよねー… 買うにしても莫大な金額になりそうなのであんまり買いたくないです… え?金ないのに、ダウンロードしたいとか? Arduinoで音楽聴きたいのか、違法ダウンロードしたいのか? スマホが重いなら、Arduino+バッテリーの時点で無理じゃね? スマホより軽いバッテリーなんて限られてくるけど。。。
100均のモバイルバッテリー300円のが64g、500円のが100g ドローン用リチウムポリマーが37g 走ってる1時間くらいイヤホンで聞きたいってだけなら小容量でいいわけだし そこまで難しくはなさそう
そもそもSpotifyをダウンロードするプログラムってどう作るの?
ハードに疎いだけでソフトには精通してるんだよ きっと ESP32で出来るよ
皆さんの開発環境ってやっぱりvscodeですかね?
ESP系はソースもデカいからvscodeが多そうなイメージ おいらはちょこっとプログラムするだけだからお手軽ArduinoIDE
arduino ideはメモ帳で書いてるのと殆ど変わらないから、用意されたサンプルを コンパイルして満足するだけじゃなく自分で書くなら、短いのでもvscode入れた方が楽だよ
arduino ide pro、え?これでproを名乗るの?ってレベル。もう少しリッチになってくれ
独自IDEはもう最低限でいいから、MSとちゃんと話してVSCodeのプラグインを充実してほしいわ
現状のVSCodeプラグインだとサンプルスケッチへのアクセスが分かりづらいのと、ブートローダの書き込みが出来ない事やプロジェクトをわざわざ作らないと行けないのがのが不便かな
>>709 >>710 >>711 遅くなりました。 結果としては、ベース電流の不足だったみたいです。 arduinoベースの2k抵抗を小さくしていくとだんだん回るようになるものの、直結時と同じように安定して力強く回るのは結局0Ω(抵抗無し)の時だけでした。 (最小200Ωまで確認) ギリギリなんですかね? ベースバイアス足すとか ホントはオシロとかで見ればいいんだろうけど
>>751 arduinoとモーターは同じ電源から動かしてると思うけど モーターの消費電力が大きく電源電圧が降下してると思う 電源電圧が降下した分ベース電流も落ちてるからその影響も大きいと思う 状態を把握するために電池直結とトランジスタを使った時の各所の電圧や電流を測定した方が良いよ 例えば、電源が3vまで落ちたらベース10mAも流れてないと思う その場合コレクタには1Aも流れないはず >>751 リンクのサイト色々と配慮がたりてない トランジスタもモーター駆動に向いてない 秋月で2SD2012と同じ30円の2SD1326とかどうよ? ダーリントンはコレクタ飽和電圧が高いから電源電圧が 低い場合はどうかな。
インバーテッドダーリントンって絵の構成だったっけ。 これだと、入力電圧は低くできるものの、出力の飽和電圧の点で有利になったっけ? でも、今はON/OFFなら「まずはFETを選んでみる」で良いような気がする。 >>758 構成は合ってる。 hFEが2つの積になるから,ベース電流を少なくしても動かせる。 Vbeは1個の場合と同じでいい。ただのダーリントンはVbeが高くなってしまう。 その文脈だと,FETじゃなくてMOSFETかな。 どちらにしても,電圧制御なので,電流は不要だけど, スイッチ用途の場合,種類によってON/OFFさせる電圧が違うから注意ね。 >>759 出力飽和電圧について指摘している>>755 の次に>>756 がコメントしているから、 >>756 は「普通のダーリントンと違ってインバーテッドダーリントンなら、出力飽和電圧の点で有利になる」と 考えているのでは?と思ったよ。 実際の彼の思いはどうなんだろう。>>755 とは特に関係がなかったのかな? リセットボタンを作るためにRSTとGNDの間にタクトスイッチを付けたいんだけどプルアップ抵抗もどこかに必要ですか?
>>762 そうなんですか ありがとうございました >>754 >>753 電池をやめて2.6Aのアダプタにしたらモーターはより強く回ったので電圧降下はしてるでしょうね。 実家帰っちゃったのでオシロが無いんですよね。 あと2個作る予定があるので、SD1326も試してみます。 あちゃんでいいのって今売られてるやつもピン幅はズレてるまま?
>>765 どうやら売り切ったらしい、通販のページには出てない ただし、店頭限定で売ってる可能性はあるので注意 ・店頭で買うときの見分け方 MicroUSBやDC-Jackの付いたタイプは OK LEDが1つのタイプ(基板のシルクがV2)は OK LEDが2個で基板のシルクが「0603V2」のタイプは OK LEDが2個で基板のシルクが「0603」のタイプはおそらく × 他にはこんな特徴がある(通販ページにある画像と比較するとわかりやすい) 他のものに比べてかなり安ければあえて買うのもアリ >>766 めっちゃサンクス その画像と通販ページの画像見比べると確かに違うね。 シリアルの印字も無くなってるね。これはちょっと戸惑うかも。 今度0603V2買ってみるわ。 現物を手に取って選べるならこっちのほうがわかりやすかったか クロスしてスケール代わりに重ねてみれば… 「ESP8266 ボードマネージャ 追加」とかでググる
ArduinoでLoop一回分とか作った関数の実行速度を測ってみたいと思ってるんですけど どんな方法をとればよいのでしょうか? どういった機材があれば測れますか?
測りたい部分の前後にピンから信号を出してオシロスコープで信号変化の間隔を測って信号出力処理のオーバーヘッドを引く。
>>771 実行速度測るだけなら micros()を使って実行前と実行後の時間差を引き算すればわかるよ 単位は4μ秒毎でわかる 機材は要らないよ もう少し細かい単位で時間見たいなら同じ処理を 100回とか1000回繰り返して時間を見ればいいと思うよ >>768 こんな致命的な問題があるものをそのまま売ってたの? 中華業者より酷いな このFeather Wing使えてる人います? nRF52840にも使えるとあるけど、Adafruit Feather nRF52840 Expressに挿したら動かないです PCのシリアルポートでも認識しなくなります 抜いたら動くんですが… バッテリー繋いだり5V/Batのスイッチ切り替えたりしても意味なかったです FeatherのENピンがこのWingだとGNDになってるのってもしかして関係してますか? https://www.adafruit.com/product/4357 ピンレイアウトはこんな感じです こっちはちゃんと動いてました フォーラムにこの問題載ってました Featherの3.3VピンとGroveポートの3.3Vピンを繋いだら改善するみたいな事が書いてあったから試したけどダメだった。それどころか、ダブルクリックしてないのにブートローダーモードに切り替わってしまって大変 っていうか、Adaのサポートヤバイ このトピックはこのWingが動かないって内容のトピで、 で、ある人が「3.3Vを繋いだら動いたって」書き込みした直後にadaのサポートが「回避策共有してくれてありがとう.」って書き込み、 その2ヶ月後に別の人が「こんな欠陥あるのになぜ売り続けるんだ?知ってたら32u4とこのWing2セットづつ買わなかった」 サポート「は?32u4で動くけど」 だって…
>>770 おかげさまで、できました。ありがとうございました!! >>773 おおむね知りたい数値を知ることができました!ありがとうございます。 arduinoが自分で測ればよかったんですね。 気がつかなかった・・・ >>772 この方法の場合、そのオーバーヘッドがどのくらいかかったかというのはどうやって測ればよいのでしょうか? >>785 772じゃないけど何も処理をしないでピンから2回信号を出してオシロで測ればオーバーヘッドがわかるかも >>775 当然普通にはブレッドボードには刺さらないからこんな画像も載ってたんだよ >>782 もう現物と回路図突き合わせて、この2つが一致してるかから調べてみたら? 俺だったら、回路図が正しいものとしてその回路図で意図した動作をするのかをまず確認して 回路図に不備があるようなら回路図を修正して、 次は回路図と現物を突き合わせて、現物をあるべき形に持っていくな こういうものでサポートガーとかは正論ちゃー正論だけど、めんどくさいしバカっぽいから自分で手を入れて これできましたってアップするだろうね 質問です。Leonardo 互換機を使っています。 Arduino IDEで,ピン指定 A0 は確かに基板のA0にアクセスできるのですが,A0=18のようなのです。この18って何? 32u4 のピン番号じゃないし,UNOの番号かな,と思ったんだけど,それとも違う… 18って何だろう… 同様に,ピン指定 0 で D0=PD2=20ピンにアクセスできるのも不思議
>>785 >この方法の場合、そのオーバー >ヘッド(中略)はどうやって >>773 にその答えも書いてある digitalWriteを10000回繰り返したときと20000回繰り返したときの差を取れば純粋にdigitalWriteのコストがわかる。同じ値の繰り返しは最適化の懸念が残るので1/0交互にするかな。 ところで digitalWriteって最適化懸念無いんでしたっけ? >>773 自分で書いて間違いを2回訂正するの恥ずかしいけど 100回とか1000回繰り返したときにコンパイラの最適化を回避しないと 100回分のつもりで1回の時間しか測れないので、この手段は避けてほしい 変数の宣言をvolatileとかでやれば最適化を回避できるかも あと、やってないともうけど 関数やループの前後にSerial.println(micros());とかで時間を比較すると シリアル出力処理の余計な時間が足されるので開始時間を変数に収納して 出力時に処理してね 例> static uint32_t StartTimeVal; // (unsigned long StartTimeVal) StartTimeVal = micros(); //計測開始時刻 <処理する関数やら内容やら> Serial.print (micros() - StartTimeVal); //計測終了&出力 Serial.println (" micro second"); delay(適度な値);//処理が短い場合、必要に応じて追加する (試してないけど、処理内容を空欄で実行すると0か8μ秒の結果が出ると思う) 後で部屋の大掃除終わったら実機で試してみるよ >>791 レスありがとうございます。 頂いた例を参考に下記のようなコードを実行してみました。 最初頂いたコードのまま実行したら4μと8μの間で揺れていたので Serial.print (micros() - StartTimeVal); の部分の計算時間も省けるように別途算出し後から計算する形にして下記のようなコードを実行してみました。 static uint32_t StartTimeVal; // (unsigned long StartTimeVal) static uint32_t GoalTimeVal; // (unsigned long StartTimeVal) void setup() { Serial.begin(9600) ; } void loop() { int CalcValue;//計算結果格納 StartTimeVal = micros(); //計測開始時刻 //GetValue();// <処理する関数やら内容やら> GoalTimeVal = micros();//計測終了時刻 CalcValue = GoalTimeVal - StartTimeVal;//計測時間算出 Serial.print (CalcValue); //出力 Serial.println (" micro second"); } //計測したい関数(仮) void GetValue(){ int dummyA; dummyA = analogRead(A0); } GetValueを外した時には4μ 仮関数を実行した時は116μという数値になりました。 ということはGetValueの実行時間は4μ毎ということふまえて・・・ 116(+0/-3)- 4(+0/-3)=112(-6)μという感じでしょうか。 以上のような感じで当方が欲しいと思っていた情報を得ることができました。 ありがとうございました。 Arduinoの種類(こちらはUNOを使用)によって違う可能性もあるけど 検証した結果 時間を出力するコードは平均3.584μ秒で実行できてました(外部割込みの影響を受けて誤差が出るみたい) 変数をstaticではなくauto(省略した場合auto)だと平均3.080μ秒でした 挟んで時間求めるだけなら、staticで宣言する必要なかったですね ちょうどいい値なので実行時間から4μ秒を引く感じでいいと思います 多くのコンパイラでは Serial.print (micros() - StartTimeVal);でも GoalTimeVal = micros()でも 同じ結果になるはずだったのですが・・・ (もしくは変数に収める方が時間が増える可能性も・・・)
Nano+OLED で作り始めたら容量が足らないので、別のマイコンに変更したいのですが、 STM32、ESP32、が順当な候補でしょうか? 最終的に、そのまま組み込みたいので、Mega等のボードは無しでお願いします。
>>794 データの容量だけの問題なら余ってるSDカードとかを直接ハンダ付けするのも良いかもしれません >>797 データというより、SRAM(動作中のメモリ)が、2k だと足らなくて。。。 プログラムも、まだ6割程度完成で、30kギリギリ(Optibootで1.5k稼いでも) U8g2 だとページングでギリギリ、フルバッファだと無理。 Adafruit のライブラリは使いやすいのですが、動作メモリを大量に使うっぽい。 ESP32は、足の数でミニブレッドに刺せないし、STM32だと、いずれ容量が心配? となり、OLEDを使う上で、定番的な奴があればと思った次第です。 >>799 OLEDはどれ使ってる? NanoにAdafruitのライブラリを使って書き込んでもエラーは出ないのに全く表示されん ATSAMD21のボードに書き込んだら普通に表示された >>799 そう言うことなら サンハヤトのSAD-101は幅広でESP32いけるよ。 オス・メスのピンヘッダとユニバーサル基板でこういう形の変換ボードを自作するとか ESP32はこうだよ >>800 スピード不要と I2C を買って後悔してる。 https:// あまぞん/gp/product/B017M15KX6/ とりあえず Nano で Adafruit_SSD1306、U8g2 のサンプルは全て動くけど、 U8g2 フルバッファは、ギリギリなのでデフォルトのブートローダーだと 動かないかも? 今は Ali で SPI をカートに入れてて、ESP32 を物色中。 グラフィック使うならメモリ2Kbyteやそこらの機種は厳しいですね。 情報表示だけならなんとかなりますが。 IOが少なくて良いならWemos D1 miniなどで、アンテナをもぎ取って使うのもありかもしれません。
文字を縦横16/8ドット固定長で表示する分にはバッファは要らんと思うね
>>803 俺もESP32DevKitそうやって挿して使ってるわw 俺は上向きのメスのピンヘッダ付けてジャンプワイヤーで飛ばす
atmega328のEEPROMに関する質問です。 Q1.EEPROMは書き換え回数10万回となっていますが、これはEEPROM全体でしょうか? それとも個別アドレス毎でしょうか? Q2.EEPROMに5分毎に64byteの書き込みを行うと、 1時間に12回x24時間x365日=105120回と1年で10万回に到達します。 EEPROM全体1024byteを16分割し、順次使用すれば16年に延命できますか? 似たような内容ですが、よろしくお願いします。
>>816 寿命とは違うが、BODを有効にしておかないと、power offで0番地のデータが壊れると言うのがあったね。 頻繁に電源を落とす用途でハマった事があります。 俺以外はみんな知ってる事かな? 皆さんGUI版のavrdudessを使ってますか?
そんなレスする前に答えてあげろよ こんな質問マルチしても問題ないだろ
3.3VのProMiniかESP32で、別モジュールの5VでプルアップされてるピンをGNDに落としたいのですが、 3.3Vの信号をNPNトランジスタのベースに入れて5VのピンをLOWにする事は可能なのでしょうか?
可能だけど、もうちょっとトランジスタのこと理解してからのほうがいい
>>825 図のようなことを意図しているならOK。 >3.3Vの信号をNPNトランジスタのベースに入れて どんなふうにあなたが接続するのかわからんので、>>826 さんが心配されてます。 Rpu次第ですが、通常はR1は10kぐらい、R2は10k〜47kが、「パスコンなら0.1uF」的な 選択。(異論はあります) 反転させたくないときは、右のような方法もあります。電流は増えないですけど。 >>828 有り難う御座います 右図見るにベースに3.3Vだとエミッタも3.3Vになるんですね? この時プルアップされたピンの電圧はどうなってるんでしょうか >>831 BE間電位差ゼロ→CE間電流ゼロ→プルアップ抵抗電流ゼロ→入力端子電圧=5V電源電圧→入力端子電圧ハイ かな? >>830 ESP-WROOM-02やESP32-WROOM-32は外部RAMが付いてない 外部RAMが付いてるのはESP32-WROVER-Bが載ってるやつ >>829 たかだか8MのRAM載ってるだけで3倍くらいするんじゃあ… しかもSPI接続って意味なくね? >>830 いいいね、1つずつポチってみたよ >>835 安いと思ったら単体じゃん、論外だわ、何で持ち出した? >>836 パチもんじゃなくてEspressifの正規品だからね 日本国内の販売なのでそのマージンも載ってる >>836 Arduinoからは話がそれるがインターフェースのESP32の特集記事で MicroPythonのPSRAM版があってヒープが3.6MBになるらしい PSRAMがないやつだとヒープが140KBくらいになるらしい 32bitマイコンを使ったArduinoもあるがちょっと標準の機種から外れるだけで 完全な互換性は無いからライブラリを自分で読んで自分のに合うように変更する必要があったりする そうなるとただのC++だからな 初心者には難しすぎる
Arduino UNOはCPUのクロック周波数たったの16MHz Raspberry Pi Zero WHのクロック周波数は1GHz
全く用途が違うその2つをクロックだけ比べて突然どうした
>>844 エラーの詳細がないと原因を特定するのが難しいが #include <GPSXClass.h>これに対してのライブラリをインストール済み? GPSX.hをテキストエディタで開いて #include <wiring.h> を #include <wiring_private.h> に書き換える
>>830 これって 32S ですよね。 書き込みエラー対策済みですか? 32D との違いは無いのでしょうか?サイズ的な所とか? とりあえず Nano で限界っぽい所まで作りました。 他にも色々と情報を表示してたのですが、とりあえずプログラムを 分割して一部分だけで動作させてます。 https://streamable.com/e90dw >>850 なのはグラフィック画面使おうとするとメモリ少ないよね。 aqm0806とかのテキスト画面じゃだめなかんじ? そういうのは8266にしてる。 グラフィック画面が必要なほど複雑な用途は大抵wi-fi必要な用途だし。 8266ならSSD1306系のディスプレイ2つ使えるよ! ESP32でもI2Cで128x64全体転送するのに22ms位掛かるからメモリはあっても あまり気楽には使えないぽ
arduinoでデータをとってPCにそのまま送ってるんですけど PCで動画とか見たりすると電源にノイズが入るみたいで負荷がある間のデータがおかしいんです PCからくるUSBの5Vをきれいにする方法ないでしょうか?
それならPCじゃなくて100vコンセントから電源取ったほうがいいよ
>>853 Arduinoがどの種類かわからないのだが UNOだとしたらUSB電源の問題じゃないと思う もう少し詳細な情報がないと何とも言えない ・Arduinoの種類 ・通信手段、速度 >>853 動画見る>CPUやビデオカードに負荷>ATX電源の容量不足>5Vが不安定 PCの電源見直すか、ACアダプタ買ってArduinoは別電源にするか 私ならACアダプタ >>853 シリアルバッファの扱いが甘いんじゃない? データ受ける方は何でどういう設定? シリアルの速度落としても変わらない? バイクのスピードメーターを作りたいんだけど、画面の更新スピードがおそいんだ。 tft. oled. spi色々試したけど、文字が大きいと綺麗にカウントされていない。 何か良い表示モジュールは無いですかね?
ターミナルブロックって結構便利ね ブレッドボードに直挿しだとグラグラしたり抜けたりすることがあったけどこれなら安定してよい
>>858 いろいろ混じってる・・・ TFT 液晶の駆動方式 {TFT・STN等} OLED 表示方式の種類{液晶・OLED(有機EL) SPI 液晶パネルとの通信方式{SPI・2IC・パラレル} 表示モジュールではなく、表示モジュールに送信してるマイコンの速度が足りない事もあり得るのでは? SPIでも速度を上げる余地はあるのでは? 画面の書き換え方法の工夫で改善できるのでは? あと、似たような事を考えたことがあるが 夜なら良いけど、昼使うには実用的な明るさ出来ないよ >>858 TM1306とかMAX7219使って7SEG系は? そう言えば屋外で白黒SSD1306を見たら印刷物の様な不思議な感覚だった
基盤って金属の上におくとショートして壊れたりする?
>>868 浮かせてないと駄目? 木とかプラスチックとかゴムとかは? 表示が遅いんじゃなくて、速度測定が遅いんだと思う。 どういう風に測定してるんだ? GPSなら1秒以上はラグあるぞ
> バイクのスピードメーター > 文字が大きいと デジタル表示なら60fpsくらいだともう下桁見えないから 20fps程度に間引く処理が必要なんだけど アナログメーター風とか凝ったデザインじゃないなら 7セグLEDでいいんじゃね大きなのもあるし表示も速い バーになったの使えばバー表示とかpeak holdもできるよ
>>847 さん ありがとうございます!GPSX.zipをライブラリに読み込むことができました。 その後 >>846 さんの GPSX.hをテキストエディタで開いて #include <wiring.h> を #include <wiring_private.h> に書き換える を行い、コンパイルをしたら、問題なくできました。 Arduino UNOにも不具合なく書き込みができ、完成しました。 これで問題点がなくなりました。 本当にありがとうございます!!! すみません間違えました >>848 さんでした 申し訳ありません 無駄に改行が多くても読み難いだけなので 必要がなければ改行しなくていいよ まぁ表示する環境は人それぞれではあるけれど…
まあ読まずにスルーだな 今回は>>876 が触れたから乗ったけど アーデュイーノじゃなくてFPGAが乗っかった基板だけど、 電源が入ってる状態でネジを落として壊した事がある。それがトラウマでデバッグの時は金属ネジを使わなくなった。 仕事で作る製品はすべて金属ネジだけど、そもそもArduinoの板なんかはネジ穴にレジストが掛かっているから ケースへの導通とか考えなくていいからね
電源LEDが緑色の中華Pro Microが欲しいんですがAmazonだとどの業者が扱ってる分かる人いたら教えてほしいです HiLetgo、Rasbee、EasyWorldMallは赤色でした
USB電源ってPCから出てるやつじゃなくて 携帯電話を充電するようなUSB電源でもいいの?
アンペアも何でもいいの? 急速充電とか高いみたいだけど
そんな大電流流れないから関係ない 安いので充分 別に急速充電のでもいい それ使ったからって大電流ながれるわけではない
何年か前にドコモでもらったモバイルチャージャー、 arduino用の電源で活用してるわ。 ただ、電流少ないと、途中で止めちゃうことあるんだよね。要注意。 乾電池6本にDCDC付きモジュールつなげたモノも使ってる。
ESP32なんかはWiFi使うと瞬間的に1A超えたりするから、逆にPCのポートだと危なかったりするね
RaspberryPI用のACアダプタが店頭販売で安売りされてたことがある。 3Aぐらいまで対応してたはず。。。 安く済ませるなら100均で単三x2で駆動できるUSBチャージャーがある。 ATMegaなら十分使えるし、小さくて便利良いよ! 箱に組み込む時のテストとか、手元で扱えるよ。
for (byte i=0; i<100; i++) asm("nop"); これは何クロックかかりますか?
圧電ブザーだけどPro Miniだとそれなりの音量で鳴るけどATtiny13だととても小さな音しか出ないんですがマイコンによって何が違うんでしょうか? 鳴り方もPro Miniだとピッピッって感じだけどATtiny13だとココッココッっていう機械音みたいな感じです
>>894 自己解決 さすところ間違えてました あとブザーの音量を大きくするにはもっと大きなブザーにしなきゃいけないんでしょうか? >>895 大きいサイズに変更、電圧を上げる、が正解なんでしょうけど、 たぶん聞きたいのは、 貼り付けるケースなどを振動しやすいものにする。でしょうか? >>892 gccの吐き出すニーモニックを見れば分かる。 ちなみにオプティマイズによって単純ループを展開するか、 そのままループを行うか?によっても変わる。 スピードを求めるなら前者、サイズを小さくするなら後者。 で、それを知ってどうするの? 興味本位なんだろうけど、知る必要がある人は、計測の仕方も知ってる。 >>895 現状が裸の圧電素子みたいなもの(A)だったら、共鳴板を兼ねたケースに 入れるだけでもかなり変わりますが、すでに(B 発振回路無)のようなものをお使いですかね。 駆動電圧を上げると音は大きくなります。 (C)のようにすると実質2倍ですが、コイルを使って昇圧する方法もあります。 100均 防犯ブザー 回路 でぐぐってみてください。 100均の防犯ブザーでもすげえ大きい音がします。試したことがなかったら ぜひ一度買って鳴らしてみてください。 ってか鳴動部分は、防犯ブザーをそのまま使うのもありかも。 >>899 でかすぎ、重そう にしか見えなくなった、謝罪と賠(ry >>900 その味方もあるけれどもう一つの味方もあるよ Aがドーナツみたいな生き物に足がついてる生き物で 右が目玉焼きみたいな生き物が両手で目玉焼きみたいなものを持っている様に見える >>902 実は最初そんな感じに見えてたんだけど、今はもう棒人間がでかいのを抱えてるようにしか見えなくなってるんだ、自分の脳はw 違うふうに見えるのは面白いね mbedはまた別だなぁ でも他にスレが立ってなかったらここでも良いんじゃね?
>>905 STM32H747XI dual CortexR-M7+M4 32bit low power ARM MCU って。。。ATmel 辞めたんか? >>906 Arduino が ARM採用 したんだから、一緒じゃないといけなくなった?w >>905 のボードも >Arduino sketches on top of the Arm® Mbed OS >Native Mbed applications と書いてあるし。 ARMを高速な328Pとして使うだけならともかく、話題としては混じる部分も出てくるでしょうね。 Arduino nanoにワイヤードで接続されているセンサーを 分離してワイヤレスにする事は可能でしょうか? 調べ方が悪いのかArduinoをワイヤレスでPCから操作するとかそんなのしか出ないの 具体的には 通過センサーとその結果とかを表示するモニターをArduinoから切り離したい
>>911 無線化だけならxbee、twe-lite、esp32とか、自前で赤外線通信とかでできる。目的がわからんから手間やコストに見合うかわからんが。 センサーだけをワイヤレスにすることは困難だから センサーから値を読んでデータにして無線で飛ばす役のArduinoと その無線で飛んできたデータを受け取って液晶に表示する役のArduinoに分ける感じになる 無線部分は電波でも赤外線でも色んなモジュールがあるしメリットデメリット様々 こう言うときのプロトコル(データのやりとりの決まり事)は自分で考える事になる
>>911 できるできないで言えば、できる だいたいセンサーって広範囲なんだから質問が雑すぎw スイッチ的にON/OFFを知るだけのセンサー=開閉センサー、水位センサー、動態検知センサーなど ONになったら赤外線LEDを光らせてArduino側でそれを受光する 受光素子を長い筒の底に入れるなどの工夫が必要になると思う 更にそれに波長を乗せる赤外線リピーター的なものを作れば 低速なプロトコル通信も可能だろう センサーのデータを取得して赤外線を送信するマイコン(Arduino)が必要かと
>>914 はそのデータが1bitなら送信はマイコンいらんねって話だと思う まあ1bitに限らなくても NE555でパルス送って、CDSやサーミスタなんかでディーティー比変えれば ラジコンのプロポとサーボの関係みたく マイコンなしでアナログ値が送れるよ
なんか難しそうですね ド素人にはもっと勉強が必要かなぁ… 無線に関する参考書かPあれば教えてくださいお願いします 見ながらじゃないと何もわからんのです…
ラズパイzero2台用意して送信側と受信側に分けて実装するほうが手っ取り早くない? ラズパイならwifiもBluetoothもできるし
どっちにしろ知識が絶望的に乏しいんだ… 今作ってるやつはオープンソースだから丸コピで あとはワイヤレス化できれば便利に使えると思ってたんだけど Raspberry Piだとゼロから始めるから難しそう
センサーと315Mhzの無線モジュールと50円ATTiny13マイコンでおk
受信モジュールの待機電流が限りなくゼロに近い無線モジュールて無いんかね ESP32で相手からのWiFiを受信しようとすると常にWiFi有功にしてないといけなく もの凄い消費電力になるけど、無線の受信だけならゲルマニウムラジオ的なノリで トランジスタの漏れ電流位の消費電力で受信待機出来そうな
ESP32が異常なだけ とりあえずディープスリープ使っておけ
単純なモジュールでも10mAとか喰わない? 電池駆動は無理かなて感じで
WiFiのデータ受信ってWiFiの電波の送信をともなうし
シリアルデータ通すだけならXBeeが比較的簡単かも
どれくらいの量の通信するのかにもよるけど、受信機を間欠動作させてデータが来ない期間はスタンバイ状態にしておくとか
調べても良くわからなかったので質問したいのですがI2C接続のI/Oエキスパンダを使用してsoftware serialは可能なのでしょうか
UNOでIOが足りなくなったら迷わずmegaの互換を買った方が色々と便利な上に解決するのも早いと思った
>>930 100bpsでも10bpsでもシリアルはシリアルだという観点からすれば可能 シリアルなら115200は当然出るんですよね?という視点からすると不可能 >>932 速度という点では難しいのですねわかりました ありがとうございました 車のキレーレス・スマートキーも、ずっと受信待機してるわけじゃん? どっかのサイトで見たけど、あの仕組みはすごく弱い電波で低消費電力で受信待機してて、 信号を受信したらとりあえず起きて、出力を上げて次に本番の送信データを読み取るって書いてあった。 うる覚えなんだけど、これホント?
標準プロトコルがあるわけじゃないからホントの場合もあればウソの場合もある
ArduinoでPCシャットダウンする方法ってある?
書き忘れたけどOSはWindows10でリレーとかで100vを強制的にOFFとかは無しね
PCとArduinoをシリアル接続してウィンドウズ側にシリアル通信を監視して特定のコマンドを受信したらシャットダウンするプログラムを常駐させる
>>938 ・PC側の常駐ソフトでArduinoからのシリアル通信を待つ。 ・Arduinoから特定のコマンドを、その常駐ソフトが受けたら、その常駐ソフトがシャットダウンする。 PCの電源ボタンてワンポチしたときの挙動変えられなかった?スリープかシャットダウンか選べたと思うが そしたら電源ボタンにフォトカプラでOK
あった これシャットダウンにしておいて電源ボタンのとこから分岐線とってフォトカプラで一瞬押せばシャットダウンにできる 常駐ソフト要らず >>936 有ってる部分も違う部分も有ると思う それにキーレスとスマートキーでは動作方式も違うと思う 以下はキーレス及びスマートキーの自作を試みたときに考えた手法 (デジタル通信はアナログ通信と違い受信器も消費電力が大きいのが大変) ◆キーレスの場合での省電力化の方法 送信機の方はボタンを押した時のみ電波を出すので待機電力は無いものとして考えれる >送信時の消費電力を抑えるための方法 ・送信時は1/500秒送信 24/500秒間停止を繰り返しながら1秒程送信する(約1/25の電力で送信できる) >受信機の消費電力を抑えるための方法 ・常時信状態では消費電力が多きので常に受信状態にするのを避ける ・例 1/20秒受信 9/20秒停止を繰り返す(約1/10の消費電力で待機できる) ◆スマートキーでの方法 ・キー側が1/500秒送信 99/500秒停止 1/500秒受信 899/500秒停止を繰り返す(1/500の消費電力) ・車両側が2秒受信 8秒停止を繰り返 す(1/5の消費電力) (↑の条件で10秒以内に信号を補足できる(運転者が車に向かってる状況)) 車両がキーの信号を受信したら、タイミングを合わせて信号を送信する(その後暗号通信等のやり取りを) (参考までに棒nRF24xxx無線モジュールをつかった場合のスマートキーの消費電力は約0.185mWかな) 両方とも気が向いたら作ろうと思い放置( ^ω^)・・・ >>938 digisparkとか使ってコマンド送ればいいんじゃね >>942-943 おおおー素晴らしい。 941だけど、もう何年もデスクトップPCを使ってなかったのでPCの本体に 手を入れる発想がなかった…。 そういう機会があったら使ってみよう。 >>944 ありがとうございます。φ(..)メモメモ なんでデジタルだと受信待機の消費電力高いの? 受信強度に閾値を設定してなんか来たら次の受信から内容解読まで行うのだとダメなの?
デジタルって突き詰めるとアナログ信号をサチらせて使ってるんだよね だから消費電力も高いんだよ
>>948 >受信強度に閾値を設定してなんか来たら次の受信から内容解読まで行うのだとダメなの? 普通のラジオの場合は、放送の電波の周波数は局ごとに違うから同調回路と 簡単なアンプで、ある程度の選局ができます。この場合なら「受信強度に閾値を設定して」が可能。 でも、デジタル通信の場合は同じような周波数にたくさんのデータが流れているのでこの方法では 実用になりません。いっけん混信だらけの電波の中から自分に関係のあるデータを拾うこと自体が 演算で行われています。 >>948 >(デジタル通信はアナログ通信と違い受信器も消費電力が大きいのが大変) >なんでデジタルだと受信待機の消費電力高いの? >受信強度に閾値を設定してなんか来たら次の受信から内容解読まで行うのだとダメなの? ちょっと誤解があったかもしれないので追記を 送信機は電波を出力するので消費電力が多い←これはその通り 無線で送信に対して受信は消費電力が少ないイメージがある (アナログのAM/FMラジオ等は少ない消費電力で受信できるイメージが強い、実際少ない) なので常に受信状態でも消費電力は大きくないイメージがある しかしアナログの受信機と違い色々な行程での消費電力が大きくなってしまう 変調方式によっては強い電波を検知するまで受信を無視することもできるけど、 それだと強い電波しか受信できない現実的にはノイズだらけの中から自分宛の弱い電波を見つけ出す必要があるんだよ そのために色々な処理やら計算やらで受信中の消費電力がそれなりに大きい (私自身あまり詳しくないので今度勉強してみたいと思ってる) もちろん送信機側の消費電力を無視すれば高出力の電波を出し、受信機で受信強度にしきい値を設定することも出来るとは思うが・・・ それか周りで同じ周波数使わないなら出来るかも(非現実的) >>953 違う >(アナログのAM/FMラジオ等は少ない消費電力で受信できるイメージが強い、実際少ない) 受信だけなら、この通り。 通信は、(これに例えるなら)ラジオ側から返信が発生する。 これに電力が必要だから。 >>954 受信状態で待機中の消費電力のことなんだけど・・・・ 周波数を独占できてASK変調で通信するならラジオとあまり変わらいとは思うけど 実際にはそうもいかないからね 使い方にもよるんだが、単なる検波整流ならダイオード1個で済むところを、 デジタルならわざわざ、ADして演算してプラス変位をだして、更にDAしなきゃならない。
何MHz帯のモジュールだったか忘れたけど、以前ぐぐってたらシリアルで受信したデータが 自分の目当ての電波か、Arduino側でチェックサムとか使って確認しないといけない みたいな話見かけたけど、WiFiの様な規格化された混雑帯域の物はまだしも Arduino用のうんMHz無線モジュールとか言う類もそんな色々やってるの?
>>958 XBeeのAPIモードのこと? 透過モードならマイコン側は何もする必要なし DFPlayerで音声再生をしようとしてるのですが、 無再生時でもキーという電子ノイズが聞こえます。 DFPlayerはどれでも音が鳴るのか自身の作成環境が悪いのか、 参考までに皆さんのDFPlayerの動作状況を教えてくれませんか?
3.3vぐらいか。データシートに4.2vがベストって書いてるな。リチウムイオンに丁度良いように作ってるな とにかく、Arduinoを経由せずに電源から直接取るようにしたほうが良い
>>960 内蔵アンプ経由? 他の方が言うように Arduino経由 を辞めても同じ電源から DFPlayer と Arduino を取ると多少のノイズが乗ることがある。 完全分離は、面倒だと思われますので、ボリュームを上げたり 内蔵アンプを使わないでごまかすのが現実的? あと LOUT、ROUT に 100uF程度のコンデンサを入れる。 コンデンサのプラスはLOUT、ROUTに、マイナスはGNDに
>>961 >>963 ご返答ありがとうございます。 ご指摘のようにarduinoからの電源で運用してます。 環境次第ではノイズを抑える事ができるみたいですね。 お二人のアドバイスを参考にやってみたいと思います。 >>964 DFPlayer 側をプラス、外部機器側をマイナス。 ヘッドフォン接続なら以下の通り。 LOUT - (+)コンデンサ(-) - ヘッドフォンL ROUT - (+)コンデンサ(-) - ヘッドフォンR GND - ヘッドフォンGND チップが同じものなので、Amazonのレビューに改造方法が 載ってます。 https://www. あまぞん.co.jp/dp/B0154PN2FU/ https://www. あまぞん.co.jp/dp/B01MQW7EEJ/ ヲタクキッショ A power supply with a higher rating than one amp could damage your Arduino. って書いてあったんだけど、 このスレッドで聞いた時 >>886 , >>887 で アンペアは何でもいいって聞いたんだけど 違うの? ユーザーが回路を間違えてもレギュレータで電流が制限されるから基本的に問題は起きない。
中華arduinoクローンのレギュレータ(ams1117)は良くショートモードで壊れるから、電源容量は大きくない方が良いんだろうか? ただ1Aでもパーツ破壊するには十分だからなあ
ググるとAMS1117をLD1117S50CTRに換装してる人もいるね
>舞子回路 マイコン回路だった… この記事自体はかなりの初心者が対象に見えるし、安全な方に配慮している のだと思う。 UNOだったら拡張コネクタのVIN(電源入力からダイオードを通したもの)を使った 回路を作っていてそこで何かを間違っているとかも含めて。 ・回路が正しく組まれていれば、DCジャックから供給する電源の電流容量が大きくてもかまわない。 ・DCジャックから電源を供給する場合、5V系の電源を使う回路だけなら、それは5Vレギュレータで電流制限がかかる。 ・ただし、5Vレギュレータがタコなものならその限りではない。 ・USBコネクタから、パソコン、充電器やモバイルバッテリで電源を供給する場合は、UNOなら500mAリセッタブルヒューズで保護される。 ・ただし、リセッタブルヒューズは働くまでにタイムラグがあるし、実際には500mAよりずっと大きい電流が流れないと働かない。 習慣として、大きすぎる電源容量は実験には適さないと思う。(安全が確認された回路なら大きくてもいい) 個人的には、組んで最初に電源を投入するときは、電源装置の出力電流を少し絞り気味にしている。 かといって、いまどき、小さすぎるACアダプタなんて、入手が難しい場合もあるだろな。 ・できれば小さい電流容量のものも持っておく。 ・1Aを超えるものだからといって、記事の「ダメージを与えるかもしれない」の「かもしれない」にいきなり該当することはない。 ということでいいのでは。
>>976 USB電源のリセッタブルヒューズって互換機についてないの? Elegooの互換機には付いてる? それに3Aの充電器とかつかったらやばい? >>978 よく Nano のダイオードが焼ける報告があるね。 書いてある文字はちがうけど同じのついてた これなら大丈夫やな
>>979 これ俺の持っているヤツ。古くなってきたから変え換えたいんだけど、 秋月見たらArduino Nano Every((ATMega4809)が売ってるから、これにしようかと,安いし(値段1/3)、メモリも3倍 Arduino Aから別のArduino Bを制御したい(LEDとブザーを鳴らす) Arduino A(ESP32) の2ピンと5ピンをArduino B(Tiny13aまたは85)に繋ぐ LEDを光らせたい時はArduino Aの2ピンをHIGHに、ブザーを鳴らしたい時は5ピンをHIGHにする Arduino B側のアナログ入力の2ピンや3ピンに入力があればLEDやブザーを鳴らす これだと、LEDやブザーの鳴らし方のパターンはワンパターンしか鳴らせないです。 LEDの光らせ方やブザーの鳴らし方のパターンを増やしたい場合は、Arduino Aの出力のピンとArduihno Bの入力のピンを増やせば簡単に出来ますが、それだとパターンの数だけピンが必要になってしまいます。 Arduino A側の出力をPWMのピンを使えば、PWMの間隔を変えることでLEDやブザーのパターンごとに分けられそうな気がするんですが、 こういう事は可能ですか? 参考になるようなスケッチがあれば教えて欲しいです。よろしくお願いします。
そういう時のためにいろんな通信手段があると思うのだが プロトコルを自分で開発しなくてもArduinoには便利なものがたくさん装備されてるよ UARTでもI2CでもSPIでも使ってパラメータをやりとりすればよかろう
>>984 >>985 どうもありがとうございます ソフトウェアSPIを使う事でATtiny13a側は1つのピンだけですみそうです 繋ぎ方はわかったんですが、ESP32側とATtiny13a側はそれぞれどういうスケッチを書いて通信するんでしょうか? Arduino SPI でググればいっぱいサンプルがある
あまりに初心者すぎる質問なのですが、シリアルポートからの入力をwebページに使うのってどうすればいいのですか シリアルモニタに表示される内容をwebページに投げたいんです 使用機器はardiuno,IDEはardiunoIDEです なにとぞ…何卒よろしくお願いします…! 個人的にhttpにRequestを投げる感じになるのかな?って推測してるんですが、キーボード入力をwebページが受け取る感じでもrequestを逐一送る感じなのでしょうか…?
>>989 まず、ESP-WROOM-02もしくは32でWebServerを構築する 次にESP-WROOMのシリアル入力を閲覧できるページを作る ターゲットのArduinoシリアル出力をESP-WROOMシリアル入力を接続すれば 3DプリンタやCNCなどの動作監視がどこからでもできるね 便利そうなので俺も作ってみるわ >>989 非同期にやり取りする仕組みなら、NODE.js WebSocketをキーワードに探してみたら良いと思う。 動作環境はMaddable-SDKかな ArduinoUNO+EthernetShieldってもう時代遅れですか?
質問です 4Gの通信でArduinoのプログラムを書き換えることはできますか
PWMの3Vって最大3ボルトのLEDとかに使っても大丈夫なのか?
Nano EveryにはISP端子が無いんですがどうやってブートローダ書き込むんでしょうか?
mega4809だからICSPは対応してないよUPDIで書き込める
>>998 どうもありがとうございます プログラマ作れないかとググってたらjtag2updiが見つかりました Pro Microでもこれ使えますか? lud20221007121501ca
このスレへの固定リンク: http://5chb.net/r/denki/1568358922/ ヒント: 5chスレのurlに
http ://xxxx.5ch
b .net/xxxx のように
b を入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「Arduino初心者熱烈大歓迎質問スレ part25 YouTube動画>3本 ->画像>46枚 」 を見た人も見ています:・Arduino初心者熱烈大歓迎質問スレ part35 ・Arduino初心者熱烈大歓迎質問スレ part26 ・Arduino初心者熱烈大歓迎質問スレ part36 ・Arduino初心者熱烈大歓迎質問スレ part32 ・Arduino初心者熱烈大歓迎質問スレ part14 ・Arduino初心者熱烈大歓迎質問スレ part33 ・Arduino初心者熱烈大歓迎質問スレ part29 ・Arduino初心者熱烈大歓迎質問スレ part18 ・Arduino初心者熱烈大歓迎質問スレ part27 ・Arduino初心者熱烈大歓迎質問スレ part28 ・arduino初心者熱烈大歓迎質問スレ part31 ・Arduino初心者熱烈大歓迎質問スレ part30 ・Arduino初心者熱烈大歓迎質問スレ part38 ・Arduino初心者熱烈大歓迎質問スレ part17 ・Arduino初心者熱烈大歓迎質問スレ part15 ・Arduino初心者熱烈大歓迎質問スレ part21 ・Arduino初心者熱烈大歓迎質問スレ part22 ・Arduino初心者熱烈大歓迎質問スレ part19 ・Arduino初心者熱烈大歓迎質問スレ part20 ・Arduino初心者熱烈大歓迎質問スレ part39 (99) ・Youtube超初心者スレ質問大歓迎スレ&本田圭佑も応援するスレ [無断転載禁止] ・【初心者】黒い砂漠モバイル質問スレ Part.3【歓迎】 ・【初心者歓迎】ユニゾンリーグ質問スレ Part5【フレ募集】 [無断転載禁止]©2ch.net [無断転載禁止] ・【初心者歓迎】ユニゾンリーグ質問スレ Part8【フレ募集】 [無断転載禁止]©2ch.net [無断転載禁止]©2ch.net [無断転載禁止] ・【初心者歓迎】メギド72質問スレ 7 ・【初心者歓迎】メギド72質問スレ 14 ・【初心者】卓上ゲーム板総合質問スレ 29【歓迎】 ・【城ドラ】城とドラゴン質問スレ★39【初心者歓迎】 ・【城ドラ】城とドラゴン質問スレ★17【初心者歓迎】 [無断転載禁止] ・【ごまおつ】ゴシックは魔法乙女 質問スレ★53【初心者歓迎】 ・【ごまおつ】ゴシックは魔法乙女 質問スレ★61【初心者歓迎】 ・【ごまおつ】ゴシックは魔法乙女 質問スレ★57【初心者歓迎】 ・【ごまおつ】ゴシックは魔法乙女 質問スレ★55【初心者歓迎】 [無断転載禁止] ・【ごまおつ】ゴシックは魔法乙女 質問スレ★48【初心者歓迎】 [無断転載禁止] ・【ごまおつ】ゴシックは魔法乙女 質問スレ★42【初心者歓迎】 [無断転載禁止] ・【城ドラ】城とドラゴン質問スレ★34【初心者歓迎】 [無断転載禁止]©2ch.net [無断転載禁止] ・【初心者歓迎】総合質問スレッド-81-【ダウソNG】 ・【新規熱烈大歓迎】avex東京女子流*Part110【完全固定ハン禁止スレ】 ・■●初心者歓迎、刃物質問&相談スレ 32 ・【MobA】vainglory初心者質問スレ ★Tier6 ・【初心者】スレッド立てる前に質問をPart44歓迎】 ・【MobA】vainglory初心者質問スレ ★Tier7 ・【新規熱烈大歓迎】avex東京女子流*Part144【完全固定ハン禁止スレ】 ・【新規熱烈大歓迎】avex東京女子流*Part128【完全固定ハン禁止スレ】 ・【新規熱烈大歓迎】avex東京女子流*Part101【完全固定ハン禁止スレ】 ・【新規熱烈大歓迎】avex東京女子流*Part82【完全固定ハン禁止スレ】 ・【新規熱烈大歓迎】avex東京女子流*Part83【完全固定ハン禁止スレ】 ・【新規熱烈大歓迎】avex東京女子流*Part108【完全固定ハン禁止スレ】 ・【新規熱烈大歓迎】avex東京女子流*Part129【完全固定ハン禁止スレ】 ・【初心者】スレッド立てる前に質問をPart37【歓迎】 [無断転載禁止] ・MTB初心者質問スレ part114 ・MTB初心者質問スレ part106 ・ロード初心者質問スレ part395 ・ロード初心者質問スレ part464 ・ロード初心者質問スレ part444 ・ロード初心者質問スレ part457 ・ロード初心者質問スレ part445 ・ロード初心者質問スレ part 469 ・ロード初心者質問スレ part443 ・ロード初心者質問スレ part426 ・クロスバイク初心者質問スレ Part49 ・Twitter 初心者&質問スレ Part.27
16:01:08 up 9 days, 1:09, 4 users, load average: 8.10, 9.73, 9.70
in 0.070049047470093 sec
@0.070049047470093@0b7 on 112906