X



トップページ電気・電子
1002コメント360KB

Arduino初心者熱烈大歓迎質問スレ part30

■ このスレッドは過去ログ倉庫に格納されています
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/
0203774ワット発電中さん
垢版 |
2021/03/11(木) 12:02:06.56ID:IKnH+hT9
>>198
確かに汚かったです。
アノードに回路を追加します。
スタティックのままで、アノード制御追加でもフェード出来ますでしょうか。

フェードしつつダイナミック点灯はプログラムできる気がしないです。
0204774ワット発電中さん
垢版 |
2021/03/11(木) 12:09:12.92ID:mfLpB2Ow
>>203
そりゃ出来るけどアノード制御でブランキングしつつ綺麗にクロスフェードするプログラムを作る作業負荷はダイナミックの場合とほぼ一緒じゃん?
それが達成できるならまぁダイナミックで動かせるようになるよ(つまりそのクソデカ高電圧シフトレジスタは1個でよくなるということだ)

それより送料別で$5で4層やってくれる基板屋俺にも教えて
0208774ワット発電中さん
垢版 |
2021/03/11(木) 13:16:22.77ID:4uYFOlbU
>>197
>>198
なるほど、上流側の制御回路が必要ですね。
回路の追加ができれば、プログラムはそう難しくないはずですよ。
0209774ワット発電中さん
垢版 |
2021/03/11(木) 14:36:09.48ID:+6W+AJwV
ニキシーのドライバって出力にツェナーダイオード付いてるから
完全にオフにならないんだね
0210774ワット発電中さん
垢版 |
2021/03/11(木) 14:43:01.59ID:WLdnJkCW
>>209
完全にオフにするとブルードットと呼ばれる異常放電が起きたり
点灯してる電極のコントラストが悪くなってしまう
なので未点灯のカソードはストライキング電圧以下になるように電位を与えるのだ

低耐圧のトランジスタでやるためにツェナーが入ってるだけと思ってる人も居るがそうじゃない
300Vとかスイッチできる素子を使って作ったとしてもオフ時に電位を与えてあげないと見栄えが悪くなるんだ
0213774ワット発電中さん
垢版 |
2021/03/15(月) 21:09:28.53ID:QS3cTWoY
ネット上にホールセンサーを使った回転計タコメーターのスケッチ例が沢山あるけど、
ぜんぶ値がバラバラなので、どのスケッチを信じたらいいか分からないw
基準となる回転数も分からないしw PCファンぐらいしかないけど、これも信用できないw
0214774ワット発電中さん
垢版 |
2021/03/15(月) 21:22:27.67ID:6+Vr2LMf
つオシロ
つロジアナ

周波数カウンタはもっと高精度だけど
マイコンのクロック精度の問題が先だろう
0215774ワット発電中さん
垢版 |
2021/03/15(月) 21:44:26.91ID:QS3cTWoY
ロジアナは持ってないし、オシロは中華のDSO138しか持ってないw
DSO138でも15,000回転のモーターの回転数を図れますw?
0216774ワット発電中さん
垢版 |
2021/03/15(月) 21:59:21.54ID:WqnnGsec
今、DSO138現物がないので確認できないけれど。
100kHzぐらいの正弦波はなんとなく観測できていたと思う。

>DSO138でも15,000回転のモーターの回転数を図れますw?

250回転/秒。
光でも磁力でも1回転で1周期になるようなセンサーを付けて回転数を確認することは余裕では。
0217774ワット発電中さん
垢版 |
2021/03/15(月) 22:00:23.38ID:IHmWJEZ5
>>215
15000rpmなら250ppsでしかない。
持ってるならまずは使え。草生やして聞く前に。
0220774ワット発電中さん
垢版 |
2021/03/15(月) 22:12:18.03ID:QS3cTWoY
オシロのプローブをモーターの+、オシロのGNDをモーターのーに繋げば良いんですね?
なんか波形が出ました!
0221774ワット発電中さん
垢版 |
2021/03/15(月) 22:25:14.25ID:QS3cTWoY
>>219
スケッチがINT0のピン割り込みを使ってたり、Loop内だけでピンを読み込んでたりとか微妙に違うんですよ
0222774ワット発電中さん
垢版 |
2021/03/15(月) 22:28:58.86ID:z3AogD/g
まずは単体のスケッチで試すんだ…
切り分けできないだろう… (´・ω・`)
0224774ワット発電中さん
垢版 |
2021/03/16(火) 08:09:17.25ID:boau9Fcx
>>221
時計だって自前クロックだけでやるスケッチもあれば
外部クロック使うこともあるやん

3種類違うのがあったら喜んで全部試すようじゃないと捗らんぞ
0226774ワット発電中さん
垢版 |
2021/03/16(火) 23:26:44.12ID:6cyB547/
測定原理が分かってない

スケッチが何やってるか分かってない
0227774ワット発電中さん
垢版 |
2021/03/16(火) 23:31:45.34ID:Vqyw25PG
>>226
原理も何もホールセンサーからの信号を拾えばいいだけですよ!
元々ソフトウェアの人間で自作のライブラリー作るぐらいなので、スケッチが分からないとかはないです!
0229774ワット発電中さん
垢版 |
2021/03/17(水) 04:00:48.14ID:WesUyXR4
> スケッチがINT0のピン割り込みを使ってたり、Loop内だけでピンを読み込んでたりとか微妙に違うんですよ

アレだ
文字は読めるけど内容がわからない
0230774ワット発電中さん
垢版 |
2021/03/17(水) 09:57:58.16ID:WDv+I/xS
>>229
割り込みで拾ってもloop内で拾っても結果は同じはずなんですよ!
それがスケッチごとに最高1,000回転ぐらいバラバラな値がでるんですよ!
0231774ワット発電中さん
垢版 |
2021/03/17(水) 10:04:01.21ID:7U2uDwUl
>>230
そのサンプルプログラムと使ってるセンサや回路を提示しないと誰も助言しようがないのでは?
0232774ワット発電中さん
垢版 |
2021/03/17(水) 10:30:02.79ID:SKk220uK
>>230
元々ソフトウェアの人間で自作のライブラリー作れるくらいのオツムでどうにかすればいいんじゃねえの?(笑)
0233774ワット発電中さん
垢版 |
2021/03/17(水) 10:56:43.34ID:WDv+I/xS
もう自分でフルスクラッチからソースコードを書きました!
これで行きます!
0234774ワット発電中さん
垢版 |
2021/03/17(水) 11:09:04.88ID:E4qSYSys
それが正解!
誰が書いたかわからないオープンソースの問題点を読み解くくらいなら作った方が早い
0237774ワット発電中さん
垢版 |
2021/03/17(水) 11:55:22.00ID:lNz2wZY9
どのプログラムが表示している回転数が正しいかどうかは解らないけど自作コードで満足したそうです
めでたしめでたし
0239774ワット発電中さん
垢版 |
2021/03/17(水) 13:19:42.10ID:E9irK2Es
>>233
それで自分のと他人のどれかとは結果が一致したの?
それとも全部違うの?
どう折り合いつけたのかぜひ聞きたいわ、自己満足以外で
0240774ワット発電中さん
垢版 |
2021/03/17(水) 14:30:09.01ID:IOL56JZw
Dso138にはテスト用1KHz矩形波出力端子があるので
そこに接続して安定した1kHz(60000rpm)が観測できるものを選定

2台のArduinoがあるなら
1台に15000rpm(250Hz)のパルス出力するスケッチを書き
もう1台で計測して結果が良好なものを選定

これだけだと思うが
0241774ワット発電中さん
垢版 |
2021/03/17(水) 20:48:02.36ID:SRWg17hd
「ホールセンサーの出力がオープンコレクタになっている」に100ペリカ
0242774ワット発電中さん
垢版 |
2021/03/17(水) 21:08:19.22ID:jPl1IQug
>>240
後半、Arduinoでパルス出力するスケッチを書いたら
オシロか何かで期待通りパルス出ていることを確認してから
それと比較して良好か判断の手順な
0245774ワット発電中さん
垢版 |
2021/03/18(木) 01:07:33.47ID:5M6gXrjl
道具の持ち腐れってこと?
そんなん初心者以前の問題やね
0247774ワット発電中さん
垢版 |
2021/03/18(木) 14:14:11.22ID:OeCVjVPA
EEPROM書き込みと構造体を組み合わせて利用ということを考えています。

標準EEPROMライブラリのEEPROM.putおよびEEPROM.getを用いると
構造体もそのままEEPROMに記録でき呼び出しもできるという記述を読んだので
試しにString型,int型を含めた状態の構造体をそのままputし、getしてみた
のですが、String型をの部分の文字列の先頭文字が欠けてしまいます。

今までは構造体を用いてはいてもEEPROM記録時はそれぞれの要素を
別個にEEPROMに保存し、String型もByte分割して保存していましたが
これではせっかくの構造体の便利さがもったいないなと・・・

EEPROM.put/getではやはり構造体の中のString型は扱えないのでしょうか?

念のため検証に使用したソースコードを記載します。
ttps://harigami.net/cd?hsh=eb503934-e7fc-4258-886b-f4eec689873c

上記を走らせると下記の出力が得られます

------From Var------
TName =1234567890AB
TValue1 =65532
TValue2 =65533
------ReWrite From EEP------ 最初の構造体に上書きで読み込んだもの
TName =234567890AB      <-文字目がかけてしまう
TValue1 =65532
TValue2 =65533
------Write From EEP------  別の構造体にで読み込んだもの
TName =234567890AB      <-文字目がかけてしまう
TValue1 =65532
TValue2 =65533
Done
0248774ワット発電中さん
垢版 |
2021/03/18(木) 15:16:14.83ID:7bvzBKn/
構造体にはstringのポインタが入ってるだけだから
構造体にはchar配列でテキストエリアを確保しといて
保存読込の時にc_str()とかで変換してコピーしないと駄目だと思う
0249774ワット発電中さん
垢版 |
2021/03/18(木) 15:40:11.69ID:QAdCWUDQ
>>247
雑に斜め読みしただけなんだけど
「hardware\arduino\avr\libraries\EEPROM\src\EEPROM.h」を見ると「get」と
「put」は第2引数に指定された変数の大きさを「sizeof」で取得して必要回数
グルグル回して変数のアドレスから1バイトづつ複写している

で、Stringはただのバイト配列ではなくクラスとして定義されているので、
アドレスから順番に読み出してもバイト配列と同じように読み出されないのかも

とりあえずStringの変数からアドレスを引っ張って中身を見てみたらどうかな

Sting str="012345"
uint8_t *addr =(uint8_t*) &str;
Serial.print(String(*addr)); <-文字コードが表示されるんじゃないかな

実機では試していないから間違ってるかも
0250774ワット発電中さん
垢版 |
2021/03/18(木) 15:53:16.05ID:ts+i1bvg
Cの伝統的な構造体は可変長データを中に持つようにはできてないんだよね
つまるところ >>248 の言うとおりだが、それで解る人かどうか。
0252774ワット発電中さん
垢版 |
2021/03/18(木) 16:40:36.57ID:yWc4J3IY
Stringとcharどっち使うのがいいんだろ
自分は便利だからString使っちゃうけど
0253774ワット発電中さん
垢版 |
2021/03/18(木) 17:07:54.62ID:ts+i1bvg
使いたい機能に向いてるほうを使うのがいいし、どっちでも実現できるなら好きな方でいいでしょ
メモリたりねぇってときは char でぎちぎちに書く事もあるかもしれないけど
0254774ワット発電中さん
垢版 |
2021/03/18(木) 22:48:46.15ID:aDUZs93V
Stringで実装してなんかやべー挙動だなってなったらchar使っときゃいんだよ
自分で使う分ならこれでおけ
人に納めるものなら原因特定しておいて、説明求められたとき話せればおけ
開発なんてそんなもん
0255774ワット発電中さん
垢版 |
2021/03/18(木) 23:15:39.92ID:BZq1htdL
確実に1バイト抜けるのなら先頭にダミー入れとくでもいいけどね
0257774ワット発電中さん
垢版 |
2021/03/18(木) 23:51:49.58ID:ts+i1bvg
>>255
String class の buffer が指すメモリの文字列消して get したらなんもでてこないでしょ
0258774ワット発電中さん
垢版 |
2021/03/19(金) 00:04:21.01ID:RO68IZ/E
>>256
組込ソフト開発5年目の時、上司に「ポインタ変数に1足したのにアドレスの値が4増えておかしいです!」と騒いだのは内緒だ
0259774ワット発電中さん
垢版 |
2021/03/19(金) 00:29:40.00ID:+1bQQOiJ
皆様、色々ご回答ありがとうございます。
いただきました情報をもとにいろいろこねくり回してるうちにこの時間になってしまい
申し訳ありません。

>>248
Stringのポインタが入っているのみというキーワードをもとに
先の当方が記載したソースコードを見直してみると確かに
いったん変数内を書き換えるように35行目にて

Datacomp1.TName = "";

とやっているためポインタでつながっているおおもとの変数
が書き変わって出力時の表示の時に1文字目が消えて(書き変わって)
しまっていたようです。
その後同部分をDatacomp1.TName = "  ";のように空白を増やせばその文字分
出力の文字列も変化することを確認いたしました。

>>251
おっしゃるとおりポインタのおおもとの変数が常に健在の状況で
実験していたため、たまたま出力されていましたが構造体内のStringに文字があるわけで
はないのでEEPROM.put時も文字列ではなくアドレスだけ記録されており
書き込み部分をコメントアウトしてEEPROM.getだけしたものでは構造体内のStringは
空っぽでした。
つまり構造体の中に実体はありませんでした。


>>249
記載いただいたコードを実行してみた所、189という数値が得られました。
 ttps://harigami.net/cd?hsh=21877f1c-fb65-4b0e-939c-c6004978db02
これは変数strのポインタアドレスが表示されているという事であってますか?
つまり構造体Stringには実体ではなくこのアドレスが入っているだけという感じなのでしょうか。
細胞のたらない当方の脳ではこんな想像理解しかできず申し訳ありません。



上記を元に色々こねてとりあえず以下のような感じになりました。
 ttps://harigami.net/cd?hsh=9fcd76fb-62cc-49c3-8cdc-dbe746a014bc
主たる取り扱いはStringを用いて、構造体への格納j時には教えていただきましたc_str()
で得たDataを構造体内のcharに複製する形をとりました。

また、主たる取り扱い時もcharに変更したバージョンもあわせて試してみました。
 ttps://harigami.net/cd?hsh=fd73d385-59ef-4947-bbba-04e67ce8e637

上記2種 いずれも書き込みに関する部分をコメントアウトして読み込みだけでも
文字列取得を行うことができました。

これらの記述で”ばっか、おまえこれやべーよ”なんてところがありましたら
ご教授いただければと思います。
0261774ワット発電中さん
垢版 |
2021/03/19(金) 01:01:17.53ID:+1bQQOiJ
>>260
なるほど、確かにString型から持ってくるとき文字数カウントしないと危ない感じですね。
charで確保した文字数を超えないように制限を設けるようにいたします。
0262774ワット発電中さん
垢版 |
2021/03/19(金) 09:40:42.84ID:ZTt/+N5g
>>259
>つまり構造体Stringには実体ではなくこのアドレスが入っているだけという感じなのでしょうか。

String 変数 str には実体は入っていない(実体へのアドレスが入っている)
だから、構造体にString 変数 strを入れても実体へのアドレス以上のものは入らない

という感じ。なので、実体の文字列に到達するにはもうちょい工夫(というかStringクラスの内部構造の理解)が必要だが、
クラス内部を知らなくても、実体へのメモリアドレスを知りたかったら str.c_str() を使えばいいように設計されています。

構造体に&を付けて得られるメモリアドレス、&str というメモリアドレス、そして str.c_str() が返すメモリアドレスを見比べると面白いかもしれませんね。
0263774ワット発電中さん
垢版 |
2021/03/19(金) 10:31:20.92ID:ZTt/+N5g
熱烈大歓迎スレなので

>>259
>>262 の最後の行のを、せっかくなので自分でコード用意してみた
出力結果とそのコメントも後ろのほうにつけてあるので、興味があれば(なければスルーで大丈夫です)

ttps://harigami.net/cd?hsh=d43ecf48-607c-48b2-a407-bc22d42b4e19
0264774ワット発電中さん
垢版 |
2021/03/19(金) 10:42:26.78ID:56IJVQc6
>>263
Auduinoのインストールディレクトリの↓の中のWStringがStringクラスだから
ソースを見てみると一目瞭然だと思う
Arduino/hardware/arduino/avr/cores/arduino/

Stringの中でchar配列のbufferをアロケートしてStringの文字列を入れている
c_str()はそのbufferのポインタをreturnしてる
内部でbufferのリアロケートもされるから文字列実体の場所はc_str()で取り出さないとわからない
0265774ワット発電中さん
垢版 |
2021/03/19(金) 10:46:34.26ID:ZTt/+N5g
>>264
他にintのデータメンバが2つある、とかソース見たから書けるわけで、私は読んでますが、
あれを読めって初心者にはしんどいかと思いましてねw
0267774ワット発電中さん
垢版 |
2021/03/19(金) 22:04:25.05ID:QfVBqYZm
UNOのRAM領域2048バイトを88%使ってたら
挙動が不安定になったらしく一晩ハマっちゃった
デバッグ用のSerial.printをコメントアウトしたら68%まで
下がって良かった… かなり食ってたんだなこの豚ぁ
0268774ワット発電中さん
垢版 |
2021/03/19(金) 22:09:51.83ID:tKJkRZMy
そこに表示される容量はスタックを考慮されてないからな

あとSerial.printに文字列そのまま渡すとRAMに展開されるからFマクロでくくりたまえ
そうすればROMから読むようになる
0273774ワット発電中さん
垢版 |
2021/03/19(金) 22:41:34.62ID:QfVBqYZm
>>268
さんくす
Serial.print( F("Thanks.") );
こんな感じね…
コレ知らんかったなあ…
0275774ワット発電中さん
垢版 |
2021/03/20(土) 05:30:16.65ID:XEu5akm0
ここ2ヶ月くらい集中してjavascriptやらフロントエンドやってたから
戻ってくるのにちと大変だった…
0276774ワット発電中さん
垢版 |
2021/03/20(土) 14:34:56.07ID:+N7dxOrq
ここ2ヶ月くらい集中して IchigoBASIC やら Go やってたから
戻ってくるのにちと大変だった…
やっぱC++が一番だわ
0277774ワット発電中さん
垢版 |
2021/03/21(日) 07:39:48.77ID:Yt+EQLp6
ここ2か月くらい集中してGoToトラベル中止してたから
客が戻ってくるのにちと大変だった…
やっぱGoToでラベルに飛ぶより関数呼んで戻ってくるのが一番だわ
0283774ワット発電中さん
垢版 |
2021/03/22(月) 07:58:58.36ID:HH8WjHMQ
Vue.jsみたいなクソリッチな開発したあとにarduinoもどると、ああ狭い部屋落ち着く…みたいな感情になる
0287774ワット発電中さん
垢版 |
2021/03/22(月) 19:26:07.45ID:JEolAMmh
なんかセールやってたからELEGOOのセットのやつポチってみた
0288774ワット発電中さん
垢版 |
2021/03/22(月) 21:46:58.10ID:r2t3W2gx
>>283
aruduinoで集めたセンサーデータをVue使って
システム画面やグラフ化したけど楽しかったぁ…
0289774ワット発電中さん
垢版 |
2021/03/23(火) 01:37:43.51ID:ILvqdq2k
ウェアラブルのためにとにかく軽くて小さくて
Bluetoothでリモコン操作できるのを作りたい
モーター2つの方向とPWM速度制御したい

マイコンはBeetle BLEで良いですか?
あるいはM5 Atomかなあ?
0290774ワット発電中さん
垢版 |
2021/03/23(火) 08:36:27.88ID:HE9ZrQMa
おなか痛くてシリアルモニタみてたらうんこもらしました!!!
どうすればいいですか!!!??
0295774ワット発電中さん
垢版 |
2021/03/24(水) 12:51:04.59ID:fZyPTlZx
ポチったスターターセットのやつ届いたから一旦全部出したらもう二度とケースに収まらなくなった...新手のパズルか?
0297774ワット発電中さん
垢版 |
2021/03/25(木) 12:05:04.29ID:5V6ym0aC
arduino mega ですが、Vinから9V供給した場合、5Vの端子からは2.7Vの電圧しか
出てませんでした。DCプラグから9V入れると5Vの端子からは5Vちかく出てました。
5V欲しかったらDCプラグから供給するしかないですかね・・・
0300774ワット発電中さん
垢版 |
2021/03/25(木) 19:22:15.15ID:Nvy4c4aq
>>296
ELEGOOのスターターキットってやつ
何度もチャレンジしてたらきっちり入るようになった
やっぱパズルだなこれは
■ このスレッドは過去ログ倉庫に格納されています

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