X



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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001774ワット発電中さん
垢版 |
2020/01/16(木) 12:45:18.22ID:Re+Ydp+z
http://www.arduino.cc/

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

前スレ

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

過去スレ


Arduino初心者熱烈大歓迎質問スレ part24
https://rio2016.5ch.net/test/read.cgi/denki/1554776918/
Arduino初心者熱烈大歓迎質問スレ part23
https://rio2016.5ch.net/test/read.cgi/denki/1541233445/
Arduino初心者熱烈大歓迎質問スレ part22
https://rio2016.5ch.net/test/read.cgi/denki/1534549073/
Arduino初心者熱烈大歓迎質問スレ part21
https://rio2016.5ch.net/test/read.cgi/denki/1527252804/
Arduino初心者熱烈大歓迎質問スレ part20
https://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/
Arduino初心者熱烈大歓迎質問スレ part17
http://rio2016.2ch.net/test/read.cgi/denki/1471967293/
0954774ワット発電中さん
垢版 |
2020/03/26(木) 08:59:25.45ID:ToI4vXt0
>>948
OSがメモリマネジメントしてないから
現代的OSとアプリの関係ではなくDOSアプリ作るようなもんだけど、若者にはイメージ伝わらないよね
0955774ワット発電中さん
垢版 |
2020/03/26(木) 10:27:28.20ID:hhAEwYS3
>>953
メイン
・lcdtime>30 で表示処理
・表示終わったらlcdtime=0
通信など
ループ

割り込み 0.1秒
・lcdtime++
・モーター作動ならmotertime++
・motertime>300 ならモーター停止
・モーター作動処理

割り込み使うまでも無いレベルだが、やるとすればこんな感じ
0956774ワット発電中さん
垢版 |
2020/03/26(木) 12:37:04.26ID:BXmKgQyd
初心者です
質問があります

Leonardo のリセットボタンを押してもLのledが一切光らないのは異常ですか?
Boorloaderの異常ではないかと公式サイトにあったのですが、先日買ったときからこの調子です

書き込もうとしても、コンパイル後に書き込み開始されるとcomポートが認識されなくなります。書き込みまでは正常で、書き込み開始後にデバイスマネージャーから突然消えます。
ポートやボードの設定は合ってます。

書き込み前にリセットボタンを押しておいて、書き込み開始後に離すことで認識させることはできたのですが、いざ書き込もうとしてもprogrammer is not respondingとなり、一切スケッチが書き込めません。

買ってから一度も使えておらず、返品を考えています。ご教授願います。
0957774ワット発電中さん
垢版 |
2020/03/26(木) 14:02:02.02ID:BKXHT26C
>>953
3秒毎に表示、3分毎に送信ってのは
マイコンにしてみたら手持無沙汰もいいとこ
暇で暇で鼻くそほじってるわw
0958774ワット発電中さん
垢版 |
2020/03/26(木) 14:07:43.03ID:O13boCV3
>割り込みだとメインループを中断して割り込んでしまうので…
>あっ…実は割り込み使ったことないんです…
>使ったことないので先入観で出来ないと思っちゃったのかな…
>うーんやっぱりマルチタスクっぽい動作は無理なのかな…
何だコイツ?
0961774ワット発電中さん
垢版 |
2020/03/26(木) 14:31:36.08ID:dtY8+1+8
>>952
はい…僕もその認識で 割り込みが入ったらメインループは
一時停止で割り込みの処理が終わったら再開だと思ってたんですが…
0962774ワット発電中さん
垢版 |
2020/03/26(木) 14:55:02.82ID:FGL/Cdny
>>952 >>961
それであってる。
マルチコアとかの特殊なアーキテクチャーでなければ、CPUは普通は1つの命令しか同時には実行できない。
複数の処理が平行に途切れなく実行されてるように見えるかどうかはプログラムの工夫にかかっている。
0964774ワット発電中さん
垢版 |
2020/03/26(木) 15:28:15.65ID:4KaAx12q
>>961
どういうタイミングで何がやりたいかフローチャートにでも書いてから出直して
それ無しに何を語っても無意味
0966774ワット発電中さん
垢版 |
2020/03/26(木) 16:11:00.58ID:dtY8+1+8
>>964
割り込み無しで簡略化して書いてみます
int val = sensor.value;
int total_val = 0;

void loop() {
 lcd.print(val);
 total_val += val;
 delay(3000);

if (total_val > 100) { // センサー値合計が100を超えたら…
 digitalWrite(2, HIGH); // 30秒間モーターをONしたい
***ここで30秒間モーターを動かし終わるまで待たずに
  回しっぱなしでloopの頭に戻りたい そして30秒後に
  自動的にモーターは停止したい***

と、書いていて気づいたのですがモーター回転中もセンサー合計値が
蓄積していくとすぐにまたif文に掛かりそうで ループを一時中断したほうが
都合がいいのかもしれないと思い始めました…
0969774ワット発電中さん
垢版 |
2020/03/26(木) 16:31:28.14ID:MYhJFhFl
>>ID:dtY8+1+8
タイマー割込みだと言われてもそれについて調べもしないから
あなたの場合は回答もらっても無意味だね
0971774ワット発電中さん
垢版 |
2020/03/26(木) 16:51:42.84ID:dtY8+1+8
うーん…タイマー割り込み調べて>>962さんと
同じ結論に至って無理そうかなって聞いてみたのに…(´;ω;`)
0972774ワット発電中さん
垢版 |
2020/03/26(木) 16:57:05.05ID:tUVWqnk3
>>966
digitalWriteでポートをオンにしたらオフにするまでそのまま保持するはずだが?
0973774ワット発電中さん
垢版 |
2020/03/26(木) 17:02:36.56ID:MVC0cauS
>>971
理解するのが難しいかねえタイマー割込みは
メインの処理は同時には出来ないけど数のカウントは同時に複数できてそれがタイマー
既定の数数え終わったら終わりましぜって教えてくれるのが割込み
教えてもらったらモーター止めるのはメインの処理
0974774ワット発電中さん
垢版 |
2020/03/26(木) 17:06:51.37ID:S8yTKGmy
delay(3000)なんて使わずにmillisで時間を確認し経過時間に応じてif文で処理すれば良いんじゃねーの

割込み使っても良いけど
0975774ワット発電中さん
垢版 |
2020/03/26(木) 17:22:57.80ID:HJ/+uYno
あと割り込みの使い方として、懸念されてる様に割り込み中はループが止まるから
割り込みの中ではフラグを立てたりしたらすぐ復帰する様にして、本処理は
ループの方で割り込みのフラグが立ってたらと処理する
0976774ワット発電中さん
垢版 |
2020/03/26(木) 17:22:58.30ID:S8yTKGmy
タイマー割込みならモーター始動と同時にタイマースタートして割込み関数でモーター停止とタイマーストップすれば出来るだろうし

MsTimer2というライブラリがある
0977774ワット発電中さん
垢版 |
2020/03/26(木) 17:28:31.23ID:WEmszck/
横で済まないが
タイミング的に絶対割込みさせたくない部分では
禁止にする方法とか
それが済んだら割込み処理とかってできる?
0978774ワット発電中さん
垢版 |
2020/03/26(木) 17:28:43.67ID:MVC0cauS
delayは使いたそうだからライブラリではTimerOneとMsTimer2
モーターがサーボなんだかPWMなんだかわからなかったけど
ただぶん回すだけみたいだからどっち使ってもいいね
0983774ワット発電中さん
垢版 |
2020/03/26(木) 18:08:35.99ID:FGL/Cdny
あごめん、戻って来なくなるんじゃなくディレイが無くなるようだ(即戻る)。
0984774ワット発電中さん
垢版 |
2020/03/26(木) 18:12:01.56ID:Z3t5mFik
AT+TYPE1は設定できることを発見した
でもペアリングは無理っぽい
0985774ワット発電中さん
垢版 |
2020/03/26(木) 18:18:41.60ID:dtY8+1+8
ああ…たくさんヒントありがとうございます…
なんとなく流れが理解できました
頑張ってみます!
0986774ワット発電中さん
垢版 |
2020/03/26(木) 18:40:32.00ID:Q3aT8Idz
なんとなく結論出てるみたいだけど
まず、基本的にArduinoではWindowsやLinuxみたいなマルチスレッドみたいな機能は無い
なので、自分でスレッドスケジューラみたいな仕組みを作る必要がある
でも本格的にスレッドの仕組みなんか作ると大変だしプログラム容量も大きくなるので
実行したい処理と処理にかかる時間を定義して、各々の処理をどのタイミングで実行
するかを決めたタイミングチャートを作って一連の処理を行うループを作成するってのが
屁理屈なんだけど
一応「arduino マルチスレッド」でググると色々出てくるし

http://asukiaaa.blogspot.com/2016/06/arduino.html

見たいな例もあるみたいよ
0991774ワット発電中さん
垢版 |
2020/03/27(金) 09:37:03.25ID:VgZmWh5+
割り込み中ではフラグだけ立てて、メインでフラグをチェックして処理
0992774ワット発電中さん
垢版 |
2020/03/27(金) 09:38:02.92ID:yKuoZjLX
負荷多いと思ってる根拠は?
0996774ワット発電中さん
垢版 |
2020/03/27(金) 15:02:29.20ID:ZgbgR+dv
>>990
自分じゃ何も調べずに適当な質問を数撃ちゃ当たる方式で投げてるだけだろコイツ
0999774ワット発電中さん
垢版 |
2020/03/27(金) 17:41:11.30ID:fmsABj7P
>>998

>>991の回答が解らないとはあんたは割込処理中にどんな記述してるんだ?
割込処理内ではフラグだけ立ててメインループでポーリングしてフラグ監視するのは基本じゃね

スタックやリソースの競合や多重割込のことを考えると
割込処理内で複雑なことするとデバッグするのが大変だろうに
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 71日 5時間 0分 52秒
レス数が1000を超えています。これ以上書き込みはできません。

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