Arduino初心者熱烈大歓迎質問スレ part33
■ このスレッドは過去ログ倉庫に格納されています
>>790
>PCとSerial接続していると、
これを文面通りに解釈するとTX,RX を接続したことになるけど、これで電源電圧の変化は測定できないくらい僅かなはず。
ひょっとしたら、PCとUSBコネクタで接続した場合を言ってるんだろうか。 回路もスケッチも具体的な数値変動も不明だと正常か異常な動作かもわからん。答えようがない。 >>795
USBコネクタを挿すとPCから5Vが供給されるので勝手に電源が切り替わっちゃうので困るって話か。
それはUSBコネクタ使わないで調整するしか無いね。
ボードのTxに情報出してるみたいだから、PCに接続したUSBシリアルモジュールを使って、ターミナルソフトでその情報を読むのが普通だと思う。
別にUNOのボードがあればArduino IDEのシリアルモニタでも同じことができる。 >>796
USBシリアルモジュールでやってみます。
ありがとうございました。 Arduinoを使ったNi-MH電池充電器の定番ってある?
別にマイコンを使わなくてもいいけど、シンプルな部品構成でできたら良いな 高速充電対応のNiMHワンチップコントローラーが
今の時代でも在庫あると思うけど・・・
足も8本くらいじゃないかな
NiMHの終了条件は電圧の変化率(dV/dt)が多いと思うが
妥当な設計と試験を考えたら難しいよ
それから充電中の本体稼働の余分の電流こと考えたら既成のパッケージしかないかな
あと簡単というなら市販のLi充電モジュールではだめなんかな? というかNi-MHの充電って、抵抗で電流制限してタイマーで適当に止めればいいだけなのね >>802
0.1cまでならそれで良かったはず、ニカドも似たような感じだったよな確か
1cとかで充電する場合は充電終期の温度上昇が大きくなるんで温度を直接測る代わりに-儼検出するんだった気がするよ
充電中は監視を怠らずご安全に MAXIMはかつてMAX712/MAX713とかいうのを出してて当然-ΔV/ΔV=0も見てるし温度監視用サーミスタ接続端子も付いてた、ただ16ピンだったしすでに入手が困難、それがDS2715になったのかな
中華では8PinのIC(型番不明)が乗ったモジュールが売られてる、充電電流とかセル数とか設定できるらしいが充電完了(満充電)をどこまで見てるかはよくわからん ArduinoでRCプロポのPWM出力エミュレータみたいなものを考えています。
出力先はESC基板です。
スティックを動かしたときに
パルス幅がmin1000〜1500〜max2000
と変化するのですが、
パルス幅2000で5秒
パルス幅1000で2秒
と出力したい。
digitalWrite(CH4_PIN, HIGH); // ピン4をHIGHに
delayMicroseconds(2000); // パルス幅分停止させる
digitalWrite(CH4_PIN, LOW); // ピン4をLOWに
delay(20);
digitalWrite(CH4_PIN, HIGH); // ピン4をHIGHに
delayMicroseconds(1000); // パルス幅分停止させる
digitalWrite(CH4_PIN, LOW); // ピン4をLOWに
delay(20);
と考えたのですが、時間軸が・・・・・。
ご教授お願いします。 パルス幅の単位はusなのか?
Lのパルスは20us固定なのか?
仕様をきちんと書け。
5秒/(2000us + 20us) で回数求まるだろり >>808
>>809
パルス幅の単位はμs
LOWは20μs固定です。
ソースの書き方がわから人です。 >>809
>>811
ありがとうございます
やってみます ID:1kSFPvNs お前優しいな
でもぐるぐる回さんほうがエエと思うで >>808
https://qiita.com/suzukinori/items/939cc9f49e535c4eadd7
例えばこういうの見ろや。
808スタイルで行くと応用効かないぞきっと。
808スタイルはこんな感じ?
まずはこれやって
次これやって
その次なんだっけ?
って地図もなくエベレスト登るやり方
理想は
市販装備品どんなのあるか網羅的に把握
対象の場所の先遣隊が残した地図をもらい受ける
今回のでは
一定パルス出す方式バリエーション調査
特定の時間を得る方法の調査 をまずやるべき
で、調査の結果これとこれの組み合わせがベスト?って他人に聞けば良い。 >>814
そんなことしてるからいつまでも登れないんだよ。
ベストの方法なんて探しても無駄。 >>816
やってみてトライするから中途半端なのよ
どうせこんなことメインでしつづけるわけないだろ?最短のベスト解すぐに探せる。一行ずつ実践なんて不要
>>808はこう聞けばよかったんよ
ArduinoでRCプロポのPWM出力エミュレータみたいなものを作りたい。(これが目的)
スティックを動かしたときに
パルス幅1000で2秒
パルス幅2000で5秒
パルス幅1000で2秒
と出力したい。
コードの書き方はやったことがない(これが目的じゃ無い、色々別のものもやる予定なし)
ですが、どんなコーディングするのがスマートですかね?
digitalWrite(CH4_PIN, HIGH);や
delayMicroseconds(2000); や
delay(20);はかろうじて理解したレベルです。
ご教授いただけたら嬉しいです。 >>815
パルス出すだけならそれでいいけど
最終目標はプロポの出力エミュレータなんだから
要求が複雑化するとすぐついていけなくなるぞ
すぐにおもいつくのは
・PWM周波数の微調整
・スティックのリニアリティ(BカーブなのかAかCか
・ヘッドアップ、ヘッドレススイッチ(上下左右方向の逆転
・センサーを追加して脱調検出 あと8chとかだとマイコンなら1個で済むけど、555なら8回路いる 更にそれぞれが同期しない問題もあるけど、トリガでうまいことやればそこは解決しそうな気もするけど
捨て案を育てても無駄なので放棄
555は本当にニッチな場面でしか出番が無いよ 更にそれらの設定をプロファイルとして記憶して簡単に呼び出し
フタバxxx型のエミュレーション
タミラxxx型のエミュレーション
と切り替えられるようにと要求があがってくると、ボリュームで設定してた555はお手上げだろう ベースのノコギリ波をひとつ発振させて
後はチャンネル分のコンパレータを用意して
D/A繋いでパルス幅の電圧を出力してノコギリ波とコンペアすればいい 555でできるのは簡単なサーボテスターまで
プロポのエミュレーターとか無理ゲー >>817
だから、「パルス幅2000」って何だよ?w
スティックの動きを検出したら
2秒間パルス幅1000
5秒間パルス幅2000
2秒間パルス幅1000
終わり
にしたいの?
そうじゃない気がする。 シリアルモニタの起動時のウインドウサイズは
変更不可ですか?preferences.txtを弄っても
起動後にデフォ値に戻ってしまいます arduino ide下部のメッセージ出力ウインドウも消せない あれはOutputペイン左上の[Serial Monitor X]の[X]をクリックで消す。
Outputペイン自体は、ペイン右下のウインドウマークアイコンクリックで消す(トグル)。
何にせよ、シリアルモニターが別ウインドウでないのは非常に使いづらい。 >>833
32bitラズパイに入れてみたいのに残念 >>819
何をそんなに必死になってるんだ?
まあ、Bカーブ使うなり、AやCなら二連にしたらどうだ?とか、
まてよ、オペアンプ対数掛けてやったらどうだ?とか、
微調整とか逆転とかは、半固定やスイッチで実現できるかもな
とか、シリーズに送るなら、FETで切り替えてパルス生成部は一個で間に合わせられないかな?
とか、考えてみるのもいとをかし。
どうせ趣味なんだら
PSoCだったら、そういうアナログ併用の遊びもマイコン内部でできたんだろうな。 555の等価回路観てるとあれは神が人類に与えたものだと思っちゃうよね。
アナログも数値計算でできてアナログよりも正確に簡単に等価な事がプログラマブルになってる今を観てるとあれは神が人類に与えたものだと思っちゃうよね。
天地創造の2つのシーンに生きてる幸せだわ vsコードでUploadの時ワークスペース内のスケッチが全部選択に現れるのはどうにかなりませんか? >>835
Ubuntuを使えw
Raspberry Pi 4に対応してるのは20.10からだけど
俺はLTSじゃないと使いたくないのでUbuntu Server 20.04入れてる
今年の4月か5月ごろに22.04LTSが出るはずだからそれでもいいかもね
デスクトップはMateにしてる Arduino Nano 33 BLEがスイッチサイエンスで売ってるけど
ピンヘッダ実装済みの方はあるけど、もうピンヘッダなしの方は在庫0になってるね
Arduino Nano 33 BLE Senseはまだあるけど Arduino Nano 33 BLEのチップのnRF52840はCortex-M4なんだね
nRF52840のページみたらCortex-M4 with FPUになってるので
単精度のFPUがついてるCortex-M4だと思われる WiFiが使えるArduino Nano 33 IoT待ちの人も多いのかな? なんだArduino Nano 33 IoTは
SAMD21でCortex-M0+でFlashもRAMも少ないのか
Arduino Nano 33 BLEと同じマイコンかと思ってた 表面実装の328pや328pbはいつになったら購入できるんだろう。
一年かけてやっと基板作ったのに、どこにも売ってないよ( ノД`)… ATMEGA16U2-MUなら、digi-key に在庫たくさん リードタイム52週ってのがぜんぜん消えないなー
3月くらいには40週とかになってると思ってたのに すいません。間違いました。
初投稿です。
Maker nano(秋葉原の秋月電子で購入したArduino nanoの互換機)とHC-05(amazonで購入したBluetooth通信モジュール)の通信、接続がうまくいかず困っています。
・やりたいこと
→AndroidスマホとArduinoで通信してラジコンを作りたい
・やっていること
まずピンを接続し、ATモードで親機、子機の設定(今回は子機に設定)、通信速度の設定を完了させました。空スケッチをArduino側に送ってシリアルモニタを表示させ、androidスマホのBluetoothコントローラーアプリをいじると、スマホ側で入力した内容がPC上のシリアルモニタに表示するのは確認できました。
さらにArduinoのTXの表示LEDが、スマホで送信するたびに点灯する様子も確認できました。
Bluetoothコントローラーアプリはgoogle playで入手した“Arduino Bluetooth”を使用しています。
次に試験としてandroidスマホ側で0を送信したらLEDが消灯し、1を送信したらLEDが点灯するようなスケッチを作りました。そうするとスマホで送信した内容は一切シリアルモニタに表示されないどころか、TXも光らず、接続できていないように思いました。
試しにArduinoに接続したPCのシリアルモニタの送信欄に0や1を入力すると、LEDが点灯したり消灯したりしました。
・聞きたいこと
接続の方法がおかしいのか、スケッチの内容がおかしいのか知りたいです。空スケッチの状態ではスマホで入力した内容がPC上のシリアルモニタに表示されていたため、つながってはいると思いますが、これ以上調べても何も出てきませんでした。
以下、試験用で使用したスケッチの内容です。
#include <SoftwareSerial.h>
SoftwareSerial MYport(0, 1);
int BTdata;
void setup() {
pinMode(12, OUTPUT);
Serial.begin(38400);
MYport.begin(38400);
Serial.println("Connect-Complete");
}
void loop()
{ if (MYport.available() > 0) {
BTdata = MYport.read();
if (BTdata == '0') {
digitalWrite(12, LOW);
Serial.println("LED消灯");
}
if (BTdata == '1') {
digitalWrite(12, HIGH);
Serial.println("LED点灯");
}
}
delay(10);
}
接続はhttps://novicengineering.com/arduino%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6hc-06%E3%81%A7android%E3%81%A8bluetooth%E9%80%9A%E4%BF%A1%E3%82%92%E3%81%99%E3%82%8B/の「手順」の方法でやっています。
よろしくおねがいします。 スマホ側(androidスマホの
Bluetoothコントローラーアプリ)→ PC(シリアルモニタ)
の確認に使ったソースはどのようなものですか? 今回のはAndroidとモジュールの間の問題だろうけど、デバッグ用にBTの受信生データは全部シリアルに流した方が良いと思う。 https://imgur.com/EvZkCJE
これがandroid側で設定した送信アプリです。
緑が1、赤が0になるようにしています。
https://imgur.com/m0uvYSl
これがarduinoに空スケッチを送った時のシリアルモニタです。
ボタンを押すたびに0,1を繰り返しています。 >>856
後者の動作をされた時のソースコードは
どういう内容になっていますか?
空スケッチ コピペ元のURLでも構いませんが。 https://imgur.com/Rto4Eap
この動画のように、PC上のシリアルモニタの送信欄で0,1を入れれば
LEDが点灯したり消灯したりしますが、スマホのアプリ上で操作しても
何も変わらないです。
スマホからの送信データをシリアルモニタに書き込んでいないのが問題でしょうか? 後者のコードは以下の通りです。
void setup() {
}
void loop() {
} >>858の動画は>>853の試験用のコードを入れたときの動作です。 >>856の二つ目の図は、com4になっています。
859のソースコードの他に、com4を指示する情報に
心当たりはありませんか?どちらで定義されましたか? ループバックするわけないだろとコードよく見たらソフトシリアルでハードシリアルと同じピン使ってるっぽい。BTモジュールに繋がってるピン指定しろよ。 応答文字列がBTモジュールに送られても良いなら、ソフトシリアル消してハードシリアルでBTモジュールと通信。 SoftwareSerial MYport(0, 1);
そのまんまじゃん
Bluetoothの接続どこ? btもじうる って使ったことないんやけど
btもじうる のTXをあるづいののrxに繋げるの?txどうしがただしいの?(^p^;) >>865
Arduino TX - レベルシフター - HC-05 RX
Arduino RX - レベルシフター - HC-05 TX >>866
ありがとうございます!!!!!!
866さんのように接続したら
スマホの操作がarduinoに送信されました!!!
初歩的なミスでした。
みなさんありがとうございました。 解決してよかったよかった(^p^)
しかしあれか。「PC上のシリアルモニタ」が
シリアルターミナル(通信の主体)じゃなくて、
機器同士の通信を傍受して観察 = モニタリングするソフトだったってことか。
開発環境にそんな機能まで備わっているとは いろいろ便利そうですな、
活用すればデバッグも捗りそうです。
Arduino、なかなか洗練された環境ですなぁ・・・ ぼくくらいになってくるとVSCもPIOも経由して
Arduino IDEに回帰して+コンソールにメッセージ出力さ 初歩的な質問ですが、2進表記はマニュアルには"B********"となっていますが、
"0b********"とかでも使えるみたいです。正式に対応していないだけなのでしょうか。 >>871
回答有難うございます。
0bはArduinoでは使えないのかと思ったのですが
使えるようなので、どうしてマニュアルに記載されて
いないのかなと思いまして。
0bに関してはCの正式な表記では無いのでちと古いCでは
対応して無いものが多いと思います。 Cの表記ではないよ。GCCローカル。
あるいはC++14から。 >>875
そう。なんでCで2進表記を定義しなかったのか。BASICでもそうだけど、MSX BASICは&Bとかいう方言はあったけど。
ペリフェラルの設定とか、基本は2進で書いたほうが分かりやすい。 >>875
高級アセンブラに定義が無いとは思えんが? 気のせいだよ。実際には、1と0がずらずら並ばれるより
16進の方が読み易いし、判りやすいよ。(慣れれば) バイトマシンだしね。ヘキサとオクタルがありゃ、十分でしょ?と。
コンパイラもなるべくコンパクトに。エラーチェックや最適化も最小限でプログラマの意思がなるべく尊重されるようにしようっていうスタンスだったしね。
だから昔はlintがお友達だったし、b++;とb=b+1;とb+=1;は意味が違っていたりして。 Arduinoで0bの方で使って見たけど別に問題出て無いようなので
使っていきます。有難うございました。 C++で使えてarduinoで使えないものはないと思うよ
知らんけど arduinoではsprintfで小数点使えないとかなかったっけ >>885>>886
ArduinoっていうよりArduinoIDEが使っているコンパイラはGCCそのものなので、
構文レベルではC++が当たり前に使える
ただし、sprintfなんかはライブラリ関数(stdcかな)なので、リンクするライブラリに
応じて使える/使えないや使い方が違ったりする Arduino IDEになんで「ビルド停止」が無いんだろ?
2.0もついてないし、みんな使わないの?
「あ、コード間違えた」と思っても、書き込み終了まで待たなきゃいけないし
そういうときはタスクマネージャーでarduino-builder.exeを強制終了させてるんだけど 桁合わせでゼロ入れたいのに
8進数扱いになるのがつらい
0xに合わせて0oにでもすりゃよかったのに 8進数なんて要らないのにな。
4進数も追加とか訳分からん。 ■ このスレッドは過去ログ倉庫に格納されています