Arduino初心者熱烈大歓迎質問スレ part24
■ このスレッドは過去ログ倉庫に格納されています
俺が参考にしたページ今もうなくなってるみたいだったからInternet Archiveで探してきた これ便利だよ https://web.archive.org/web/20180429154440/http ://sekitakovich.klabo.co.jp/archives/4250 floatの丸め誤差を回避するには内部整数でやるしかないからな 6809で動いてるゲームのメモリ監視しててBCDの概念を知ったときは感心したなぁ ハードで持ってる機能みたいね >>25 文字列加工は面倒な感じだし商+小数点+剰余でいいのかなとか もしかしてビットシフトってこういう場合に使えるのかな…いやでも 最後は10進として四捨五入したいわけだしとか混乱してきた 誤差や四捨五入の境界がおかしいとかをある程度許すならありなのかな そもそも処理方法による重さやメモリ消費の違いについて何も理解してない ビットシフトは固定小数型と整数型の変換に使われる 100倍して…というのを2の乗数倍してみたいな AVRには浮動少数乗算命令は無いけど固定小数乗算命令は存在するから 2クロックで実行できるが精度は良くないので 本件では整数演算したほうがいいと思われ 質問させてください ProMiniを使ってちょっとした装置を作ってて、あと1bitだけフラグ管理が必要になったけど、割込処理内の分岐で使うやつでどうしてもSBIC/SBIS命令が使いたい (内蔵のtimer0を止めて余計な処理を全部削ってもかなりCPUがかつかつ、割込み含むクリティカルな処理は全部アセンブラで書いてる) なので、メモリアドレスが0x1F以下の標準I/Oレジスタにフラグを置きたい・・・が、ちょうどそういうの専用に用意されてるGPIOR0レジスタは別な事の管理に使っちゃってる そういうときに、交換ポート機能でデジタルI/O以外に切り変えているピンのPORTxレジスタの一部ビットをソフトウェアフラグ代わりに使っても良いもんですか? 例えば、ポートBの6,7ってXTAL1,2にしてるのでヒューズのCKSELで外部クリスタルが選択されてれば、PORTBレジスタのビット6,7は自由に使ってもいい? 外にも、ポートCのうちADCに使っているピン(DIDRnレジスタでデジタル入力緩衝部は殺している)のPORTCレジスタの該当ビットとかも使えたりするかな? お行儀は悪いかもしれないけど… If PB7 is used as a clock pin, DDB7, PORTB7, and PINB7 will all read 0. PB6も同様の記述があるので少なくともPB6, PB7でそういうことは無理じゃないかな PORTCでADC入力に設定した場合についてはパッと見記述は見当たらないようだが もしかしたらIDが変わってしまったかもしれませんが>>35 です >>37 ありがとうございます、ほんとうだ! 18.3.1にそう記述されていますね、見落としていました、ちゃんと読めば分かる事を聞いてすみません さらにデータシートとにらめっこしたところ、18.3の18-5と18-2をよく見ると ADCを使ったところでデジタル出力およびプルアップ接続はそのまま有効ですねこれは アナログ入力に使っているのでDDRレジスタは0ですがこの状態でPORTレジスタを1にすると内部プルアップが有効になります! なので、アナログ入力で使っているピンのレジスタは使えませんでした そして、18-2と18-5を良く見るとPVOEが1であればPORTレジスタが無視されるようなので フラグとして使えるのは…タイマーのハードウェアPWM出力に使っているポートがベストになるみたいです DCDCコンバータのスイッチング担っていてPWM出力を止める事がないポートがあるので、そちらのPORTレジスタのビットをフラグレジスタにできました! お行儀が良い使い方とは言えない気がしますが、これで割込処理でレジスタを一切使わずに処理できそうです ありがとうございました!もっとデータシートをがっつり読みます… >>35 じゃないです>>36 です 打ち間違えました >>35 さんすみません Arduinoで気軽に使えて、コンデンサーで保持するタイプのRTCモジュールはありますか? こんばんは。 Arduino UNOにHC-06を接続し、変数にBluetooth経由で書き込んだ値を格納して、それをループで読み出して実行させたいと思っています。 この書き込まれた値は電源を切っても保持したいのですが、この場合EEPROMに書き込むことになりますよね? EEPROMに書き込む際のサンプルコードなどわかれば教えてください。 ネットで調べてもEEPROMの使い方がなかなか出てこず困ってます。 >>42 Arduino EEPROM で山ほど出てきますが? 親切なんて言われると照れる。 Super Capacitor は思いつかない初心者もいるだろう。 >>44 あ、多分 Arduino EEPROM 値 保持 など検索絞りすぎてて出なかったのだと思います。 疲れてるのかな… ありがとうございます 勉強します >>36 念の為GPIOR1,2もつかちゃってるちゅうことですよね。 >>48 事故レス ああ、ごめん0x1f以下を読み飛ばしてた。 ArduinoでBluetooth(技適あり)を内蔵したボードってなにいいのありませんか? Arduinoにからめて何かビジネスしてる人いる? クラウドファンディングで検索するとマイコン系のプロジェクトが見つかるよ ロータリスイッチにATTiny13Aくっつけて扱いやすくしたユニットとか小規模なものもある 情報収集能力が低いと既存品であったり競合品に負けたりビジネスに失敗すると思う がんばれ IDE、「ボードとライブラリにアップデートがあります」のポップアップが出るのはいいけど、 コードエディタからフォーカス外すなよ! Arduinoのエディタは糞だから、VSかVSCodeつかうんや。 arduino初心者です。 今DS1307というRTCがどういったものかを知るために動かそうとしています。 https://www.elecrow.com/wiki/index.php?title=Tiny_RTC#Programming ここのサイトにあるスケッチをコピーしコンパイルしようとしたところ 'RTC_DS1307' does not name a type というエラーが出てきてしまいます。これはどうすれば解決できるでしょうか。教えて頂けると嬉しいです。 >>56 #include "RTClib.h" ヘッダファイル"RTClib.h"が、正しくインクルードされてないっぽい >>57 すみません。具体的にどうすればよいか教えて頂いてもよいですか。 ファイル→スケッチ例に「RTC」って表示されてる? ライブラリのRTClib.cpp、RTClib.h弄った? じゃ、入ってない。ライブラリの入れ方をググってくださいさようなら すみません 他のRTCのスケッチをライブラリに入れたところ治りました。 お騒がせしました。 avrdude: Version 6.3-20171130 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" Using Port : COM8 Using Programmer : arduino Overriding Baud Rate : 115200 avrdude: ser_open(): can't set com-state for "\\.\COM8" avrdude done. Thank you. スケッチの書き込み中にエラーが発生しました すみません。RTCスケッチを入れ終わりarduinoに書き込もうとしたところこのようなエラーが出てしまいます どうすればよろしいでしょうか。教えて頂けると嬉しいです。著作権の問題でしょうか? ツール→シリアルポートを見て、USBで繋げてるポートを選択してるかチェックして @USBを抜き差しする AArduino IDEを再起動する BPCを再起動する 順番に試して下さい Cツール→ボードで使用してるArduinoの種類を正しく選択してるかチェックする これも >>70 抜き差ししたところ問題なくインポートできました。 本当にありがとうございます。 あまりにも適切な解決策を教えて頂き本当に驚きです。 何故直接見なくても原因が分かるのですか?やはり経験なのですか? 予約していないのですが、よろしいでしょうか。 中華promini168の3V3を購入したのですが書き込めなくて困ってます。 以前に買ったやつは書き込めるので、ネットでいろいろ調べてみたところ、前回と今回ので乗ってるマイコンが少し違うかもしれないというところまでわかりました。 ATmegaの末尾がPだかPAだか、そういう情報をサイトで見たのですが、アドレスが行方不明になり見つけ出せません。 どなたか解決法をご存じの方いらっしゃいましたら、ご教示のほど宜しくお願い致します。 >>75 前回のとどう違うとわかっているのか書いて。 あと買った商品のリンク。 以前に買ったPro Miniはスケッチが書き込めたなら、今回のはブートローダが書き込んでないやつとか? 末尾のP、PVは電圧の違いだから関係ないと思う。 ブートローダが書き込まれてない物を買ったんじゃないかな? 「pro mini ブートローダー 書き込み」とかで調べたら沢山出てくる Arduinoを2台使ったらブートローダを書き込めるけど、USBaspを買ったほうが楽かも https://ja.aliexpress.com/wholesale?catId=0& ;initiative_id=SB_20190504060345&SearchText=USBasp USBasp https://ht-deko.com/arduino/usbasp.html ただ売られてるUSBaspのファームウェアが古いから、こっちの書き換えが必要 これもUSBaspが2台あれば楽。1個130円〜とかだから2個購入しても安い買い物 >>78 前回これで https://s.click.aliexpress.com/e/biwWRODa 今回これです。 https://s.click.aliexpress.com/e/b1fdp67q はっきりと違いがわかったわけではないのですが、いろいろなサイトの情報からそうではないかな、と思いました。しかし、その肝心のサイトが行方不明です。 うろ覚えですが、対処方法にIDEのfuse?かなにかを書き換えればいい、との記述があった気がします。 うをー送料高けぇ 50個まとめ買いかよ とゆうか動作してるArduinoがあるなら、 スケッチ例のArduinoISPを書き込んでブート書き込み機にすればいいのに Vcc ----- Vcc(3.3V) GND ----- GND 11.MOSI - 11.MOSI 12.MISO - 12.MISO 13.SCK -- 13.SCK 同じピンを繋いで 書き込み側の 10.SS とターゲット側の Reset を繋ぐ 6本のワイヤーがあればいける 作業後は別の用途で使えるしゼロ円だよ〜 >>81 だからヒューズを書き換えるにしても、ブートローダーを書き込むにしても Arduinoを2台か、USBaspが必要。>>77 のシリアル変換器じゃ出来ない FT232RLならbitbangで焼けるんじゃない? >>81 FUSEではなく、mega168無印と末尾にP/PAが付いてものではシグネチャが異なるので 通常サポートされていないmega168P/PAを使用する場合はボード情報(boards.txt)の 修正or追加が必要です。 適切な説明サイト探したがしなぷすさんはOptibootなのでProminiの古いbootloader から移行するのであればいいがもっとほかにいいサイトを見つけてあげてください。 boards.txtの変更だけで済むならどっかのGithubにあがってそう 皆様、いろいろな情報ありがとうございました。 頂いたHINTのおかげで無事解決しました。 書き込めなかった原因はシグネチャー違いでした。 AVR168は4バージョンあり、以前購入したのが 168Aでシグネチャーが1e9406、今回のが168PAが1e940bでした。 avrdude.confにプロフィールを追加することで書き込みができました。 いくつか内部クロックで動かしてみたいのがあるので、教えていただいた ブートローダーの書き込みもやってみようと思っています。 ありがとうございました。 >>88 その場合 Invalid device signature. って言って来ないの? >>88 エラーメッセージは出ないのか俺も知りたい。 >>88 mega168P定義がないAVRdudeってどんだけ古いIDEなの? 1.6.0にはある、1.0.5-R2にも... あと内部クロックでBootloader使うのはむりかも、クリスタル要です。 >>88 うちのにはどっちも書いてあった。 自分じゃ何もしてない、1.8.8。 で、エラーメッセージの件は? >>93 promini mega328p 5V/16MHz版では以下の方法で3V/8Mになったよ > ファイル->環境設定->追加のボードマネージャーのURL に以下を追加 > https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json > ツール->ボード->ボードマネージャーでMiniCoreをインストール > 内部8MHz.1MHzが選択可能になる ※レギュレータは5VなのでVccに3V注入すること ※内部クロックは正確でないので、OSCCALで固体毎に調整しないと 高速シリアルで文字化けしたりするかも知れない(未検証 Arduino Uno SMD R3を使うと何が違うん >>96 ググれば直ぐ出てくるよ。 「マイコンチップの形状が違うだけなので、開発環境(Arduino IDE)からはArduino Uno R3とまったく同じにご使用いただけます。 メインのマイコンチップATmega328がDIPではなくSMDとなっています。いざという時にメインチップの交換が簡単にはできないモデルです。 Arduinoとシールドの間に空間が生まれるぐらいしかメリットが無いので、単にUnoを使いたいという方は通常モデルをオススメします。ということで長期的に在庫を持って販売すること考えておりません。」 https://www.switch-science.com/catalog/1073/ 安くならんのか? 接触不良減らんのか? メリットちゃうんか? 石だけ変えるとか要らんと思わんか? ボードごととっかえやろ? 中華互換機だとSMD版だけA6-7が増えてるのがあるよ。 たしかSMD版はDIP版よりピンが増えてるはず。 もちろん純正品はSMDでもDIP版と変わらない。 >>98 なに発狂してるんだよ? オリジナルの会社が、UNO R3より少し空間ができるくらいしかメリットが無く長期販売のつもりは無いっ言ってるじゃん。 それだけのこと。 >>99 prominiみたいに基板の変なところに引っ張ってきてランドあるん? (ProMiniみたいに) それともコネクタに並んでるん? >>98 中華UNOなら20個買える値段でわざわざ話題にする意味すら分からん。 ×UNO ○NANO UNOは無理やね、無駄にバカでかいしw >>101 連投失礼、 keystudioのはA6-7ついてなかった。 よそ様のwebだが、 https://clauduino.i-networx.de/e_boards/boards04.html こんなやつ。 アマゾンでは取り扱いが終わっててリンク切れだった。 prominiのA4,A5はI2Cでよく使うのに変な場所にあるなーと思ってたら A2,A3と接続してる人がいて目からうろこだったわ mega328P-AUなら基板に余裕あるから端っこにA4-A7並んでるのもあるね >>106 >A2,A3と接続してる人がいて目からうろこだったわ え?A2A3でI2Cで出来るの?どゆこと? 質問失礼します。 Arduino UNOでBluetoothモジュールを接続し、ペアリング済みデバイスが近づいてきて接続出来たらLEDをON、ペアリング済みデバイスが離れていって接続解除されたらLEDOFF、のようなものを作りたいと思います。 しかし調べてみるとシリアル通信周りのコマンドしかなくて、出来ないのかなぁなんて思っています。 使用するモジュールはHC-06か05です。 お知恵拝借させてください。 よろしくお願いします http://www.electronicaestudio.com/docs/istd016A.pdf 10〜11ページにGet the module working stateってある。ATモードで使えそう。 持ってないからわからないけどw コマンド: AT+ STATE? レスポンス: + STATE:<Param> パラメータ: “INITIALIZED” “READY” “PAIRABLE” “PAIRED” “INQUIRING” “CONNECTING” “CONNECTED” “DISCONNECTED” “NUKNOW” シリアル通信のモジュールつかまえて >シリアル通信周りのコマンドしかなくて って言われましても…。 一部のハードディスクドライブはインターフェイス以外にアクセスLEDのランドとかあったし このモジュールもLinkやActiveのLEDか空きランドあるかもと思ってたんじゃね 最近の中華328 prominiのCPUがAUでもなくMUでもない"MEGA328P U-TH"になってるんだけど https://ae01.alicdn.com/kf/HTB1.yyuR4TpK1RjSZFKq6y2wXXa3.jpg 詳細わかるかたいます? >>115 ありがとうございます。 内部発信器の温度特性が悪いチップみたいですね。 9600bpsで文字化けするとは… リモコンも寒いと反応が鈍いとか起きそう 温度見てリニアにOSCCAL変化させる対策も考えられるけど 素直に8M版使えということかw ちょっとショクです Aruino UNOでリモコンを作ったのですが40mAでは流石信号が弱すぎてやや遠くにあるシーリングライトまで届きません そこで、もっと電流を流したいのですがどのような方法が簡単でしょうか? また、ちょっとネットを調べていて記事が見つかったのですが、MOSFETを使えば40mAの制限を超えられるのでしょうか? MOSFETにはコンデンサーのような役割がありますか? http://asukiaaa.blogspot.com/2018/05/arduino.html NPNトランジスタ使っても良いしね1A位狙っちゃえ >>117 そのリンク先の記事のMOSFET回路だけど、LEDのVfは定電圧特性だから3つ並列にしても電流制限抵抗が同じ100Ωだと結局トータルでは同じ40mA位しか流れない。 また個々のLEDでVfにもバラツキがあるから電流にも偏りが出そう。 だからLED個々に抵抗を1本ずつ入れて、抵抗値も半分とか3分の1とかにして更にトータル光量を稼ぐと良いと思う。 あとAVRに詳しくないけど、気分的にはMOSFETのGS間に数10KΩの抵抗入れてマイコンのリセット直後に端子が入力モードになってる時にGND電位にしておきたいな。 Vf1.32vの赤外線LEDを3つ直列で使ってるわ https:/www.aliexpress.com/item/-/32951365819.html トランジスタでも余裕 >>121 秋月とか見ても赤外LEDってVfが低いのね? だったら抵抗が1本で済むから直列がいいな。 二個直列で抵抗入れなくても余裕 パルスデューティは1/3だけど >>123 えっ、抵抗無しって怖過ぎる。 デューティ調整してるとは言え下手するとLED死んじゃうんじゃない? 赤外線LEDでリモコン作るときには基本オーバドライブでよい ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる