Arduino初心者熱烈大歓迎質問スレ part30
■ このスレッドは過去ログ倉庫に格納されています
発振といえば未だにLC発振のリクツを理解していません
どうやら僕がやっているのは電子工作ではなくただのマイコンプログラミングのようです
KiCADで回路図をしたためつつそんなことに気づいた日曜の昼下がり
現場からは以上です >>749
ありがとうございます…
これは製造ロットによってADC電圧にバラつきがあるという
例のアレですね… 測定でアナログ必須になるのでなんとか
頑張ってトライしてみます! >>745,746
ありがとうございます。
負荷容量をキーワードに検索し、よくわかりました。水晶ごとに発振周波数の前提にしている負荷容量があること、外付けする容量ではなくICや実装時に結果的に発生する容量も込みであること(当たり前といえば当たり前ですが)。ゼロに近くなると周波数双曲線的に高くなることなど理解しました。 esp32のADCの歪みにより具体的にどんな時にトラブルが発生しますか? 補正を考えずに意味もわからずなんかのスケッチそのままコピーして思い通りに動かない人がesp32のADCは使えないと吹聴する >>754
なるほど
そこまでできててなんでそんな事が分からないのかなと思ってた
そうなんだね ESP32のADCの0V付近のオフセットはソフトではどうしようもなかったような。アナログセンサー入力とかだと影響がでる。 arduinoってPythonでもプログラムできるんだね 教えをこうむりたく。。。
下記のとおりです。。。
よろしくお願いいたします。
◇やりたいこと
inoとは別ファイルで関数を作成しその中でU8x8lib.hを使いOLEDのテキスト表示をしたい。
◇問題点
別ファイルにおけるコンパイルエラー
◇エラーの内容
'u8x8' does not name a type
u8x8.begin();
^~~~
◇状況
inoファイルの setup()関数の中や、loop()関数の中に
u8x8.****** を記述するとうまく行きます。
Auduino IDE で別ファイルを作成して、そこにはsetup()関数が
ないので、自作の関数の中で、u8x8.***** を呼び出そうとしました。
====== 別ファイル(*.cpp)のコード(エラーが出たコード)======
#include <Arduino.h>
#include <U8x8lib.h>
....
void 関数名(void){
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
u8x8.begin();
u8x8.clear();
u8x8.setFont(u8x8_font_7x14_1x2_r);
u8x8.drawString(0,0,ABCDEF);
}
※inoで一つのファイルに記述するとエラーは出ない
====== ****.inoのコード ======
#include <Arduino.h>
#include <U8x8lib.h>
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
....
void setup(void) {
u8g2.begin();
u8x8.clear();
u8x8.setFont(u8x8_font_7x14_1x2_r);
u8x8.drawString(0,0,ABCDEF);
} 大変お騒がせしました!!
下記にてコンパイラ通りました。
今晩、やっと寝れそうです。
ino本体
#include <U8x8lib.h> ←消去
本体ではライブラリは一切さわらない
C++ 追加ファイル
#include <Arduino.h>
#include <U8x8lib.h>
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
void 関数名(void){
u8x8.begin();
u8x8.clear();
u8x8.setFont(u8x8_font_7x14_1x2_r);
u8x8.drawString(0,0,ABCDEF);
}
ちなみに、ググる場合のキーワードは「ソースコード 分割 ライブラリ 呼び出し」
で、色々な情報が出てきました。
ただ、今回のU8x8libライブラリを自作C++で呼び出す方法は自分では探せなかったです。 void 関数名(void){
を
void 関数名(U8X8_SH1106_128X64_NONAME_HW_I2C u8x8){
に変更
メインファイルの
関数名();
を
関数名(u8x8);
に変更 同じディレクトリのソースのインクルードファイルをインクルードするときは
#include "U8x8lib.h"
じゃなかったっけ? ちなみにArduino IDEは自前ソースの同じディレクトリのヘッダーファイルのincludeは
#include "foo.h"
としないとエラーが出るけど
Platform IO IDEならどちらでも#include <foo.h>でエラーは出ない U8x8lib.h は、外部ライブラリだよ。
U8g2 に付随する簡易版の OLEDライブラリ。
質問者が U8g2ライブラリ作者なら話しは別だが。。。w LeonardoとPromicro(5v)のブートローダーって機能的に違うところとかってある? >>768
ProMicroのブートローダーにLeonardoのブートローダー焼いて使って
いるのでIDEにSparkFANの環境入れなくても使えてる
実質的には違うデバイスとして見えるくらいじゃないのかな atmega32u4を自作基板に組み込みたいんだけど、どのarduinoのブートローダーがいいのかなって気になった。みんなありがとう
今icspでブートローダーまで書き込んだけど、usbから上手く書き込み出来ないや。デバイスマネージャにデバイスは現れるけど、不明と表示が出る。書き込み自に色々なタイミングでリセットしてもダメ。 初心者熱烈歓迎スレでそんな嫌味を言ってどうするの? >>772
ありきたりだけどUSBハブとか延長ケーブルとか使ってない? >>774
本人が>>1に書いてある情報すら収集できてないっていう渾身のボケなんやない? ATmega32u4と、USBコネクタの間の配線が適切ではない、とかあるかな? v-busは5vと共通、D+とD-は両方22Ω抵抗を介してマイコンへ繋いでます。後はGND位ですね。クリスタルは16Mのセラロックを使用しました。 >>775
もちろん使ってない。
取り敢えず回路の見直しとケーブル変更、pc指し口変更もやってみる >>772
デバイスマネージャにデバイスのエントリが表示されるけど不明って出るって、
黄色いビックリマークが出てるって事かな?
だとしたら32u4が使用するドライバが見つからないってことだから、SparkFAN
なりLeonardoなりのブートローダに対応したデバイスドライバを導入しないと
ダメでないかな 電気的に逸脱したところがあると、認識は始まるけれど、ちゃんと認識できずに不明な
デバイスになることがあります。
電源が弱いとか、GNDを含めたケーブル接続が弱いとかも。
USBは本来は、クロック周波数の要求が厳しくて、セラミック振動子だと、それなりに
精度が高いものでないと動作保証ができないことがありました。(水晶の方が高精度)
今のUSBデバイスは、いろいろ工夫されていて、ホストのクロックに合わせるみたいな
しくみもありますが、32U4はそういう意味では昔のデバイスだと思います。
俺が持ってるUNO3は、本体はセラミックなのに、USB I/Fの方は水晶だし、
Leonardo は水晶を使ってます。
まだ解決してないようなら、水晶も検討してみて。 例えば1つのnanoからもう一つのnanoへUSBコネクタ介して通信するにはどうすればよいのでしょうか?
TxピンとRxピンつないでの通信は理解していますが、物理的制約でできればインターフェースはUSBコネクタだけにしたいんです。
間にPCを挟めばよいのも分かっていますがそれは無しで。
因みにダメ元でUSBのそれぞれのピン同士つないでみましたがだめでした。D+/D-逆につなげば良いってんでも無いですよね? USBはホストとデバイスでめちゃくちゃ違ってホストするのは結構大変なんや
USBに接続するデバイスはそれなりにラクだけどUSBが接続されるデバイスを作るのは10倍以上大変なので
その認識程度の場合はそんな接続はほぼ出来ないと思っていい >>783
ですよね、、USB1.1だけに絞ればと思ったりしましたが。
Mini USB Host Shield で検索して出てくるモジュールを使うと多少高いが行けるかなと、、試してみます。既に試された方アドバイス頂ければ幸いです。 USBアナライザみたいなの作りたいのかもな
まあラジオ2台あるけどトランシーバーできますかみたいな感じ 初心者だから流れが分からない
簡単に流れ教えて
あとI2Cなら楽なの? 基板のUSBコネクタはシリアル―USB変換が入ってるから途中でUSBホスト機器が必要。USBケーブルを通信に使うにしてもピンからシリアルかi2cを引き出して繋げば外部機器は不要でarduino同士接続可能。 >>786
物理的制約と明記しました。
既に筐体に入っていてUSBコネクタだけアクセスできるnanoとシリアル通信したい。筐体に穴を開ければ普通につなげることはわかっている。 ホスト機能を持ったマイコンに仲介してもらうしかない nanoやめてprominiにすれば設置スペース的には解決
つか無駄なもん付いてるnanoを組み込む理由がわからん >>792
既にできちゃってるものに何とかしようとしているから物理的制約があるんだとなぜわからんのか、わからん >>794
チップの機能的にはできるけどライブラリにUSB-UARTのドライバはないからUSB-UARTチップ(CH340か?)のドライバをフルスクラッチで書けないとできないぞ・・・ 既にできちゃってるっていっても失敗作は未完成と同じ 筐体を変えたくなけりゃあUSBホストシールド使っても無意味じゃん
USBコネクタの通信線切り離してI2Cに繋ぐのがいちばん楽なのでは >>797
いや違うんじゃね?
Nanoが埋め込まれた機器(構造変更不可、USBだけ出ている)があってそれに対してコミュニケーションをとるデバイスを作りたいが
NanoからはUSBしか出てないのでUSBホスト機能を持ったデバイスを作らなければならない(これから作るので構造は自由)
ってハナシだと思っているが 改造を加えるなら
nanoのusbコネクタ撤去しちゃえばI2Cの線2本くらい楽に出せるのでは? 中身いじるのは駄目っぽいからUSBホスト付きの中継機器作るしかないね。 元々はどういう機器なんだろ。PCに繋いで専用ソフトで機器同士のシリアル通信をバイパスしてるとか? >>781
水晶にしてみたけど、変わらなかった。
何か別の問題の様子。
ケーブルを変えたり、回路を見直してみます。 nanoが挿してあるんだから原状復帰も楽ちんなはず >>796
最初の仕様は満たしていて、後でこういう事もできないかなと言うような追加案件が持ち上がったことはありませんか? >>781
解決した。
6pinのUCAPに1uFのコンデンサを介してGNDへ繋いだら、レオナルドヲ認識して書き込みまで出来た。
試しにセラロックに戻して書き込みしてみたけど、成功した。でもこれからはクリスタルで運用しようと思う。
これでusbでスマートに書き込み出来る機器を作れるよ。
アドバイスありがとうございました。 ホストの方がこれから自由自在に作れるなら、なんなっとできそう。 >>780
win10はドライバー要らないみたい。
今回はコンデンサ着けたら認識してleonaldと表示出た。
解決しました〜 >>809
おめでとさん!
セラロックは関係なかったか。
ところでUCAPって何だったっけ? Arduino uno3とnanoはどういうものかと言うのがわかるのですが
それ以外で何がどう違うのかがわかりません
大体これくらいは覚えておけ〜位の事が知りたいです >>813
例えばleonardoとかMegaとか >>813
いろいろな種類のボードの違いをここに書くのは答える方も大変。
疑問のキーワードをgoogleに放り込んだらどうでしょ。
arduino 種類 違い
で、ぐぐったら、こんなページが出てきたよ。
https://spiceman.jp/arduino-edition/
ここに書かれてあることで、わからないことがあれば、話題にしてみては。 >>808
議論をしたくない、聞く耳を持たないやつは質問なんかしてないで
自力で解決すれば良い。
こんなスレもあるよ。
理論より答えだけがほしい質問スレ
http://rio2016.5ch.net/test/read.cgi/denki/1472870723/ >>795
ありがとうございます。ダメモトで試してみます。
因みにミニUSBホストシールドよりuniサイズのUSBホストシールドの方がまともそうです。 AVRのArduinoでSRAMが足りなくなった場合、みんな何使ってます? >>817
ありがとうございます。とても参考になりました >>783
MAX3421がのったもの以外にCH376Sがのったものも見つかりました。基本はサムドライブ読み書き用ですがなんとかなるかも。
https://www.aitendo.com/product/11765
ダメモトでAliに発注しました。 >>824
ちゃんと見てないから分かんないけど
それマスストレージをバス接続するための物でホストを制御できるようにはなって無いんじゃね? >>812
マイコンに内蔵されたusb関係の3Vレギュレーターの端子みたい。
データシートみたら、ここにはセラコン必須みたい。 >>826
はいありがとう。なるほど、内蔵レギュレータ用のコンデンサ端子なら必要ですね。
別のマイコンで同様の端子のコンデンサを、指定より小さいものにしていて、
「なんか動作が不安定」で悩まされたことを思い出しました。 ArduinoでUSBホストをやったことはないし、
ほかのマイコンでもHIDのホストはやったことがないけれど、
USBホストシールドでHIDホストをやってる人がいた
https://okiraku-camera.tokyo/blog/?p=8092
HIDだから使いようによっては、ホスト→デバイスのデータもできるかな。
Leonardoなら、HIDデバイスにもなるから、通信できるのでは。 arduino とロードセルで500g以下(少数第1位迄)が計量できるものを作ろう
としてます。
ロードセルはamazonでビーム型で1kgまで測れるやつで組んでみました。
500gの分銅で計測してみたのですが、分銅をのせたあと、取り除くと
重量表示が2~3g程度になり、0に戻りません。ロードセルがひずんだ
ままなんでしょうか?量り台を軽く持ち上げてやると0にもどるという・・・。
ロードセルってこんなもんなんですか?
安価に使えて正確に測量できるセンサーってほかにないものでしょうか。
よろしくお願いします。 そんなもん
市販のキッチンスケールでも同じ問題は起こる んなことないよ。どっかに不具合がある。ロードセル自体の不具合かもしらんけど
1kgのなら小数点第二位まで計測できるよ。実際に作って使ってるよ >>832
プログラムは秋月のやつを使っていますか? >>833
いまコード見返したら、ライブラリはこれを参考にしたかな。秋月のコードは見てないな。
他にいくつか試したけどこれがしっくり来た(んだと思うw 作ったのは数年前なんで)
https://github.com/olkal/HX711_ADC
このライブラリをたたき台にして、あと7セグ表示、ターレボタン、PCSポタンとか付けてる
いくつかライブラリがあったから試してみてわ?
>>834
ずっと電子工作やってれば中華でも良い中華と悪い中華の見分けぐらい出来るでしょ? 思い出したけど、値は結構ドリフトするよ。
HX711のサンプルレートを80SPSに出来るけど
デフォの10SPSのままのほうが実用的だと思うわ。
あとはコードの方でサンプルの取り方んお調整が必要 ×あとはコードの方でサンプルの取り方のんお調整が必要
○あとはコードの方でサンプルの取り方の調整が必要
疲れてるわ。寝る >>835-837
ありがとう。
明日ソースを見て実行してみますm(__)m。 温度、湿度、明るさを記録していました。
ただ、屋根の下で霧などはありますが雨はほぼ確実にかからない場所なのですが屋外で使っていると2年位でかなり錆びてしまいました
100Vを5Vに変換するUSB部分も含めて屋外で年単位で使うのにはどうすればいいでしょうかね? >>839
KEYENCEやOMRONへ仕様をまとめてメールしたら、工業用のセンサー等を紹介してくれます。 >>839
基板の防湿コーティングだと思う
それとACアダプタの熱がマイコンによく伝わるようにしたら結露が防げるかもしれない >>835
ソースを試してみました。
これ、いいですね。キャリブレーションが簡単にできます。
計測数値のずれですけど、配線がわずかに干渉してたみたいで、
経路を直したらずいぶん改善されました(0.5程度の表示までもどるように)。
あとは計測するときのおもりの載せる位置の問題なのですが。
ロードセルには60x60mm程度の載せ台を作ってねじ止めしていいます。
計測対象のおもりを載せる位置によって計測値にばらつきが出ます。
これを回避するには、ロードセルを2個使ってモーメントの影響を受けないように
するとかしないとだめですかね? 松下のインパクトドライバーの充電器壊れてるの見たら基板表面が透明の薄くて固いので塗装?されてた
エポキシかな? >>843
ウレタンでポッティングしてあんじゃね? >>843
アマゾンで防湿コーティングで検索して出てくるgootのはシリコン、サンハヤトのはポリビニール系樹脂だな クレ5−56とか半年毎くらいに吹き付けといたらアカンのか ■ このスレッドは過去ログ倉庫に格納されています