X



トップページ電気・電子
1002コメント360KB
Arduino初心者熱烈大歓迎質問スレ part30
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001774ワット発電中さん
垢版 |
2021/02/18(木) 01:01:36.39ID:hm9MM2LM
http://www.arduino.cc/

【質問者心得】
・スレに一応目を通してから質問しましょう
・回答者はエスパーではありません。状況が分かるように詳しく書きましょう
 詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです
【回答者心得】
・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう
・節度ある初心者さんには、特に優しくね

前スレ
Arduino初心者熱烈大歓迎質問スレ part29
http://rio2016.5ch.net/test/read.cgi/denki/1601349163/

過去スレ
Arduino初心者熱烈大歓迎質問スレ part28
https://rio2016.5ch.net/test/read.cgi/denki/1591734520/
Arduino初心者熱烈大歓迎質問スレ part27
http://rio2016.5ch.net/test/read.cgi/denki/1585316143/
Arduino初心者熱烈大歓迎質問スレ part26
http://rio2016.5ch.net/test/read.cgi/denki/1579146318/
Arduino初心者熱烈大歓迎質問スレ part25
http://rio2016.5ch.net/test/read.cgi/denki/1568358922/
Arduino初心者熱烈大歓迎質問スレ part24
http://rio2016.5ch.net/test/read.cgi/denki/1554776918/
Arduino初心者熱烈大歓迎質問スレ part23
http://rio2016.5ch.net/test/read.cgi/denki/1541233445/
Arduino初心者熱烈大歓迎質問スレ part22
http://rio2016.5ch.net/test/read.cgi/denki/1534549073/
Arduino初心者熱烈大歓迎質問スレ part21
http://rio2016.5ch.net/test/read.cgi/denki/1527252804/
Arduino初心者熱烈大歓迎質問スレ part20
http://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/
0852774ワット発電中さん
垢版 |
2021/06/02(水) 17:42:33.03ID:95IsdyQL
コートスプレーならハヤコートとか。使ったことないけど。
0853774ワット発電中さん
垢版 |
2021/06/03(木) 03:05:36.86ID:k5rsiV5/
Arduinoに直接関係はないのですが、seeed のGrove-RS485
を入手して遊んでいますが、TXDENを操作しなくても送信と受信が出来るんです。
https://i.imgur.com/vDoHqod.png
これが回路図なのですが、ピンクで囲んだ部分。
*REとDE が 5Vに接続しています。
トランシーバーは、この場合、送信は出来て受信は出来ないのかな
と思っていましたが、両方問題なく出来てしまいます。
https://www.maximintegrated.com/jp/products/interface/transceivers/MAX13487E.html
この中に、「AutoDirection制御付き」という事があります。
これがつまり、TXDEN の操作は必要ないという機能なのでしょうか?
もし、そうなら、この機能の注意点とかありますか?
0854774ワット発電中さん
垢版 |
2021/06/03(木) 05:53:31.53ID:HSzc3Gp4
>>853
その回路図のMAX13487Eのシンボルが間違っているだけ

MAX13487Eのシンボルを作るのが面倒くさかったのでしょう
0855774ワット発電中さん
垢版 |
2021/06/03(木) 06:33:05.35ID:HSzc3Gp4
俺みたいな爺さんの戯言だけど
回路図を描くのは基板製作の為に行うネットリスト生成ツールとしか考えていない人が多い気がする
回路図を他人に見てもらうという考えが無いんだな
0856774ワット発電中さん
垢版 |
2021/06/03(木) 08:58:45.19ID:nUbGv+oW
カメレス
>>752
> 水晶ごとに発振周波数の前提にしている負荷容量があること、外付けする容量ではなくICや実装時に結果的に発生する容量も込みであること

肝心な事が抜けている。
負荷容量は、水晶のL成分と負荷容量のC成分で共振回路を形成する。
コルピッツ発振回路で調べるといい。

余談
負荷容量、俺的には水晶屋がマイコン屋に分かりやす〜く説明するための造語だと思ってる。
あの容量は共振回路の一部であって、負荷ではないからさ。
0857774ワット発電中さん
垢版 |
2021/06/03(木) 17:30:33.52ID:H7iU4WBr
ProMicro安いの探してるんですが、
蟻/item/32788040866.html

これ、ProMicroですよね?写真を見る限り、32U4乗ってるんだけど、
ATmega328とも書いてて、ボード選択ではMicroを選んでる。

どっちなんでしょう?
0859774ワット発電中さん
垢版 |
2021/06/03(木) 19:17:29.21ID:SJRDSdKo
うわ983円もすんのか、pico買えちゃうじゃん
前は300円台だったのに3倍近いな
0861774ワット発電中さん
垢版 |
2021/06/03(木) 20:01:27.08ID:I3YV4oQ0
124円のdigisparkで充分だったのでProMicroは買わなかった
PC用のTVリモコンとして今も使ってる
0865774ワット発電中さん
垢版 |
2021/06/03(木) 21:37:43.48ID:th0ZWRTu
>>857>>858

TZT Pro Micro ATmega32U4 5V 16MHz Replace ATmega328 For arduino Pro Mini With 2 Row Pin Header For Leonardo Mini Usb Interface

我らTZTが販売するPro Micro!ATmega32U4マイコン搭載!こちら5Vで16MHz動作のバージョンです!!
Pro MiniなどATmega328Pが乗ったボードから乗り換えにもオススメ!!レオナルドと同じ小型のUSBコネクタ!2列分のピンヘッダ付き!

と書いてあると思う。
0872774ワット発電中さん
垢版 |
2021/06/04(金) 14:48:01.86ID:U0MED8jz
>>871
「素晴らし理屈を発見した俺偉い頭良い」は>>868に対して言ってるのですよ

人にバカというものがバカ。これは名言ですよ。
これに似たもので「ディベートに於いて誹謗中傷はご法度」というものもあります。
なぜなら誹謗中傷したほうが、結果不利になる。結局、不利益を被ることになる。
日本は幼少期からディベートについてもっと学習させたほうがいい。
0873774ワット発電中さん
垢版 |
2021/06/04(金) 15:08:55.94ID:4rvMzo4B
「人にバカというもの」はバカだといってるのでそいつ自身もバカに他ならない。
「人をバカ呼ばわりしてはいけません。」と、普遍的な表現を使えばいいだけのこと。
勝手に「名言」扱いしてよく考えずに使うから結局負け犬の遠吠えになる。
0875774ワット発電中さん
垢版 |
2021/06/07(月) 08:31:07.48ID:TLCAOqME
7segとネオピクセルとロータリーエンコーダーを同時に使用したいです。
7segはダイナミック点灯をms2タイマーで制御したいのですが、ロータリーエンコーダーも出来ればタイマーで動きを感知したい。
複数の用途にタイマーを使う方法は関数にしてまとめれば良いのでしょうか?
0876774ワット発電中さん
垢版 |
2021/06/07(月) 10:20:47.05ID:0D0iRlBD
analogWriteによるPWM出力のデューティ(%)って
(指令値/255)×100 %
ってことで良いですか?
分母が256でないのがちょっと気持ち悪いですが
0877774ワット発電中さん
垢版 |
2021/06/07(月) 12:27:46.14ID:pNqK1S1n
>>875
ロータリーエンコーダーをタイマーで云々が意味分からん
B相を割り込みトリガーにしてその時にA相がONしてるかOFFしてるか調べるんじゃないの?
0878774ワット発電中さん
垢版 |
2021/06/07(月) 16:31:04.88ID:fMjpX/88
>>877
ロータリーエンコーダをタイマのカウンタで、カウントしたいって事じゃないかな?
0880774ワット発電中さん
垢版 |
2021/06/07(月) 18:06:50.89ID:UC562oPW
>>875
1つずつタイマー割り振ると足りなくなるので
millis()で次のイベント処理までの経過時間を計る方法があるよ
7セグのダイナミック点灯は60fps以下だとチラついてしまうから16msの優先処理にして
ネオピクセルは100ms周期でイベント処理するとかメインループに書く

ロータリーエンコーダーは割り込みで処理するけど
こっちも前回の割り込み時間millis()を保持して
50ms以内ならチャタリングとみなして無視するか
0.1uFのコンデンサを入れてハード的に処理する方法もあるよ
0882774ワット発電中さん
垢版 |
2021/06/07(月) 18:59:29.31ID:r9sBR9vf
>>876
分母自体は256
255を指定するとDigitalWriteのHIGHが呼び出される
なので254と255の間にパルス幅に1つ飛びがある
なんでこうなってるかはD7とD8の隙間50milと同じような設計上の問題
0883876
垢版 |
2021/06/07(月) 19:29:00.53ID:0D0iRlBD
>>882
ありがとうございます
(i)指令値が0-254の場合:(指令値/256)×100 %
(ii)指令値が255の場合:100 %
ということですか。
厳密さが必要とされる場面では少し気を付けた方がいいかもしれませんね
勉強になりました
0884774ワット発電中さん
垢版 |
2021/06/07(月) 19:34:50.63ID:r9sBR9vf
>>883
ああ、この問題があるのはUnoで言うとD5とD6だけ(タイマー0がFast PWM Modeで使用)なので

D9とD10(タイマー1をPhase Correct PWM Modeで使用)
D3とD11(タイマー2をPhase Correct PWM Modeで使用)

についてはそのグリッチは無い(こちらは分母自体が255のため)

他のArduinoについては自分でコアのソースを見てくれ
0885876
垢版 |
2021/06/07(月) 19:43:43.72ID:4w0tl3BI
>>884
ありがとうございます
私が使おうとしていたピンはUNOのD9-11なので場合分けはしなくて済みそうです
0886774ワット発電中さん
垢版 |
2021/06/07(月) 19:45:12.73ID:kSnPu7oS
それのせいでタイマー0に関しては自分で実装しないとanalogWriteでデューティ比50%は決して出せない
しかしタイマー0を弄るとmillsと(殆ど使わないがdelay)が死ぬ
0887876
垢版 |
2021/06/07(月) 19:50:52.20ID:0D0iRlBD
>>886
タイマー0を使ったD5、D6なら分母が256なので128を指令すれば50%になる...という話ではないのですか?
0888774ワット発電中さん
垢版 |
2021/06/07(月) 19:52:43.73ID:r9sBR9vf
>>886
ん?逆じゃね・・・?
タイマー0を使うところは分母が256でタイマー1と2は255だから
50%が出せるのはむしろタイマー0のほうな気がする

analogWriteで127指定したらたぶんD5とD6はぴったり50%が出るけどD3,9,10,11は50.2:49.8くらいになるんじゃないかな・・・?たぶん
0892774ワット発電中さん
垢版 |
2021/06/08(火) 00:12:12.37ID:UuQ5KsHO
>>890
D3の方は127/255で49.8%になるのはわかるんだけど、D5の方ではなぜ127/256がちょうど50%になるんだろう?
0893774ワット発電中さん
垢版 |
2021/06/08(火) 01:45:09.01ID:Hd83YI8f
>>892
D5,D6の場合(Fast PWM mode)
OCR0A=0; で強制的に0に設定したらHighの時間が0usではなく4usになった
OCR0A=1; この場合だとHighの時間8usでした OCR0A=127;なら512us
Timer0とOCR0Aの比較で一致した瞬間にLowではなくカウントアップ時にLowに変わるようです
0894774ワット発電中さん
垢版 |
2021/06/08(火) 07:56:18.36ID:nD00A5sz
高速PWMモードだと比較値が0のとき1パルス分の長さのHIGHが出るAVRの仕様
データシートの81ページの頭に書いてある
位相PWMモードだと0と255がそれぞれLOWとHIGHになる
データシートの82ページの上から2割位の所に書いてある

なぜタイマー0だけが高速PWMモードなのかというのは恐らくだけど
delayとmillis実装のための割込にも使っていてプリスケーラ1/64でTOP値0xFFの8bitタイマーなら
周波数が976.5625になるから1msのカウントを組みやすかったのかなと

かつそれでanalogWriteの値を他の位相PWMモードのと合わせようとした結果
分解能が1違うからdutyの端っこを2つ纏めることになってシワ寄せを受けている
0895774ワット発電中さん
垢版 |
2021/06/08(火) 07:57:48.84ID:nD00A5sz
ちなみに高速PWMモードだと出力を完全に止めるにはタイマーを止めるかポートの制御をタイマーから切り離すしかない
0896774ワット発電中さん
垢版 |
2021/06/08(火) 08:03:11.04ID:UuQ5KsHO
つまり
(i)D5,D6:((指令値+1)/256)×100 %
(ii)D3,D9,D10,D11:(指令値/255)×100 %
ってことでいい?
0897774ワット発電中さん
垢版 |
2021/06/08(火) 08:06:53.26ID:rlI/v40o
>>896
arduinoではanalogWriteの0と255はタイマから切り離してLo/Hiという特別な扱い
なのでD5とD6だけ式だけじゃ表せない(0のとき強制オフ)
0898774ワット発電中さん
垢版 |
2021/06/08(火) 08:40:36.29ID:UuQ5KsHO
>>897
では
(i)D5,D6
 (ia)指令値が0:0%
 (ib)指令値が1-255:((指令値+1)/256)×100 %
(ii)D3,D9,D10,D11:(指令値/255)×100 %
ならどうでしょう?
0901774ワット発電中さん
垢版 |
2021/06/09(水) 19:01:44.14ID:s7O+DKhS
AC100V機器にリレーで電源供給するとI2Cのディスプレイ表示が瞬間的に
文字化けしたりするんだけど簡易な対策はありますか?
0905774ワット発電中さん
垢版 |
2021/06/09(水) 19:25:53.07ID:uh6tTlBX
まずは原因をある程度絞り込まないと
例えばリレーのコントロールをマイコンから外して直接オンオフしても発生するのかとか
AC側の機器があるのかないのかとか
電源ラインのノイズ対策をちゃんとしてるか?とかブレッドボードで怪しい接続のままなのか基板にしてるのかとか
0906774ワット発電中さん
垢版 |
2021/06/09(水) 19:39:25.03ID:TMcPzxTU
>>901
I2Cディスプレイの電源に1000uFと0.1uFのコンデンサをつけるとだいたい解決する
0908774ワット発電中さん
垢版 |
2021/06/09(水) 20:52:04.55ID:s7O+DKhS
ちなみにモーター使う時みたいにリレーの電源両端に
パスコン入れるのは効果的でしょうか?
0913774ワット発電中さん
垢版 |
2021/06/10(木) 00:37:13.15ID:kUNERqJ9
最近、arduinoをつかってみたのですが
デジタルピンをプルアップに設定して、内部プルアップ抵抗を使う事にして
ICから直でDIPスイッチに接続してるんですが、大丈夫ですよね?

ネットで見ると、プルアップで抵抗なしに
プルアップ設定で直結すると壊れるという記事もあるんですが・・・
とりあえず、書いたスケッチの動作確認では問題なく動作しております。

300〜10kΩ程度の抵抗をかますのが安全なのでしょうが、配線がゴチャゴチャするので
直結で問題なければこれで使いたいのですが・・・
0914774ワット発電中さん
垢版 |
2021/06/10(木) 00:38:35.02ID:CTV/YDuI
クロスフェードを7セグでやってみたいんだけど、よく分からない。ダイナミック点灯で4桁でやりたいんだけど、参考になるスケッチとか無いかな?
0915774ワット発電中さん
垢版 |
2021/06/10(木) 00:45:59.33ID:c+UyRN7q
>>913
プルアップで直結自体は大丈夫だけど
スケッチの間違いで出力設定(high)になったら最大定格を超える電流が流れて、故障や誤作動の原因になる
出力設定でもdigitalRead()は機能するので間違いに気づかない事も考えられる
保険の意味では抵抗を入れといた方が良い
0916774ワット発電中さん
垢版 |
2021/06/10(木) 01:17:11.91ID:cE3v7P0w
>>911
絶縁リレー回路が絶縁されてないじゃん
あとベース抵抗510Ωは小さすぎ
そしてベース - エミッタ間にも抵抗を入れるべき
0917774ワット発電中さん
垢版 |
2021/06/10(木) 01:29:40.99ID:yDKcUp2S
>>916
LEDが2個直列になってて3.0V必要な事は指摘しなくていいのか
別電源にすれば絶縁にはなるぞ
0918774ワット発電中さん
垢版 |
2021/06/10(木) 06:06:10.67ID:FXsw9wRP
プルアップとかプルダウンとかプルツーとか何言ってるかさっぱりわからん
0920774ワット発電中さん
垢版 |
2021/06/10(木) 08:57:54.44ID:cE3v7P0w
>>917
GNDが共通だから別電源用意しても絶縁されてないって指摘してるんだよ
リレーなんか使わずにオムロンとかのゼロクロス付きのSSRにすればいいのに
0921912
垢版 |
2021/06/10(木) 18:16:55.22ID:cd56I7iV
リレーノイズの者です
コンデンサとダイオードを追加して無事に解決しました
アドバイスくれた方々に感謝
0922774ワット発電中さん
垢版 |
2021/06/12(土) 01:28:04.38ID:4fiLsoDD
iphone単独でスケッチの書き込みとか出来たら超捗るのに…
PC経由してリモートならあるんだよな確か
0924774ワット発電中さん
垢版 |
2021/06/13(日) 14:24:46.45ID:9SnZIFPu
I2CのEEPROM(24LC256)への書き込みの質問です

Wire.beginTransmission(deviceaddress);
Wire.write(eeaddress >> 8); // MSB of EEPROM Address
Wire.write(eeaddress & 0xFF); // LSB of EEPROM Address
Wire.write(data, length);
Wire.endTransmission();

length = 8byteまではうまく書き込めるのですが、
もしかして最大8byte単位という制限がありますか。
0925774ワット発電中さん
垢版 |
2021/06/13(日) 14:55:41.84ID:9SnZIFPu
連投すみません。ページをまたがった連続書き込みはできないということに気が付いていませんでした。
一旦、質問を引かせていただき、自分で試してみます。
0926774ワット発電中さん
垢版 |
2021/06/13(日) 16:00:30.88ID:9SnZIFPu
ググって探せました。
1. EEPROMは通常64アドレス分が1ページになっている(モデルによって違う)
2. Wire.write(data, length);でページをまたがった書き込みは出来ない
64byte以上の配列を書き込む時は上記の考慮が必要でした。
0927774ワット発電中さん
垢版 |
2021/06/14(月) 17:20:33.94ID:wgRpgKFd
i2c接続で、EEPROM、OLEDまではよかったんだけど、PSoCをSlaveでぶら下げたらら、PSoCのレジストリには書き込めません。
I2Cのアドレスは0x08でかぶってないハズです。
EEPROM、OLEDの部分を外して、Arduino対PSoC単体では、書込み出来てます。

漠然としてますが、どこから手をつけたらいいのか、アドバイスが欲しくて。
OLEDライブラリはu8x8とかいうものです。
0930774ワット発電中さん
垢版 |
2021/06/14(月) 20:08:41.63ID:u8XJ1ONR
アナライザがあったのでつなげてみました。
正常動作時は下記でした。(A)
write to 0x08 ack data: 0x20 0x01 0x01
write to 0x08 ack data: 0x20 0x02 0x02
write to 0x08 ack data: 0x20 0x03 0x03
write to 0x08 ack data: 0x20 0x04 0x04

NGの時は下記です。(B)
write to 0x08 nak
write to 0x08 nak
write to 0x08 nak
write to 0x08 nak

(A)の時も(B)の時もハード構成は同じですがスケッチが異なり、
(A)はPSoCとの通信のみの最小構成にしています。
PSoC側のプログラムは(A)も(B)も同じです。

プログラムは(A)と(B)で異なるのですが、
同じコマンドが同じ順番に並べているつもりでいます。

Wire.begin();
の後に
Wire.beginTransmission(PSoC_SLAVE_ADDRESS);
Wire.write(cmd, sizeof(cmd));
Wire.endTransmission();
Delay(30); <- これいじっても変わりませんでした。
を4回繰り返しています。

これで、どういう状況かご想像出来ますか?
0931774ワット発電中さん
垢版 |
2021/06/14(月) 21:43:57.76ID:u8XJ1ONR
連投すみません。
u8x8.setBusClock(100000);
が必要でした。ちゃんとライブラリ説明のところを見ていませんでした。
結果、i2cバスは400kHzで動作しており100kHzと思っているPSoCは間違った認識をしていたようです。
0933774ワット発電中さん
垢版 |
2021/06/15(火) 10:50:35.42ID:ibY/Xl9/
arduinoのプログラムって繰り返しだけど
1周どのくらい時間かかるの?
ディレイとかwhile?とか考慮しないで
プログラムの大きさもあるだろうけどまあざっくりで
0938774ワット発電中さん
垢版 |
2021/06/15(火) 12:01:12.97ID:Lw0ECFdv
>>937
クロック周波数で考えるなら,例えばUNOなら16MHzなのでクロック周期は62.5ns
1命令を処理するのに何クロック掛かってるかはわからないけど,少なくとも62.5nsは掛かってる
0939774ワット発電中さん
垢版 |
2021/06/15(火) 12:02:13.77ID:QKKL6vmK
>>937
Arduino(UNO)なら1命令62.5nsだったと思う
コード1行でも掛かる時間は様々
例えば計算でも8bit(char)の足し算なら1us以下で出来るけど
float計算なら足し算の数十倍の時間が必要
digitalWriteなら1回 1us位だけど
analogReadは1回100us位の時間必要

実行時間を気にするなら実測するのが楽だと思う
0940774ワット発電中さん
垢版 |
2021/06/15(火) 13:22:56.56ID:jPvICB/M
O(n^2)とか使いまくりんぐ…
まぁ莫大な配列とか使わないしね… (´・ω・`)
0941774ワット発電中さん
垢版 |
2021/06/15(火) 14:06:47.85ID:LXPtsEdF
すごい速いね
これじゃインラインアセンブラ使う必要も無さそう
0943774ワット発電中さん
垢版 |
2021/06/15(火) 14:48:24.50ID:tzf2gSM/
正味20行くらいの命令とdelay(10)が入ったloop()で、100周するごとに1秒と数えてデバグに出力させたら
1時間ぐらい走らせても1秒のズレもなくてえらく早いんだなとびっくりしたことがある
0946774ワット発電中さん
垢版 |
2021/06/15(火) 16:52:19.09ID:q38TiwZs
AVRで早さを求めるならフルアセンブラで書けるようにしておいた方がいいよ。
Arduinoを使う意味が無くなっちゃうけどさw
0947774ワット発電中さん
垢版 |
2021/06/15(火) 19:15:00.22ID:poXLd12n
今の主流はそんな手間掛けるよりもっと高性能なuCに変えてリッチな環境で開発を続けることな気がはするけどね
8bitで16MHzのAVRから32bitで72MHzのSTMに乗り換えたとして掛かるコストが少なすぎる・・・下手すると高性能な方が安い場合もある

もちろんアセンブラで書くのは面白いし好きだから趣味としてやることを否定するわけではない
0949774ワット発電中さん
垢版 |
2021/06/16(水) 07:30:02.97ID:0VGLfQZ7
正確に言えばCPUの種類ごとにアセンブラは異なるけど、
一機種についてマスターすれば他にも応用できるよ。

フルアセンブラで書く面白さ、楽しさがあるし(CPUに密着しているような感覚かな)
AVRのような小さなCPUでは、フルアセンブラでないと実現出来ない仕様もある。
ま、CPU電子工作ライフの将来の選択肢の一つですね。
0950774ワット発電中さん
垢版 |
2021/06/16(水) 08:51:23.71ID:otpu6whd
一つのマイコンでアセンブラで性能引き出さなきゃならんようなものなんて限られているだろうし
そういうレベルのものを作るときはそもそもArduinoとか選ばない気はしないでもない
まぁATTinyでそこまで実現したのすげー的なの目指す遊びはあるけれども
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況