Arduino初心者熱烈大歓迎質問スレ part33
レス数が950を超えています。1000を超えると書き込みができなくなります。
リードタイム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進数も追加とか訳分からん。 プログラムでは使ったことないな。UNIXのchmodぐらいでしか見ないし。 ロングタイムアゴー
語長12bit、18biの世界がありました
4ビット縛りよりむしろ3ビット縛りの方が自然に見えるかも
実際見たことないが 質問なんですが、一つのピンだけ内部プルアップ抵抗が壊れるケースってあります?
今そんな状態なんですが 16進が普及する前に瞬間的に8進が使われたが
結局3bit単位はコンピュータと親和性が低くてすぐ廃れたんだろうな。 >>896
昔は3の倍数のワードのマシンが主流だったから。
pdp-8が12bit/word pdp-7が18bit、
NECのacos-6はバイト9ビット、36bit/word >>897
36bitのPDP-10がないのはなぜ?
TCP/IPになる前のARPANETでは最も接続数の多かったマシンがPDP-10らしいよ >>886
ARMのArduino互換機だとSerial.printf使えるの多いね
そしてARMの場合、%fで倍精度浮動小数点が使えたりする ちなみにビルゲイツがBASICを開発するのに使ったコンピュータは
大学にあったPDP-10で
ビルゲイツの相方のポールアレンは死ぬまで
実際に動作するPDP-10の互換機を所有してたらしい あと、vsprintfやvnsprintfが使えるやるならSerial.printfは簡単に作れる
#include<stdarg.h>
char str_buff01[256];
void printf1(const char* format, ...)
{
va_list ap;
va_start(ap, format);
vsnprintf(str_buff01, 1024, format, ap);
va_end(ap);
Serial.print(str_buff01);
} あ、
vsnprintf(str_buff01, 1024, format, ap);
ここ、1024ではなくて256ね
直すの忘れてた finger思い出した
おじいちゃんですいませんねえ 8080の機械語が2bit+3bit+3bitだったな
http://my-web-site.iobb.net/~yuki/wp-content/uploads/2018/04/201804_sa20_Instruction-code1.jpg >>908
3の倍数のbitの話題だし、PDP-11は16bitだから除外されてるんだろうね
PDP-11は16bitの頃のUNIXのターゲットマシンだったから有名だね
ちなみにUNIXを開発したケン・トンプソンは
現在標準になってきてる文字コードのUTF-8も開発してる 8bitPC時代には既にメモリダンプと言えば16進数だった。
3bitの倍数のマシンのメモリダンプは8進数だったんか? 暗記の得意だった人は16進でハンドアセンブル、理論的思考が得意な人は233でハンドアセンブルだったな(おれのまわり) そういえばUNIXのダンプコマンドはdumpじゃなくてodだったな(デフォルト8進) で、知らずにdumpコマンド何度も打って「オマエ何しようとしてるんだ?」っていわれた遠い昔… 質問失礼します
ドローン用のA2212モーターとESCを買ってarduinoで回してみたんですけど、ドローン用なので買ってから逆回転出来ないことに気づいてしまったんですが、アルディーノで両回転とも制御できるお勧めの安いesc、モーターなどありますでしょうか?3セル(11.1v)で探してます かつてメモリや磁気ストレージが何よりも貴重だったのだろう
メモリ数キロワードくらいなら12ビットアドレシングの方が僅かだけど有利なる
12ビットCPUには存在意義があったんだろうな
intとかポインターが12bitというのもアレだけど
6502(AppleII ファミコン)、6809はネィティブに
8bitのアドレシングモードがある
昔のコンパイラとか苦しめた事だろう(しらんけど)
ASCIIコードが7bit/8bitだから3bit 倍数が消える原因の一つになったかな arduino, RDA5807, SSD1306でFMラジオを作ってます。
これにダイソーの300円スピーカーのアンプ部分(8002A)を
arduinoからトランジスタS8050(500k〜10kΩで試しました)でオンオフしています。
質問ですが、アンプを繋げるとarduinoが暴走?してしまいます。音はならないし、ボタン入力も効きません。
アンプを別電源、またはarduinoに繋げない(音は鳴りませんが)と正常に動きます。
症状としては、起動時にピンをHIGHにしてトランジスタ経由でアンプの電源をONにしてますが
テスター計測で100mA近く流れています。アンプ単体で通常は6〜20mA、
FMモジュールが20mAぐらいだと思うので、何かの原因で流れ過ぎかなと思います。
アンプの電源部には470uFの大きいコンデンサが付いてます。これに最初に100mAぐらい流れるのかな?
回路図は表示部が違いますがこのサイトのように、特段変わったつなぎ方はしていません。
https://xn----7sbhgu4ahbanfnng.xn--p1ai/%D0%B1%D0%BB%D0%BE%D0%B3/fm-%D0%BF%D1%80%D0%B8%D0%B5%D0%BC%D0%BD%D0%B8%D0%BA-%D0%BD%D0%B0-arduino-%D0%B8-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5-rda5807/
FMラジオモジュール・SSD1306にはarduinoからI2Cの2本、電源から各線2本
FMラジオモジュールからアンプに音声出力 Pentium〜Core2なんかもメモリバス節約されてたりするからな
32ビット分フルで実装されていなかった >>909
PDP-11も8進数体系でしたね11/34のコンソールキーパッドの数字は0-7だし。
トグルスイッチのある機種(11/40)は3桁ごとに色が分けられてきれいだった。 >>916
どのピンから電源とってんの?arduinoの種類は? >>916
電源を別にすれば動くなら、答えはもう出てると思うけど
Arduinoの3V3を供給してるパーツの定格を調べてみたら?
リンク先の回路図と違うならそれも示さないと詳細は不明 3.3vのpro miniです
arduino, RDA5807, SSD1306はそれぞれバッテリーから直で取ってます
アンプは+がバッテリー直、GNDがS8050のコレクタ、
ベースはarduinoのデジタルピン、エミッタはバッテリーのマイナスです 回路図書けない人か。
電源と言ったりバッテリーと言ったり、まさにそこがボトルネックだと思うけど
そのあたりの重要性が分からない人のようだ。 >>923
言葉尻はいいですから、原因はわからないんですね? >>922
アンプのGNDレベルが0.7V上がってしまっているので不都合が生じてるんじゃないかな
S8550でプラス側をスイッチしたほうがいいよ 電源だ言うとるやろ
なのにあんたときたら回路図も出さない上に電源と言ったりバッテリーと言ったり
肝心な情報がブレブレじゃねえかと言ってんのに言葉尻だと?
馬鹿はそこで1人で吠えてなよ なぜ回路図書け言われると逆切れする奴が多いいんだろうね>>924
それともいつも同じ奴なのかな? >>925
あ!なるほど!PNPを使ってみます!ありがとうございました
>>926
原因がわからないなら私と同レベルじゃないですか。仲良くしましょうよ >>927
回路図ではキレてないですよ。
全体的な文章を見て反論いたしました。 横からだけど
ほとんどの人は>>916のリンク先見て3V3だなと思う
そのあと>>922に字面でごちゃごちゃ書かれてもいちいち見ないよ
後出し、回路図出さないの典型的な悪質問 >>932
その上逆切れのおまけつき>>924
最近こんなんばっかだよな 最初の質問で情報全部出せる人は稀だし、そんな人は自力で解決出来るだろう。質問しても答えてくれないと妄想で変な想定して的外れな回答する人が出て来たりするから、結局解決しないんだよね。 で、回路図はまだなの?
何を回答しても後出ししてきそうだから回路図が出るまではみんな傍観するよねw 別に悔しくはないんだろ
大部分の人は>>922の返答の仕方を見て回答する気にならなかっただけ >>937
で、解決したのか?
吠えてないで、ちゃんと事後報告しろよ 変なやつなんてゴロゴロ居るんだから気に入らなきゃNGして関わらなきゃ良いのに >>941
正論だけど、5chの楽しみ方からはズレてる。 初心者質問以前に明らかに人格おかしいぞw
解答得られない事が明白になったから
IDころころの荒らしパターンなんだろうな >>916が貼ったロシアのサイトは販売店で、場所はウクライナのすぐ東じゃん。
その店に罪はないんだろうけど、何だか複雑だな。 >>944
暇つぶしか何か知らんがでっちあげの質問みたいなのがたまにあるよね >>945
それは大賛成だけどさ、問題は解決したのかい? なんか荒れてるな
原因わかっちゃったかも、NPNをPNPに変えても同じだと思う
足りないものを足すかトランジスタをMOSFETに変えれば解決かな… まあ自分で作れそうにないものを人に聞きながら作ろうとする時点で
センス無いよ おれは極力教えてもらわないで作る 癖になるからね レス数が950を超えています。1000を超えると書き込みができなくなります。