Arduino初心者熱烈大歓迎質問スレ part29
■ このスレッドは過去ログ倉庫に格納されています
>ifの評価に使ってる値が残ってないのがわかりにくくしてるような。
評価前に変数に入れてみました。
>あとシリアル後に変数更新したら文字列の長さ分ずれると思う。
こちらは想定内、1000が1001に遅れるのはいいんです。
936でifに飛び込んでくるのが異常
スケッチ:https://pastebin.pl/view/20a8f209
リザルト:https://pastebin.pl/view/5431a2e1 シリアル結構地雷だからなぁ
シリアル出力を#Stopだけにするか、
毎ループflushしてみるかで試したいところ 計算結果だけじゃなくてmillis16の戻り値も残しとけばデバッグもやりやすいかもね。今回は関係ないがオーバーフローとかしてたり変数サイズミスったりしてたり。 リザルトのstop手前の行
1191 ms0 : 1000以上なのでifにはいってきました。
7936 millis16() : 現在のカウンタ値、前回7000なので936msしか経過していない
7000 ms1 : 前回のカウンタ値
936 m=millis16()-ms1 : 演算結果
シリアルの処理時間で遅れるのは想定内です.
millis16()が異常値を返してると思えるんですが原因不明です。 メインループにdelay(1);入れると異常は出なくなりました
出にくくなってるだけかも知れないので数時間放置してみます。 最初に自分で書いてるあたりが原因でしょう cli、sei
原因
1.millis16()関数はmilliscnt変数を参照している
2.milliscnt変数は割り込みによってカウントアップされる
結果
つまりmilliscnt変数参照中に割込みが入ってカウントアップされると…
1.カウントアップ前のmilliscntの上位バイト参照
2.カウントアップされて上位バイトが+1、下位バイトは00
3.カウントアップ後の下位バイト参照
という現象が起きる
連続してmillis16()関数を呼び後者が前者より小さかった時にそれぞれを16進表示すればちょうどカウントアップ時にコケているのがわかる
・・・というのでどうかな? なるへそ
2byte読みがアトミックじゃねーのか
俺もまだまだ修行不足だな >>11が正解だね。
mills16()を直接milliscnt参照にしても同様だった。
void loop() {
while(1){
uint16_t ms0, ms1;
ms0 = millis16();
ms1 = millis16();
if(ms1 < ms0){
Serial.print("ms0=");Serial.print(ms0);
Serial.print(",ms1=");Serial.print(ms1);
Serial.println("");
}
}
}
14:04:20.031 -> ms0=767,ms1=512
14:04:20.789 -> ms0=1535,ms1=1280
14:04:21.582 -> ms0=2303,ms1=2048 >>11
おお、ありがとう
すごい納得できました! 7936 = 0x 1F00 = 0b 00011111 00000000 超初心者です。
1602LCDにI2Cで表示していたのですが、元々取付られていたI2Cモジュールを別購入したものに交換したところ、一行目に全て四角が表示され、二行目には何も表示されない状態になってしまいました。
グーグルから下ページに辿り着いたのですが理解できず困っています。
どなたか、解説していただけないでしょうか?
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14128070479 >>16
うちにあるI2Cアダプタはアドレス0x27と0x3fの2種類あるよ
I2Cスキャナで確認してみて >前スレ1000
ありがとうございます。
超音波センサー良さそうですね! とゆうかまずそのモジュールの型番なり商品ページなり示そうよ >>17
ヤフー知恵袋の方と同様で、私の場合もアドレスは変化がなく0x27でした。 lcd.print にしなきゃいけないところ lcd.println になってるとか 接続が悪い時に豆腐なった事あるな
消費電流少ないから電源繋がってなくても
他のピンから回り込みでなんか表示したりするんだよあれ Uno2台で片方にACアダプタから給電しています
そのUnoの5Vピンからもう一台のUnoのVinに接続して電源供給したい
前述の5Vピンは一旦ブレッドボードを経由して他のセンサー等の電源とも
共用したい なにか注意点はありますか? >>26
その方が無難かもね。
Vinは推奨7〜12Vなので5Vピンにつなげてもダメだと思うよ。
VinとVinをつなげれば動くけどあんまり気持ちは良くない。
あとGNDとGNDをつなげるのを忘れずに。
電源周りがどうなっているかUnoの回路図見てみたらいいんじゃないかな。 >>27
ですよね…
いま二股コネクタ作ってます… スイッチング式のACアダプタのちょうど邪魔な位置にフェライトコアが
あってたので ぶった切ってしまったんですが やっぱり取り付けたほうがいいかな? UNO + 9V電源 = 0.8A 程度しか使えない、でかい
NANO + 100均の5V2.4A電源 使ってる俺には色々と無駄に思える 100均のACアダプタってめっちゃノイズ乗ってそう。
電源は容量だけじゃなくて値段もケチらない方がいいぞ。 逆に考えるんだ
悪環境でも安定動作する装置が作れると
いや、そこまで酷くねーよw
昔の携帯充電アダプタ5.5V650mAの中に本当に酷いのがあった まあ、充電目的だったら多少のノイズは関係無いからねえ。 一次側にも酷いノイズ乗せるアダプタあって迷惑な奴だった ノリノリでビートを刻むファンキーなヤツだったんだな
惜しい電源を失くしました 唯一持っていた純正品である、Leonardoで
5Vピンに、なぜか12Vをつっこんでぶっ壊したので、
記念カキコ 私の実験用基板には、実験用可変電源装置の電圧設定、極性を間違えても壊れないように、
電源入力に直列にダイオードを入れ、さらに3.3Vと5Vの3端子レギュレータを入れてある。
過去に2回-15Vや+24Vの電圧を掛けて部品をパーにしてから、この方法に切り替えた。
(将来、mega32U4やmega328などでオリジナルのCPU基板を設計、製作する時の参考までに。)
(と思ったけど、ならないかもしれないな)w
ダイソーの300円、「リモコンライト(ホワイト)」
これいいねー
自作オーディオアンプのリモコンを作ろうとしてて、
アンプ側の方はマイコンで受信機作るからいいんだけど、
子機の方は、めんどくせーな、と思っていたら、
わずか300円で、小さくて軽い子機が手に入った。
赤外線通信コードは、ごく普通の、NECフォーマットだったんだけど、
なぜか、メーカ識別コードが、全部ゼロとかwwww
さすが怪しい中華品 >>42
これ色々遊べそうだよな
俺はライト側にSSRつなげてリモコン電源タップに改造した >>42
せっかくCPUでリモコン受信器作るなら、ついでに学習型にしておけば、
「リモコンライト」送信機だけでなく、色々な送信器が使えるよ。
また、たとえばテレビのそばに受信器を置いておけば、
テレビ用リモコンでテレビの電源を入れると自動的にアンプの電源も入る、
なんて事も出来るようになる。 私は学習型リモコン受信器をtiny2313(FROM2KB、SRAM128B、EEPROM128B)で作った。
持たせる機能によるが、8ピン以外の殆どのAVRでイケると思う。
写真は受光ユニットで、受信しやすい位置に置けるように本体から独立させた。
https://i.imgur.com/JzSA72o.jpg
左から操作SW、秋月で買った受光ユニット、状態表受LED
ノイズ対策に予想外の苦労をした。
(大昔に製作して記録用に撮影したもので、画像の質が悪くてゴメン) リモコン作るときの待機電力削るためにどうしてますか?スリープ?
今度やってみようと思って パワーダウン!ADCオフ!BODオフ!WDTオフ! スイッチ押して初めて導通する感じか…
一つのスイッチで電源オンとどのスイッチが押されたかの判別を同時にやれそうな気がしない
ダイオード使えばいいのか
考えてみよう… 一つのスイッチで……………どのスイッチが…………………
スイッチは1個なのか複数なのかサッパリわからん わかりにくくてごめん
複数のスイッチ(ボタン)のあるリモコンの想定です
どれでもスイッチが押されたら電源オン、続けてどのスイッチが押されたかの判定をする つーかその作りたいリモコンとやらと同種のリモコンはどう作ってんのか調べた方がはやくね?
電波だかIRだか知らんけどさー 作りたいのは室内電灯の赤外線リモコン
arduino をパソコンに繋いだ状態でリモコンとして正常に動くことは確認できた
問題は電池駆動のための省電力機構
基板見て回路図起こすなんてレベル高そうだ… 違うか
回路図起こせということではなく同じ類のリモコンを参考にしたらよいと言ってくれていたのか
ありがとう調べてみます >>57
スイッチ群はマトリクススキャン。例えば、3行x4列で12個のボタン
sleepは割り込みで解除
ダイオードとか使わなくても全てのピンの変化割り込みが取れる
データシート49ページあたり
>PCI2ピン変化割り込みは許可したPCINT16〜23の何れかが切り替わると起動します。
>PCI1ピン変化割り込みは許可したPCINT8〜14の何れかが切り替わると起動します。
>PCI0ピン変化割り込みは許可したPCINT0〜7の何れかが切り替わると起動します。
>ピン変化割り込みn群許可レジスタ(PCMSK0,PCMSK1,PCMSK2)は、どのピンがピン変化割り込み要因となるかを制御します。 >>61
割り込みは2つまで、トリガーに使える入力も2つ、と思っていたけどトリガーのピンはもっとつかえるのか!ありがとう調べてみます
スイッチ複数と言っても3つ(電源、明暗)しかないのでとりあえず内蔵プルアップで直づけ なに?最近はリモコン作るのが流行ってるの?
天井照明を手を叩くとONOFFするようなの作ってみたいんだけど、
拍手センサー?って
マイクで拾った音から、拍手をどう聞き分けしてんだろう?
周波数や波形を選別できてるんかな? 短時間だけ閾値を超えるような音を検知したらって感じがほとんどじゃね >>64
そうなん?
デカイ音にはほとんど反応してしまうような・・・
もっとスマートな方法ないかいな? >>65
拍手の波形はほんとうに一瞬だから
大きな音はたいてい拍手より持続するから意外といける >>67
そうすか
でもまあどうせだから、一瞬の波形を分析して、
拍手のパンッ!と ドンッ! ガンッ! ぐらいは聞き分けられるか
チャレンジしてみるかな
コンデンサマイクの音質と、
Arduinoごときのクロックでできるかわからんけど >コンデンサマイクの音質とArduinoごときのクロックでできるかわからんけど
正しくは
「コンデンサマイクの音質とArduinoごときのクロックと自分のプログラミング力で」
でないか? わからんけどw 前に「リズム開錠」というのを考えた事があるな
郵便受けなどの簡単なロックを1キーのタッチセンサーを一定のリズムで叩く。
例えば337拍子やドドンパなどの拍だけのリズムタッチすると開錠となる。
遅いテンポや速いテンポに追従しようとして色々悩んだ
そしてそのことはいつのまにか忘れたw そういえば昔のトラ技に特定の手拍子に反応するキーホルダーっていうのがあったな >>72
カメラユニット使ってリズムよくダンスするのもお願いします。 ATtiny13AにUSBaspから書き込むとき、
最新のArduino IDE 1.8.13でbitDuino13を使ったら
書き込み装置のメニューからUSBaspが出ないわ・・・
1.8.13からメニューが項目化されて見やすくなったけど、
なにか対処法ある? Arduino EthernetのPoEが欲しんですが販売終了になってしまったので
代わりとなる互換機がありましたら教えて下さい。
ちなみにDFROBOT製の互換機を見つけましたので、それ以外でありましたらお願いします。
https://www.dfrobot.com/product-1286.html Arduinoで一番やる気削がれるのがあのクソIDEってゆうね Aliのrobotdynってショップにあったよ
AliアプリからURLのコピペ方法がわかんねw 指パッチンはアタック音(瞬間的に音量が上がるパルス波)じゃないのか
周波数だけだと誤動作しまくるぞ、犬が吼えただけで開錠する
シンプルな電話のピポパですら2音合成して認証してる 礼の部分で動体検知必要じゃねーか
テキトー言ってんじゃねえぞ それは超音波リモコンだな、よく誤作動したという話だが 夜中に11PM観るのにズバコンで操作してるとガチャガチャ音がして親に見つかっちゃうという やばいな
和田アキ子・せんだみつお・あのねのねが出てるあの番組も見れないじゃん 粗末なIDEに肥大したコード
Arduino自体が墓地 10年以上前のマックのおもちゃで圧電スピーカーをセンサーとして使ったのがあった希ガス Power Macintosh 6100/66AV持ってたけどそんなのはやってないな
主にビデオ編集とかしてた マクドナルドのマックと、マッキントッシュのマックを間違えているところが面白い >>93
気になって電圧スピーカーをオシロにつないでパンパンしてみた
至近距離だと2.5mS,10mV幅位の電圧波形が観測できた
パンパンしすぎて手が痛い・・・・ >>97
ダイナミック(マグネティック)スピーカもマイクになるでしょ?
確か、昔の玩具トランシーバはマイクとスピーカの両用だったかと >>99
そんな事はみんなわかってるんだよ。
トンチンカン君。 ■ このスレッドは過去ログ倉庫に格納されています