Arduino初心者熱烈大歓迎質問スレ part24
■ このスレッドは過去ログ倉庫に格納されています
>>374
すんません 非対応モジュールって、マイコンハードウェア?ライブラリ?ラズパイのモジュール? ヒューズ書き換えをミスってpro miniが文鎮化した
↓このブログの通りやってもチップIDが0xFFFFのままだわ
「レンガにしちまったpro miniの救出作戦。mega328pヒューズリセッターに挑戦(^^」
3.3V8MHzのpro miniだからダメなのかな。もう諦めたほうが良いかな・・・ >>376
なんかこのやり方の部品費でProMini(中華)買えそうやなw 自分はやったことないけど、このブログにあるようにターゲットのPB6/Xtal1にどう接続するかがカギっぽいな 俺も飛ばしたことがあるわ
内部クロック使用かなんかで繋がんなくなったような…だいぶまえなんで覚えてないけど
2年寝かして、こないだ捨てた
スッキリ!!! AUならいけるけどMUは無理だな
ああ、オシレータ外したほうが早いか 俺もリセットスイッチとタンタルコンデンサ取って捨てるわ
https://i.imgur.com/AaV4SwS.jpg
スッキリ! >>383
取るところにまだ未練がw
スパッとすてちまおうぜ! じ、実はうちにも書き込めなくなったPro Microが…
捨てますね。 実際の所、どんな爆弾残しとるかわからんもん使って後で泣くよりすぱっと捨てた方が精神衛生上いいよね。 今時タンタルってことは相当な昔に製造されたんだろうね >>386
若い頃無茶やったせいでpin8の入力だけおかしくなったNANOがいるんだが、
ICSP教官として新兵のめんどうみてもらうつもりだったけど退役かのう >>387
どういう理由でそう判断を? 割とよく使われているけれど。
↓こういうこと?
https://lab.fujiele.co.jp/faq/1027/
コンゴのことは不安ではあるけど。 >>383
良い判断だ
でも外した部品も多分使わない おれは外した3x6のタクトスイッチをピンソケットにハンダ付けして
ピンヘッダに差し込んで使えるタクトスイッチにした > ピンヘッダに差し込んで使えるタクトスイッチにした
私も過去に同様な物を作ったことがあります。
ふと、デバッグ時に、他の人はどんな小物治具を使っているのだろ?と気になり、
参考にしたいと思ったので、とりあえず、私がこれまでに必要になる度に作り、
蓄積してきたものをアップしておきます(一部ですが)。
https://i.imgur.com/u5y3bQ2.jpg
左上のICクリップにはソケットを挿して使用します。
右上は圧電ブザ-で、PC画面を見たままでH/Lを判断できるので便利です。
水晶とC2個をまとめて3Pヘッダにハンダ付けしたものもあります。 >>392
小物の接続ってミノムシクリップで作ることが多かったなー(除 中華クリップ)
H/Lモニタ用にLEDとか圧電ブザーの線付きは面白いですね HLモニタ用のLEDは足の長いまま1本ずつ熱圧縮チューブでシュリンクして
ブレッドボードの両端のVccかGNDに繋いでるな
sopのFETに足つけたものとかもよく使う
あと、I2Cの分岐コネクタも作ったけどほとんど出番無いw 小物類の冶具は頻繁に出番はないけど ここぞと言うときにあると作業が捗るね
自分の場合は テスター棒の先っぽを変換するやつが活躍する場面が多いかな ああ確かに、テスター棒にミノ虫やICクリップや針やらアタッチメントというか
ミノ虫で色々はさんでるわ
「ニードル・アームッ!」とかつぶやきながら あのブザーってどういうシチュエーションの時に使うの? >>399
デューティなども音の違いで分かるとは思うが、
普通は単に出力レベルのH/Lじゃないか?
(ブザーは音の有無で、LEDは点灯するかしないかで、テスターは数値で) 自励式ならともかく他励式だとまともに鳴る範囲は限られるけどな ArduinoもしくはATTinyで抵抗計測器みたいなのを作りたいです。
テスターで測ればいいんですが、それすら面倒臭くて、
2つの穴にスポッ!と入れれば、抵抗値が表示される、みたいなものを作りたいです。
しかし、Arduinoを用いた電圧計の作成事例はたくさんあるのですが、
抵抗計は見つかりません。何かいい方法はあるでしょうか? 海外ブログで「Resistance meter Arduino」で検索すれば幾つかありました。
ありがとうございました。また何かあればよろしくお願いします、 そんなに面倒くさいなら、テスターのリード線をその「2つの穴」につないでおけばいいんじゃないか?
ていうかあるよなそういうの。 すいませんプログラムの事で教えて下さい。
シリアル通信で文字列入力でLED点滅したいと思い、下記のページ(arduinoの部分)を試しました。
https://algorithm.joho.info/arduino/python-serial-led-string/
1文字しかできないと思っていたのが
2文字以上の文字列でLEDが光り良かったのですが、offの文字を入力してもLEDが消えません。
何度も入力で切り替える事ができるようにするにはどうすればよいものでしょうか。
よろしくお願いします。 >>407
ほんとだ、ソースコピペでoffと入力しても消えないね >>409
そうなんです。offのあとにonと入力してもledが光らなかったりします。 Arduinoの入門書とキットを買って、一通り終えました。
ここから先って、みなさんどういう方向に進んでます?
1)適当にセンサーつけてIoT機器として遊ぶ
2)サーボモーターとか使ってロボット的な何かを目指す
3)より高度な制御を目指してラズパイ方面に進む dataというchar配列をもとにStringを作ってるけど、そのときにchar配列は0終端してなくていいのかな?
なにか文字があるときにavailableになって実行されるんだし、data[i]が0になることがあるのかな? >>410
色々やってみたけど分からない。。。
Arduino内蔵のLEDじゃなくて、外付けでLEDと抵抗を付けたらいいのかも >>413
夜遅いのに色々試して頂きありがとうございました。 >>412
レスありがとうございます。
on0とoff0をコマンドにするという事でしょうか?
助言にそっていないかもしれないのですが外部LEDはoffにはならなかったです。 >>407
まだArdruinoのC言語にさほど詳しくはないんだけど、
> if (i > 10 || data[i] == '\0') i = 0;
これだとdata[10]にまで書き込んじゃうのでは。
あと、配列dataを\0で初期化しなくていいの?
offの後にonを入れたら、onfになったりしてない? >>411
Arduinoで実用的なモノを作る
売ってるものだと買ったほうが安いになっちゃうからね
俺が作ったのは
1)温度センサー2個とファンをつけて部屋の天井付近と床の温度差が7度以上あれば
ファンをまわす。かしこいサーキュレータ。バーグラフのグラデ表示が綺麗。
冬場は大活躍したが、夏場に真っ赤になってるバーグラフ見たくねえw
2)エアコン、照明、コンポなどのリモコンを1つにまとめたマルチリモコン
3)0.25mA精度で消費電流を表示する装置
4)サイン波など発生する装置。プリセットボタンで63Hz,400Hz,1kHzなどの
よく使う周波数を呼び出せる。加速式ロータリーエンコーダーでマニュアル操作も快適
5)「何時になりました」と自動でしゃべる時計、作業に熱中して睡眠時間が減る事が
少なくなった気がするようなしないような…
他にも作りかけのものがいっぱいあるよ
アイデアを実現する手段ができたので、あとは実現するだけだ 実現性の検討してるときが一番楽しいね
通勤中にスマホで下調べして帰ってきたら1時間くらい開発を繰り返して2週間に1機能追加を目標にチマチマやってる >>407
なんかいまいちプロトコルがはっきりしないけど区切り文字はあるのか/ないのかとか'o'のあとにだいぶ時間が空いて'n'が来ても'ON'として処理するのかとか
区切り文字がある(例えば\nとか)あるならそこまで読み込んで処理すればいいけど
区切り文字がないならオートマトンとか使ってちゃんと状態遷移を考えながら文字解析しないと何やってるのかわからなくなっちゃう
区切り文字がない場合の一例として自分ならこう処理するかな
https://i.imgur.com/g2Ks6lP.png >>416
>>419
>>420
レスありがとうございます。
夜遅いのにも関わらず考えていただいてありがとうございました。
プログラミングはまだ経験が浅いのですが、
アドバイスを見て少しずつ理解したいと思います。 >>417
どれもなかなか面白そうですね。
1) 扇風機に自然風のような強弱揺らぎ機能をつけよう、と考えた事はある。
2) すぐにでも作ってみたいと思った。
市販の学習型リモコンはSWが多すぎて、うちの認知症気味のオバァチャンには難しすぎるので。
3) 何のためのものか、目的、用途が不明です。
4) 秋月のDDSキットで同じようなものを作ったけど、ロータリーエンコーダに加速機能は持たせなかった。
周波数を素早く変更できるように、+1、-1する桁の位置を指定できるようにしたけど、
プログラムを追加して加速機能を組み込んでみるかな。
5) 市販の目覚まし時計に発声機能を組み込んだら役に立つかも。
音声で測定値を読み上げてくれるテスターを作った事があるけど、実用的では無かった。
参考になりました。実現したらまた発表して下さい。 >>418
俺の場合は、生活の中での不便を解消するためにやってるから
不便に思う事がある
↓
便利にするアイデアを考える(PCのソフトウェアだけで解決する場合もある
↓
実現性の検討:計測やデータ収集、デバイスの検討
↓
試作
↓
デバッグ:使用してみると手直しが必要な事が多い
↓
完成
一番楽しいのは、アイデアが実現した瞬間=試作品の完成で大きな達成感を感じる
次に最終的な完成で満足感かな、アイデアを考えるのも楽しいけど
実現性の検討の段階はあまり楽しめてないw
うんうんうなってる感じ >>423
発表会の印象だけが残ったのかな?
Arduinoの入門書とキットを終えたら、どういう方向に進むかだけど
最終的には、自分の作りたいものを自由に作る
まずは模倣から入ってもいいと思う
大抵のモノは先駆者がいると思うので、面白そうなものを見つけたらマネしてみる。
そして自分のアイデアをちょっぴり盛り込む
やってるうちに何でも作れるようになるよ(そんな気になるw 3)0.25mA精度で消費電流を表示する装置
用途・目的:Arduinoをバッテリー駆動した場合の微小な電圧を計測する
・市販のUSBテスターとかだと表示が9.99、10mA以下は表示しない
・V,A計測にマルチテスター2個占有される
・クリップとかじゃなく、入力、出力があって電源の間にはさむわかりやすい装置がいい
・本当にsleepできてるのか確認したい
以下、計測結果
Mega328P AU 3.3V 8MHz 4.8mA (BuitinLED 1.5mAを含む)
Mega328P MU 3.3V 8MHz 4.8mA (BuitinLED 1.5mAを含む)
Mega328P U-TH 3.3V 8MHz 4.3mA (BuitinLED 1.5mAを含む)
Mega328P U-KR 3.3V 8MHz 4.3mA (BuitinLED 1.5mAを含む)
Mega328P MU 3.3V 1MHz 2.0mA (BuitinLED 1.5mAを含む)
Mega328P MU 3.3V 16MHz 7.5mA (BuitinLED 1.5mAを含む)
Tiny44A 3.3V 8MHz 2.0mA
Tiny13A 3.3V 9.6MHz 1.0mA
雑感:
さすがTiny13、Tiny44Aもなかなかいいぞ!
U-KRはちょっぴり省電力じゃなかった
クロック下げるのが最も有効 >>420
うん
実は自分もそのメソッドあるはずだよなと思ってたw 変数dataをクリアしてねえじゃん
そのまま実行してonを送ると光るだろうね
そしてoffを送っても消えないだろうね
dataには「onoff」が入ってるもゆ コマンドの終端が定義されてねぇとか
間違ったコマンドだろうが正しいコマンドだろうが実行したらコマンドバッファから消せよとか
そのへん リモートロック「アケルン」が欲しいけど高いので、ニセモノの「アケタルン」を作ったな。 400円のHDMI切替器を改造して、切替えた後にWinowsの窓がちっこくなたり
マルチモニタがいちいち反応しないようにできたが、
2万円くらいしえたEDID保持タイプに2〜6千円クラスが登場して一気に価値が下がったw
つかそれらの劣化版でしかない、そういうプロジェクトもままある 429さんのブログとても参考になります。
夜遅いのでお時間が大丈夫な時に教えて頂きたいのですが、
文字列でdelayを使わないLED点滅切り替えができないかと調べるとtimer2というライブラリを利用する方法にたどり着きました。
ただほとんどのページの方法がloopが空白になっているのですが、loopにはコードを書かずに別に書くべきなのでしょうか? loop内は好きに他の処理を書けばいいよ
それとは別にLEDはタイマー割り込みで点滅するよ >>435
>>436さんのおっしゃる通りです。
loop内とTimerの処理は独立しているので、簡潔にしたいサンプル・プログラムではloop内が空っぽの例が多いだけです。
ある文字が来たらTimerを動かし、別の文字でTimerを止め、また別の文字でTimerのタイミングを変える。
こんな内容をloopに書けばいいと思います。 >>436
>>437
レスありがとうございます。
アドバイスから書いてみたいと思います。 >>429
>1文字ずつの方法のうまくいかない理由は未だにわかりません。
パソコン側は何を使って"on"や"off"のメッセージを送ってるんでしょう?
Pythonのプログラムはよくわからないですが、そこのサンプルだと
コンソールから
on
と入力すると、
ser.write(flag+".")
で、シリアルポートから
on.
が出力されるように思います。
受ける方は、終端文字として
0
を待っています。
試してないですが、'\0' を待つ代わりに '.' を待つようにしてみてはどうでしょうか。
// 文字数が10以上 or 終端文字なら終了
if (i > 10 || data[i] == '.')
{
data[i] = '\0';
i = 0;
}
else
{
i++;
}
パソコン側がターミナルソフトだと
on[enter]
と入力([Enter]はエンターキー)すると、
on\r
や
on\r\n
が送信されます。行末の改行コードは設定できるものが多いと思いますので、\rだけにしておいて、
Arduino側で終端文字として \r を待つようにしてはどうでしょうか。 あ、だめだ。>>439の改変だけだと、前回のデータでstringを作って返してしまう。
終端文字を受けていないときは、空の文字列を返すようにしないと。 >>407
このブログのソースが間違ってるんじゃないの? どこが間違ってるのか知りたい気持ちもあるけど、
>>429のリンク先ですでに別の方法で解決できてるから、そのサイトのコードの間違いを考える気が起こらない。
サクッと的確に指摘できる人もいまのところ登場してないようだし…。 もしかして「的確に指摘」って動くコードを提示することなんかな?
そんなアホなことないよね? >>442
わざわざフローまで書いてくれてんのに
理解できない部分を読み飛ばすのはどうかと思うぞ
正解はReadStringでいい
可変長のコマンドを逐次評価する意味がわからないよ
”1”とか"2"みたいな1文字コマンドなら逐次評価の意味あるけど
例題が悪いとしか言えない
あと、ReadStringは改行押されるまで戻ってこないから
入力中でも温度計測やLED光らせる処理する場合は
割り込み使うか、自分で入力ループ作ってやりたいしょりもやって
"\n"きたらコマンド解析して実行する必要がある pro microにロータリーエンコーダ―つないでHIDデバイス作ったのですが、0-255とか0-1023の出力でWin10の音量を直接制御する方法ってないでしょうか?
キーボードとして動かしてvolume up/downするのではなく。。。
win10の仕様を調べれば出てきそうな気はするのですが、どこを調べれば良いのか判りません。教えてください。 >>446
Win10のプログラムを自分で書くって事になるけど
マルチメディア APIとかいじればできると思う まあ初心者のうちは「自分のやりたいこと」だけに目が行きがちだけど、特に「人が操作するもの」「外部から何らかの入力があるもの」を作るときは「想定外の操作/入力にどう対処するか?」っていうのが大切になってくるんだよね。
「ライブラリを使って効率よくプログラミングする」ことは大事なことだけどライブラリの動作をしっかり把握していないとワナにはまったりするし…
場合によってはライブラリに頼らず自分で処理を書くことも大事、ただし「書いたとおりにしか動かない」というお約束で。 だから、
Serial.readStringUntil()
だと言ってる。
終了。 >>445
わざわざリンク先まで明示してるのに読み飛ばすのはどうかと思うぞw >>445
>正解はReadStringでいい
と断言してる割にはその後のつけ足しが長いのおw
>>452
何だ、Serial.readStringUntil()知らんかったのか、アホだのおw 自分の無知を棚に上げて
>理解できない部分を読み飛ばすのはどうかと思うぞ
と上から目線w
>>ID:bU3Ljzzp = >>419 の予感w >>449
ここで偉そうに書いてる人がArduino語に精通してるとも限らんことがよくわかったね。
私も含めて初心者のみなさんは、普通に検索した方が早く最適解が見つかると思うよ。
https://ch.nicovideo.jp/yugata/blomaga/ar1177727
それは別にしても>>445みたいな上から目線にはヘドが出るね。 >>447
有難う御座います。
MMDevice APIってやつですかね。なんとなく出来そうな事は判ったのですが私にはまだハードル高そうなのでエンコーダーで我慢しときます。
元コメの日本語判りにくくなってましたが、ロータリーエンコーダ―ではできたけど、可変抵抗使った0-255とか0-1023とかのアナログ入力でコントロールしたかったと言う事です。
蛇足でした。 くだらないことで喧嘩するのはやめようよ、わたしはID:bU3Ljzzpじゃないよ
アルゴリズムをよく練ることはすごく大事なことだと思うよ、そこで練習問題
あのフローを書いたあと実際にスケッチを書いて走らせてみたけどちょっとした不具合が2か所見つかった(まあどうでもいいかもしれないけど)
仕様は
・とにかくどんな文字時でもランダムに受信する
・そのランダムな文字の中に'on'という文字の並びがあったらLEDをつけて'off'という文字の並びがあったらLEDを消す(当然連続していること)
・区切り文字/終端文字/改行文字などは不要
・タイムアウトはないので'o'の後に10秒でも20秒でもたって'n'とか'ff'とか受信してもちゃんと'on'/'off'と認識する
・'on'や'off'の文字の並びの前後にどんな文字が来てもちゃんと'on'/'off'だけ認識して他の文字は無視するする、ただし'onoffon'のように受信した場合はそれぞれ'on'と'off'と'on'として認識すること
さあだれかあのフローのバグ(2か所)を見つけないか?
正解の発表は今夜の1時 >>457
Serial.readStringUntil()で済みだって言ってんだろ、馬鹿なのか?
そして、その仕様はクソだ、終了。 >>457
>アルゴリズムをよく練ることはすごく大事
そうそう大事大事、ずっと練ってろw あの程度のフローチャートを嬉々として書いてアップしてるオヤジが
同類の電々ジジイ仲間以外からはガン無視されてて不憫。 >>461
そんなに卑屈になるなよ。
何だかたくさん書いてるあなたのことを感心して見てたのにw Arduinoが存在していなければ
今こうして電子工作にハマることはなかった
ありがとう!Arduino! >>407の質問者が求めていたものは>>429のリンク先で満たされている。
>>435を見る限り質問者はもう次の段階へ進んでいる。
情けないのは未だにちまちま小出しにして四の五のやってるジジイども。
>>461の悔しそうなレスが皆の涙をさそう。 readStringUntil() で終端文字を受ける直前でタイムアウトになったらどういう動作をするのだっけ。
終端文字を改行文字にしておいて、
送る側が、off\n のつもりで off まで受信したときにタイムアウトするとか。 offエンターって入れるのに何秒かけるつもりなの? あ、違うか。
oが届き始めてから\nが届き終わるまでの話か。
どうやって試すか思い浮かばんなあw
逆にどういうケースでそれが気になるのか知りたいわ、教えて>>465 >>467
ArduinoIDEのシリアルモニタしか知らないの?一般的なターミナルソフトならキーを押すたびに送信されるから無限大まで可能だが? >>468
質問者の挙げたサイトのPythonのスクリプトによる送信を前提にしてるんだけど知らなかったの?
そもそも何の話してるの?
ま、それは置いとくとして、あんたの言う無限大まで引き延ばすシチュエーションを説明してみてよ。
どの局面でその想定が生かされるの? Arduinoが存在していなければ
今こうして電子工作にハマることはなかった
恨んでます。Arduino。 >>468
>無限大まで可能だが?
何が何でも自分の主張を通したくて可能性と必要性の区別すら出来んかw
誰でも書けるちゃちなフローチャート1枚、そんなに認めてほしかったんかw
不憫よのう。 >>467
たとえば、
4個のLEDをあるパターンでチカチカさせている。
コマンドをうけたらチカチカのパターンを変える。
というような場合にreadStringUntil()が使えるのかなって、思った。 >>469
>質問者の挙げたサイトのPythonのスクリプトによる送信を前提にしてるんだけど知らなかったの?
ターミナルソフトで送信するのであっても、Pythonスクリプトで送信するのであっても、
文字列の途中でタイムアウトになる可能性はあるよね?
長い時間を設定していたとしても、タイムアウト直前に文字列が送られ始めることもあるのだし。 シリアル送受信は奥が深いよね
あらゆる送信パターンを考慮すると。
俺はループして、終端文字がくるまで1文字ずつバッファ的なstringに追加していって、終端文字が来たところで何かしらの解析に入るような感じでつくってる。
バッファが空じゃない状態で終端文字が10秒以内に来なかったらタイムアウトでバッファ捨てるみたいなのも入れてる。 ■ このスレッドは過去ログ倉庫に格納されています