Arduino初心者熱烈大歓迎質問スレ part21
■ このスレッドは過去ログ倉庫に格納されています
http://www.arduino.cc/
【質問者心得】
・スレに一応目を通してから質問しましょう
・回答者はエスパーではありません。状況が分かるように詳しく書きましょう
詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです
【回答者心得】
・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう
・節度ある初心者さんには、特に優しくね
【分裂騒ぎ】
おさまった模様。くわしくはぐぐれ。
前スレ
Arduino初心者熱烈大歓迎質問スレ part20
https://rio2016.5ch.net/test/read.cgi/denki/1514503488/
過去スレ
Arduino初心者熱烈大歓迎質問スレ part19
http://rio2016.2ch.net/test/read.cgi/denki/1500745528/
Arduino初心者熱烈大歓迎質問スレ part18
http://rio2016.2ch.net/test/read.cgi/denki/1485192244/
Arduino初心者熱烈大歓迎質問スレ part17
http://rio2016.2ch.net/test/read.cgi/denki/1471967293/
Arduino初心者熱烈大歓迎質問スレ part16
http://wc2014.2ch.net/test/read.cgi/denki/1451909868/
Arduino初心者熱烈大歓迎質問スレ part15
http://rio2016.2ch.net/test/read.cgi/denki/1451893274/
関連スレ
【Arduino】フィジカル・コンピューティング4【OSC】
http://wc2014.2ch.net/test/read.cgi/denki/1407830304/
学研マイコン Japanino ジャパニーノで遊ぶスレ 3
http://kamome.2ch.net/test/read.cgi/denki/1286354827/ >>542
アプリケーションノートを読んでくれ。
AVR121: Enhancing ADC resolution by oversampling 何のために連携させるかだな
同じケース内でwifi連携とか馬鹿くさいし
会社と自宅でi2cなんてどうやるだって話だし 他機種のKBマトリックス(ダイオード入)をそのまま利用して自分用のUSB有線KBを作ろうとしています
まだ勉強中なのですが、KBマトリックスというのは
出力16×入力8ぐらいで、
出力ピン数が足りないのを補うため、
74HC595×2やMCP23017を使うようです
先達の作ったソフトをいじって実装することになりますが、
74HC595×2とMCP23017ではどちらがおすすめでしょうか?
・実用的なスピードで動くか
・チャタリング対策
・ソフトのわかりやすさ、いじりやすさ
等の面で
たいして違いはないでしょうか はんだ付けの数が少ないのがいいだろ
値段第一だけども。 「先達の作ったソフトをいじって実装」という前提なら、そのソフトが使ってる物を
そのまま使うのが一番では?
もし、そのソフトが Arduino本来の出力ピンだけを使っていて、それでは不足するので
その本数を拡張する必要があるということなら
独力で作るのであれば74HC595のほうが機能が単純なだけ簡単と思いますが
これも結局は適当なライブラリがあるか(見つけられるか)どうか、ってほうが重要になるかと
(MCP23017は、出力だけでなく入力も拡張できるという優位点はあります)
なお、「チャタリング対策」はICで行うわけではなく、(普通は)ソフトで行うので関係ないです ありがとうございます
74HC595×2、MCP23017、
ともに誰かが作ってくれた先例はありそうです
例えばチャタリング対策なら、何度か読んでみて押されているという状態に変化がなければキーが実際に押されたと判断すると思いますが、そのためにはある程度走査(スキャン)が速くないとダメな気がします
どちらでも十分速いのでしょうか MCP23017のほうは
・I2Cの100kbpsでデータを送る
・16bitのデータを送るのに、その何倍かの量のI2C通信が必要
・スキャンラインを1ラインずらすのに、16bitのデータを再送しないといけない
74HC595×2のほうは、(ソフトの作り方次第ですが)
・スキャンラインを1ラインずらすのに1bit分のシフト操作だけで済ますことも可能
・仮に、16bitのデータを送るとしてもI2C経由よりは多分10倍くらい速いはず
純粋に技術的な観点から言うと、74HC595×2のほうが優れていると思います
ただ、MCP23017で間に合わないということは考えにくいから、これという先例を
見つけてとりあえずやって見たら? >>549キーを押して離して押してを人力で1秒間に何十回出来る?
それ考えたらさ、別にCPUが遅くても問題なしじゃ思うよ ありがとうございます
素人なので、拡張IO専用ICというと何かとんでもなくすんばらしいものだと思っちゃうんです
説明していただいて洗脳が解けたので、74HC595×2のほうで作ってみることにします
I2Cも理解しなくて済むし、MCP23017のピン設定もしなくて済みます
(当分先になると思いますが)完成した報告します 汎用のシリアル−パラレル変換向きじゃないけど、キーマトリックスの
スキャン出力に特化するとしたら、74HC164でもいいね MOSFETとArduinoによるファン速度の制御
https://www.youtube.com/watch?v=Pw1kSS_FIKk
分かりやすい動画。字幕翻訳で御覧ください。 スマホで字幕の出し方が解らんが
FETのゲートって一旦ONしたら中ぶらりんでもOFFしないんのか! >>471
右下のLEDモジュールのGNDが繋がってないのでNG >>556
ドイツ人の英語は聴きやすいよね(日本人にとって) そうか。でもドイツ人の英語、読みにくい。
アジレント、ヒューレットパッカード、のマニュアルは読めるが
ドイツ、ローデ&シュワルツのマニュアルは読みにくかった。 日本人の英語も大概丁寧なだけでレベルはクソなので、母国語が英語じゃないなんちゃって英語圏の人がよく通じる 英語わかんなかったけど100万もってロス行って現地でバイク買ってフロリダまで旅行してる間に英語ペラペラになった俺が来ました。
もうね俺の英語めっちゃ南部訛り 聞く話すと読み書きは別物だな。
どちらが重要かというと……職種による(当たり前か)w すいません教えて下さい。
unoで雨センサーを繋げ動作確認したものをesp32に移植したいですがうまくいきません。esp32は文字表示できる状態です。unoと同じピンを選べば動くと思い、A0(No3)5V(No?)GND(32)に差し込み同じコードを使いました。何を手直ししたら良いでしょうか? まぁ聞いた言葉から単語推定できるようになることと
単語から音をある程度推測できるようになると急に英語力上がってくるよ。
英語を含むヨーロッパの言語系は基本ラテン語からの派生だから、個人的にはラテン語学習を勧める
俺はPh.取るときに覚えた >>563
そんな曖昧なのでわかるわきゃない
i2cか何使ってるのかしらないけど、そのポート設定間違えてるんじゃないか?
esp32でライブラリ使うときはたいていライブラリ側のその辺修正必要になる >>563
雨滴センサー?それ持ってるけどアナログ入力すればいいだけでしょ?
変更点は、読み取り値がUnoは0〜1023、ESP32は0〜4096
ESP32のanalogRead出来るピンを正しく指定する
このサイトの1に書いてるよ
http://rikoubou.hatenablog.com/entry/2017/06/29/135819 >>565
>>567
レスありがとうございます。情報が少なくすみません。アドバイス頂いた事を調べてみたいと思います。 まったく別のボードのピン番号を調べないで同じにつないじゃうのかぁ。。
壊さないようにしっかり調べなよ。 まあ、Arduinoを名乗るなら、基本的な(Unoにある)ピン番は
ソース互換になってて欲しいね UNOをESP32にそのまま接続したら動かない、ですが、まず動作電圧が違うよね?
なにを勘違いしたかわからないけど、互換だって無いですよ。
アナログセンサーなら5Vから3.3Vにする関係で抵抗とか数値を変えやきゃいけなしと思うし、接続ピンだって変えなきゃいけない。
何をするのか具体的に書き出した方が、より詳しくアドバイスを貰えると思いますよ。 雨滴センサーは3.3vでも動くよ。抵抗はいらない。
0〜1023、0〜4096の数値は電圧は関係なくて、
ADコンバーターがが10ビットか12ビットの違い ESP32で二つのI2Cセンサーを同じバスに乗せて使いたいのですが、wire.beginすると
invalid state sda=0 scl=1
Bus Invalid State, TwoWire() Can’t init
と延々表示されてうまく動作しません
考えられる原因として何があるのでしょうか?
使用しようとしているセンサーは9軸センサーMPU9250と3軸加速度センサーADXL355です
プルアップ抵抗は4.7kΩで、SCLSDAそれぞれに一個ずつだけ付けています
また、回路を変えずにセンサをピンソケット から抜いて片方だけにするとどちらも動作します レスありがとうございます。
やりたい事の詳細と説明で分けて書き込みます。
長文になりますがすみません。
やりたい事
職場のフロアに水がもれたら察知し個人メールへ自動送信したいと思っています。
雨センサーの先を漏水検知帯へ変え床に設置します。
フロアの5m間隔ほどで離れた4か所にマイコンを置き床の状態を監視、
検知した時ブルートゥースで1つのPCへ通知しPCからメールを送信
条件は下記になります。
SDカード セキュリティーで使用禁止
PCへ直接保存 可能
メーラー サンダーバード(Gメールなどネットサービスはおそらく使用不可)
WIFI 恐らく使用可能
ブルートゥース 使用可能
使用予定
・ESP32
・バッファローブルートゥースアダプタ
・雨センサー
・漏水検知帯
・ARDUINO IDE
・processing
・サンダーバード
・エクセル
・フォルダ監視ツール
考えている事
濡れた状態をESP32が検知しブルートゥースコネクタを接続したPCに伝達する。
ブルートゥースで4つのESP32を接続。
ARDUINOのみだとTXTファイルの作成は見つからなかったので
processingで検出した時のみtxtファイルを作成するコードを作る。
txtファイルが作成された時フォルダ監視ツールが反応する。
監視ツールが予めマクロで作成したメール自動送信プログラムを起動させる。
自動送信プログラムはエクセルマクロなどで作成する。
(無線での方法はまだ接続できていないですがxbeeも手元に2個にあります) 教えて頂きたい事
別のページを事前に見ていてピン番号があり3.3Vが2番ピンとなっていたのでそれにコードにピン番号を書いていました。
教えて頂いたURLに色々な事が書いてあったのですが、
自分ではESPのデータシート?を読み解く事ができなかったのですみませんが
教えて頂きたいです。
arduino UNO ESP32
A0 ⇒ 4 ADC0
3.3V ⇒ 2 3.3V
GND ⇒ 15 GND
で使う事はできるのでしょうか?
コードはどれになるのでしょうか?
analogRead(4) (A0) (ADC0)
ブルートゥースは7台同時接続可能ですが
processingで4台同時接続する事は可能でしょうか?
書き込みをしてシリアルモニターで見た時
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371
ets Jun 8 2016 00:22:57
と表示されたのですが、壊れてしまったのでしょうか?
すみませんが
宜しくお願いします。 交流の電流を測りたいんですが
クランプの片側をアナログ入力
片側をGNDにつなげるだけで良いんですか? >>574
おそらくI2CマスタであるESP32がスタートコンディションを発行しようとする
タイミングでセンサーのどちらかがSDAをLに引っ張ってしまっているのでは?
原因はパッと思い浮かびませんが、まずは両方のセンサーをバスに接続した時
SDA, SCLが両方ともHになっているか確認してみては? はじめまして、教えて頂きたい事がございます。m(__)m
Arduino Due + イーサネットシールドで
Web Server を作ろうとしています。
シングルセッションの制作は問題なくできたんですが
マルチセッション対応のサンプルとかどこかに有りますでしょうか。 >>579
何がしたいからマルチセッション対応したいのか書いていただけませんか?
まあだいたいこういう質問されるからはそれを書きたがらないのですが。
あと暫くすると自己解決しました。というレスが来るのもこの手の質問者の傾向です。 はじめまして
質問させていただきます
arduinoに秋月のPAM8012というアンプモジュールと8Ω0.4wのスピーカーを接続して音を出したいのですが電源をarduinoの5vからとっても平気でしょうか? unoなら最大200mAぐらい=1Wぐらい
ま、ぎりぎりいけるんじゃない?w >>578
返信が遅くなってしまってすみません。
簡易ロジアナを購入して波形を見たところ、分解能などの初期設定レジスタの書き込みまでは上手くいっているようです
しかし値を取り出そうとrequestFromをするとSCLはLOW、SDAはHIGHになったまま止まります >>586
requestFromの後に
while(Wire.available()) {
byte hoge = Wire.read();
}
Wire.endTransmission();
のようなreadとストップコンディション発行は入れてますか? PCの余った12cm角ファン(ガードネット付き)で扇風機を作ろうと思ってるんだけど
PWM介して適当なFETでドライブさせて、サーボ関数使って首振りみたいな感じで作っておk? >>588
赤外線センサもつけて、人のいるところへ狙って風を送りこめそうだなw >>587
STOPコンディションを入れていて、念のため空になるまでreadしています
相性が悪いんですかね…
wire2を使うことも検討して行きたいと思います i2cクロック遅くしたらどうだ?
あとマルチスレッドしてるならシングルスレッドにする
esp32は挙動おかしいこと多いからなw >>591
Arduinoよく知らないけど、これのC言語ってvolatileみたいな修飾子とかはあるの? そのあたりはコンパイラの問題だからまんまそれが使えるよ >>589
頭いいですね
センシング用のセンサを独立で動かして、
温度の高い所に首を向けて冷やす、というのもありなのかもしれない、とか思いましたが
複雑過ぎて僕兄は無理そうです
誰か作って! 明かりの方を向く太陽光パネルってのがYoutubeにあったね。 プログラム完成後にUnoからATmega328Pを取り外して動作させるときに
5と22のGNDは内部で繋がっていますか?
それともどちらとも電源のGNDに繋げないと動作しませんか?
328Pのデータシートは見たのですが記述されていませんでした あぁすいません8と22でした
もちろんUnoに乗ってるときはどっちもGNDに繋がっているのは知っています
これを取り外して単体で動かしたときにどっちも繋ぐ必要があるのかってことです
試してみると8だけGNDに繋いでも動作しています
それからさらにポートDに抵抗とLEDをつけてLEDのカソードを22に繋いでいます
22は電源のGNDには繋がっていません
この状態が問題あるのか?ということです たぶんパスコンも入れてないんだろうな
まあ個人で使う分には問題ないじゃないか
人に売ったり、製品化しようと思わなければね ATmega328Pじゃないが、内部結線されてるGNDを外部結線してないとトラブるってのは稀によくある さすがにパスコンとクリスタルはついています
リセットの外部プルアップ抵抗もついています(内蔵はやたら高抵抗ですから)
憶測でものを言うのはやめた方が良いですよ
>>604
なぜGNDを複数ピン出すのか説明してある資料とかありますか? そんなもんチップとかモジュールの設計会社の内部資料にしかないだろw >>605
パスコンを入れている?
どことどこに?
パスコンを入れているのに何故この質問が出るんだ?
>>なぜGNDを複数ピン出すのか説明してある資料とかありますか?
もう一度言う
たぶんパスコンも入れてないんだろうな >>607
VCCとGNDの間とAVCCとGNDの間かな
0.1uFのチップコンデンサがついています
AREFにもデカップリングのためにつけるときもあるかな(基準電圧の選択による)
なんでこの疑問が出たかというと
単純にGNDが2つある理由が気になったからかな
AREFを挟んでるせいでAGNDにコンデンサもつけにくい位置だし(7番8番は足の間に1608がピッタリ入って楽じゃないですか?)
AGNDとしてあって明確に別の用途があるチップもあるけど328PはGNDとなっているからなんか意味があるのかなと いつも何も考えずに両方GNDに繋いでたけど
ちょっと興味深かったんで、AVRfreakで調べたら外人も気になっててワロタw
https://www.avrfreaks.net/forum/why-two-gnd-pins
ちなみにAVRによっては、AGNDとなってる場合もあってそれはアナログ回路のGNDとして分かれてるからちゃんと配線を考えろ
ただ単にGNDとなってる場合は内部で単純に結線されているわけで、足が複数出てるのは「GNDは太く」の概念によるもの?
つまりどれか??げば動作はするが、全部??いだ方がより良いと考えられる(AGNDはまた別) なんか繋ぐの漢字が変なのに変換されてた
たぶん>>604のようなことが起きる原因は内部のGNDの経路が細いせいじゃないかな 当時のAtmelは知らんが内部で結線されてない複数のGNDピンを持つチップは世の中に普通にあるから必ず全部繋げ
たとえ内部で繋がってるのが確かでも外でも繋いだ方が確実にいいだろ
アナログ用とかで分かれてなけりゃな どこの世にも2つのタイプがおるのな。
1.
It's part of the chip-design.
To keep the ground inside the AVR "quiet", the Atmel engineers use 2 groundpins on the Mega168.
On other AVR's there are even more groundpins. For the same reason.
2.
The Mega16, Mega32 & Mega644 controllers each have four GND legs.
Does that mean that they are Dogs, Cows, Elephants, or what?
Ahh... The mega16 is a Gazelle, the Mega32 is a Silver Fox, and the Mega644 is a Jaguar... 1本よりも2本足4本足で地面に立った方が安定感あるからな。お前もやってみろ。1本だと些細な外部刺激でバランスが崩れてこけるぞ。人間も。 人もまた然り…か。 論理的ではないが、イメージはし易い。 ArduinoのPWM出力を電圧じゃなくて抵抗値で出せるものってありますか?
なんて検索したら良いのかわからない
0〜100Kオームくらいで動かしたいです >>615
ATmega328P単体では不可能
デジタルポテンショを使えば可能 pwmオンを抵抗ゼロ、オフを無限大と考えて平均抵抗値を求めたら・・・うん。計算できないねw
pwmは抵抗が変わるわけじゃないから抵抗換算はできない >>616
ありがとうございます
秋月で検索したらこれがありました
http://akizukidenshi.com/catalog/g/gI-07610/
10Kオームなのは別にしてもI2(の小さいやつ)Cはわかりませんし
そもそもこんな米粒みたいな部品どう使えば良いのか…
もう少し検索してみます それ見てできるようなら、抵抗値を出すとかいう質問はまず出てこないな >>618
ごめん、上に書いた基板はピッチが違うので、こっちにしてピン余らせた方が良いかも。
http://akizukidenshi.com/catalog/g/gP-08342/
私は上のSOT23でやったけど。 >>620
ん、そう?
配線してスケッチをコピペすりゃすぐ抵抗値の変化が見れるけど?
https://i.imgur.com/wnd5jWy.jpg
あと何に使うかは知らん。
問題はハンダ付けだろうね。 >>623
速攻レスだな。
UNO買ったときに328Pを秋月で単体で買ってブートローダ書いたんよ。
バックアップとか言ってさ…。
最近Nanoしか使わんから自分でも懐かしいわ。 それじゃん。
>>615の問いに対する完全無欠の最終解
自分の無力さをひしひし感じるわ。 使えるかどうかわからないが、PWM出力で4066みたいなアナログSWのON/OFFduty変えて
等価的にOP入力のボリュームを構成できる。 >>618
おっとこれはI2Cではなく、H/Lロジックで使えるやつだった
ただ1ステップずつインクリメント、デクリメントしかできないっぽい
SPIだけどこれもありかも
https://www.digikey.jp/product-detail/ja/microchip-technology/MCP4131-104E-P/MCP4131-104E-P-ND/1874342
SPIもArduinoなら簡単、誰でもできるから心配ご無用 >>625
ボリウムは300°廻るけどサーボって180°くらいしか行かんから0に合わせたら100キロいかないw
…と書いてボタンを押そうとした所でそのボリウムが250キロって可能性に気付いて俺は負けた
一丁前にカップリングまで装備しやがって!! ロータリーエンコーダーのように
A相B相の位相差90度の10kHz程度の
パルスを出したいんですけど
簡単にお安く出力する方法って
どうすればいいでしょうか?
この流れだと先に言われそうなんで
arduinoでモーター回してロータリーエンコーダを回す
意外でお願いします。 >>632
簡単にお安くってこのスレで言われて
Arduinoでっていう回答は有りか無しか そのパルスをArduinoをから出したいという話ではないのか?
それだとしたらなんも外部装置は要らないだろ
Arduino単体でいろんなやり方がある aruduino単体で出来ます?
信号1つのA相だけのパルス波形ならいけるけど
位相ずらしてB相の波形を出す方法が解らないんです 簡単に思い付くのはタイマーを2つ贅沢につかって出せばよかろう?
もしタイマー1つでやるなら…例えば
1バイトでいいから変数を2つ用意して片方は初期値を0、もう片方は初期値を1とする
タイマーを40KHzでフリーランさせて割り込みでそれぞれの変数をインクリメントして2ビット目の値を出力ピンに設定するとかどう? >>635
>信号1つのA相だけのパルス波形ならいける
そのスケッチ貼ってみて。
http://codepad.org/ >>635
16bitタイマーで高速PWMでOCR1AにTOP値を設定し、
OCR1Bに(TOP+1)/2-1を設定してやればできそうだが、Arduinoでどうコーディングすればいいかわからん。 >>638
周波数固定ならCTCいいしでTimer2でもできる >>636の後者だと
◎出力ピンが自由に選べる
△割り込みでほんの僅かにCPU処理がある
>>638のやり方だと
◎CPUは何一つやらなくていい
△出力ピンが固定で選べない 鼻つまみ者がわらわらと湧いてきたなw
AVRスレへ戻って棺桶の蓋閉めてもう3000年寝とけ。 >>591
i2cクロックを10khzに落として見ましたがやっぱり同じエラーが出ますね
マルチタスクについても特にxTaskcreateも使ってないですし、wire.beginと各requestFromの前でcoreIDをシリアル通信に吐き出させて確認してみましたがどのタイミングでもcore1でした
相性が悪いみたいです、悔しいですがおとなしくwire2使うことにします
皆さんありがとうございました ■ このスレッドは過去ログ倉庫に格納されています