Arduino初心者熱烈大歓迎質問スレ part20
■ このスレッドは過去ログ倉庫に格納されています
http://www.arduino.cc/
【質問者心得】
・スレに一応目を通してから質問しましょう
・回答者はエスパーではありません。状況が分かるように詳しく書きましょう
詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです
【回答者心得】
・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう
・節度ある初心者さんには、特に優しくね
【分裂騒ぎ】
おさまった模様。くわしくはぐぐれ。
前スレ
Arduino初心者熱烈大歓迎質問スレ part19 [無断転載禁止]©2ch.net
http://rio2016.2ch.net/test/read.cgi/denki/1500745528/
過去スレ
Arduino初心者熱烈大歓迎質問スレ part18 [無断転載禁止]©2ch.net
http://rio2016.2ch.net/test/read.cgi/denki/1485192244/
Arduino初心者熱烈大歓迎質問スレ part15
http://rio2016.2ch.net/test/read.cgi/denki/1451893274/
Arduino初心者熱烈大歓迎質問スレ part17
http://rio2016.2ch.net/test/read.cgi/denki/1471967293/
Arduino初心者熱烈大歓迎質問スレ part16
http://wc2014.2ch.net/test/read.cgi/denki/1451909868/
関連スレ
【Arduino】フィジカル・コンピューティング4【OSC】
http://wc2014.2ch.net/test/read.cgi/denki/1407830304/
学研マイコン Japanino ジャパニーノで遊ぶスレ 3
http://kamome.2ch.net/test/read.cgi/denki/1286354827/ アマゾンで手動ポンプディジタル表示の血圧計\2000位で売ってるから
それ買ってばらすなりして研究しろ
A&Dのやつ
(最近血圧高いと言われたので買った) 血圧測定はよほどの簡易(手抜き)方式でなければコロトコフ音の解析がキモだから。
単にコロトコフ音の有無では判定(最大、最小)出来ないから。
自作で意味のある測定はまず不可能だよ。 自動のディジタル血圧計ならaliexpressで1000円程で買った
家庭用の安価な血圧計ならコロトコフ音じゃなくて脈波を利用したオシロメトリック法が一般的だったと思う 自分は逆に血圧が低すぎてナチュラルにブラックアウト寸前な状態で、
目が見えなくなったりするので常時モニタリングして不味い水準になったら
アラーム鳴らせたり出来たらなと思ったんですが難しそうですね 血圧常時モニタってどうやるんだろう
カフを常時、圧の上げ下げやるのか?
>>104 医者に行ってるだろうけど
上げる薬飲んでる?
深煎りすると医療スレになっちまうか 直接法でも計れるみたいだから、インプラントが発展したらイケるんじゃないの >>105
>>98の下、愛知県立大の教授は心拍センサーでの常時モニタリングを目標としてるみたいです お邪魔します
arduinoからATmega328のマイコンだけ抜き取って3.3Vで16Mhzで動かすと(本当はダメなんですけど)I2C通信はきびしいですか?
LCD位は表示するんですが
やっぱり8Mhzに落とすかしないとダメですか?
CCS811をつなげてます ダメって何がダメ?
データシート見ると3.3Vでも16Mでmega328は動作する
I2Cの速度も上がってCCS811が付いてこれないというなら
そのあたりはソフトで調整してやればいい
(ライブラリ見てウエイト突っ込む) >>109
>データシート見ると3.3Vでも16Mでmega328は動作する
ATmega328/Pのデータシートではこうなってるのでは?(赤色は俺が追加したよ)
返事ありがとうございます
クォーツ8Mに交換しても動きませんでした
違うところに原因ありそうなので、もう少し自分で頑張ります >>110
ああそういうことか
サマリしか見てなかった すまん
でもグラフの下部はメーカ保証値みたいなもんだから
オーバクロックで動きそうなものと思う
(CCS811が3.6Vmaxなのね)
8Mの速度で間に合うならそれがいいよ I2Cなんて100k〜400kHzくらいなんだから多分ちゃんと信号線吊ってないとか
そのセンサを使ったことが無いし、動かないと言うのが有効なデータが取れないのか通信そのものが無理なのかどっちかわからないからアレだけど 48時間のエージングと20分のウォームアップが必要とかAVオタみたいだな。 108です
CCS811の件ですけど
arduino UNOにつなげると上手くいきます
センサーがsparkfun製のモノでして、Hookup Guide通りに接続してソフトもGitHubで拾ってちょっとLCDつなげる改造して動きました
ただarduinoからでているI2Cクロックとデータラインが5Vですよね
本当はここに5Vと3.3Vの変換が入るはずなんですがそこが疑問に思ってて
Hookup Guideもその様な結線図になってます
あーオシロ欲しいお金ない頭痛い >>116
I2Cがオープンドレインなので、CPUの5Vラインからセンサーに流入してくることはない。
UNOの 328PはHが VCC×0.6 なので、3.3Vでプルアップされていれば問題はないかな。 I2Cぐらいの電圧になると、1chのオシロキットだと力不足になりますね。悩ましい。 あ、問題無いんですか
いいこと聞いた
これでケースに組み込みします
素晴らしいセンサーでした
歯が痛い原因が換気不足なのが分かりましたし
ありがとうございます >>118
オシロの1chと2chの差は大きい。
2chあれば「波形の比較」が出来るので。
彼女が一人いるか二人いるか、の差より大きいと思うw 彼女が二人いれば「波形の比較」は出来なくても
他の色々な点を「比較」が出来るから
オシロの1chと2chの差と同じなんではw それでも無いとあるとでは随分出来ることの幅が変わるしな
結構長くお世話になったDSO138 ATTiny44って人気ないの?
安くてピンがいっぱいあってメモリも4KBもあるのに、
世界的に人気ないのね オシロは3万〜4万が購入価格の最低ラインだと思う。
金が足りないなら1ヶ月バイトするとか女に貢がせるとかしてくれ。 最低ラインは人それぞれ。
まずは「今、無いよりある方がずっとマシ」 DSO138買ったわ。まだ使い方がよく分からんわ。
電子工作程度じゃ価格的にこれしか選択肢ないし。 オシロってよく耳にするけど、まだ欲しいと思わないなぁー
でも、だんだん欲しくなるんだろうなぁー たまにオシロがあったらなぁっていう場面がある
DSO138にだいぶ助けられた PWMで波形作ってLPFの定数を決めたりするときにオシロあると楽しい。 日本には「安物買いの銭失い」という言葉があるのだが
節分も近いことだし「鰯の頭も信心から」ということで(ちょっと違うか?)w
DSO138バンザーイ 高いモノ買い過ぎると逆に関税かかるからそうでもないんだな ことわざを持ち出せば、何か伝統によりかかった権威があるように錯覚する人がいる。せこい。
>>137
「馬に乗るまでは牛に乗れ」
「Something is better than nothing.」 こんにちは。arduinoで論理設計(加算器、カウンタ、シフトレジスタ、フリップフロップなど)の勉強をしたいのですがどれを購入すればいいでしょうか。 汎用ロジックICのデータシートをひたすら見るだけでいいんじゃないかな。 昨日Arduinoデビューしました
まずは基本のLチカからということで、解説サイトを見ながら始めてみたのですけど
直差ししてD13-LED-GNDの接続で光らせているサイトがいくつかありますが、抵抗入れなくて大丈夫なのですか?
たとえば
ttps://qiita.com/zakiyamaaaaa/items/a009b0c9adc4fbbb099f
下のサイトを見ると、やはり抵抗を挟む必要がありそうなのですが、、、
ttp://www.musashinodenpa.com/arduino/ref/index.php?f=2&pos=83
ちなみに、D13とGNDに直接差して点灯するのは確認しました
また、+5VとGNDに直接差してLEDが破裂するのも確認しました CPU/LEDのデータシートを見れば、取り出せる/流し込んでいい最大電流が書いてあるから、
それを超えないよう抵抗かますとかの電流制限をするのが当然。
なぜ直結で壊れないのかわからないけど、壊れても文句言えないよ。
バカなことを平気で公開してるようなサイトは見ないほうがいいぞ 砲弾LEDの最大定格電流が100mAくらい
そんぐらいまでなら壊れない
328pのデジタルピンの出力特性より
25°Cのとき10mA位流すと0.25V位の電圧降下起こします
ちょうどLEDのVfとつりあうとこで電流がきまるのでは
あと砲弾LEDの順電流20mAは信頼性、性能を発揮できるのが20mAていうこと やったことないですけどピンの位置によりますが2個以上LED直結するとarduino壊れるかも
制限抵抗は基本入れてください そのブログ、万一逆につなげると、LEDが壊れます なんて書いてあるぞ
うー-ん 見る気なくす >>145
https://playground.arduino.cc/Main/ArduinoPinCurrentLimitations
昔Unoで実験した時80mA近く瞬間的に出たこと合ったから間違いなく制限抵抗は要る
後、LEDや抵抗やコンデンサを焼いたり爆散させたりはあるあるだけど身体に有害だから焼くのは抵抗ぐらいまでにしといたほうが良い ArduinoでLEDを点灯するのにプルアップ抵抗使った方法があった気がするんだがそれはどうなんだろう >>146-
みなさん、ありがとうございます
やっぱり必要ですよね、すっきりしました >>151
確か30kΩだから暗いけど暗所なら発光してるのは分かるレベル ああ、ただ電源投入時はH/Lどっちか分からんし危ないからあんまりオススメはしない 元々基板に付いているLEDをチカチカすればいいだろ ていうかD13って基板上に実装されてるLEDのあるポートじゃなかったっけ、あそこ確かUNOとかだとすでに抵抗入ってなかった? D13→1k→LED→GNDだっけか
どのみちポートに抵抗なしでLED挿したら危ないと思う ロジックの出力にLED直付けって昔はアマチュアの作例ですら見たことがなかったな・・・
「出力抵抗で電流制限されるから問題ない」とかいう、訳がわからん理由とともに広がった覚えが まあ、それやって実際にデバイスが壊れたケースが
バナナの皮で滑って死んだ人と同じくらい少なかったんだろうな volatile宣言した変数をシリアル出力しようとするとコンパイルエラーになるのですが何故でしょうか?
volatile byte test[16] = {0};
void setup() {
Serial.begin(19200);
}
void loop() {
Serial.write(test, 16);
delay(1000);
} >>162
Serial.write(buffer,size)のメソッド(メンバー関数)宣言は
size_t HardwareSerial::write(const uint8_t *buffer, size_t size);
volatile byte test[16] = {0}; は
配列の中身が volatile ってことじゃなく、volatile byte* test で
メソッド宣言の const とぶつかってるんだと思う arduinoで作ったものを最終的に持ち運びができるようにしたいのですが、
プロトタイプ的なケースって皆さんどうやって制作してますか?
市販のものは色々と買ってみましたがどれもサイズが合わず…
(aruino UNOからATMEGA328Pにするのを前提)
最低限の防水ができればいいんですけど、そうなるとジップロックにいれてゴムで縛る程度になっちゃいますかね・・・? arduino初心者です。
タクトスイッチを押すとマウスカーソルが
現在の位置から指定ピクセル分動くスケッチを書きたいです。
下記のように書いたところ、Mouse.moveの数値はピクセル数ではないようで
うまくいきません。どのように記述すればよいでしょうか?
arduino microを使用しています。
よろしくお願いします。
#include <Mouse.h>
void setup() {
Mouse.begin();
pinMode(6, INPUT_PULLUP);
}
void loop()
{
if ( digitalRead(6) == LOW)
{
Mouse.move(1, 0 , 0); //横に1動け
delay(100);
}
} >>164
タカチの防水ケースはいかがでしょう。
ただし、USBケーブル等のハーネスを通す必要がある場合、
ハーネスのコネクタを取る
ケースに穴を開け防水用ブッシュをつけ、ハーネスを通す
ハーネスにコネクタを付ける
の、加工が必要です。
http://www.takachi-el.co.jp/data/catalog/catalog02.html >>166
ありがとうございます
ただ、市販品だとやはり合わないと思うのです・・・ >>165
スケッチはそれで動きますよ
ケーブルの接触不良、配線などのハードまたはパソコン認識確認してみて下さい >>164
何を入れるんですか?
自分はタカチのケースばっかりです
リポバッテリーにしたり小さい部品使うなどしてますが パナソニックの低圧進相コンデンサの容器がいい感じかなって思った
中がどんな風になってるのかは知らないけどw >>168
はい。スイッチは動いています。
Mouse.moveの数値はピクセル数ではないようで
うまくいきません。
よろしくお願いします。 >>172
ミッキー マウス 単位 でググってみて >>162
(仮にコンパイル通ったとしても)volatileとかつけても意味ないと思うよ
割り込みで書き換えられるバッファの内容を、メインのSerial.write()で
出力しようという意図なんだと思うけど、例えば、3byteめまで出力した
時点で割り込みかかって、バッファ書き換えちゃったら4byteめからは
新しいデータを出力することになる >>163
なんか説明が変だなあ。
size_t HardwareSerial::write(const uint8_t *buffer, size_t size);
という宣言の意味は、bufferというポインタの指してる先がuint8_t型の
データで、それは変化しない。という意味だよ。
volatile byte test[16] = {0}
という宣言は、文字通りtest配列の中身がvolatileで、中身がいつ変化するか
予想できませんと言っている。
勝手に変化する配列要素を、変化しない値を指すはずのbufferポインタで
指したら矛盾するだろ?
ということだと思うが?
ちなみに、CやC++の宣言は、変数名に近い方から順に解釈するのが正しい。
以下の宣言を正しく読めるかな?
int *(ar[8])
int (*ar)[8]
const int *ar
int * const ar
const int *volatile ar;
答え
int *(ar[8]) はarは8要素の配列で、一つ一つが指している先がint型。
int (*ar)[8] はarが指している先は8要素の配列で、一つ一つがint型。
ar++とやるとint 8個分ポインタが進む。
const int *ar はaの指している先は、値が変化しない(代入も不可)int型。
int * const ar はarは値が変化せず(代入も不可)指している先がint型。
この場合、初期化時に値を入れないと使い物にならない。
const int *volatile ar;
考えてみてね。 constは「変化しない」じゃなくて、関数の中で「いじるな」というだけでしょ。
volatile で const なんてのは使いまくりだよ。 >>178さんの>>163に対する指摘は正しいと思うんだけど
>>178さんと>>179さんのどっちが正しいかは分からないな
size_t HardwareSerial::write(const uint8_t *buffer, size_t size); は
・関数の定義に対しては「中でいじるな」ってことを強制する
(いじるようなコードを書くとコンパイルエラーになる)
・外部に対しては、「関数内部でいじってないことを宣言する」
・・・ということだけだと思うから、arduinoのコンパイラ(GCC++)が
volatile byte test[16] = {0}; にはエラーを出して
byte test[16] = {0}; にエラーを出さない
のが(何かに基づいて)正しいのかどうかっていうことについては
議論あるところだと思う ボタンに0.1μFのコンデンサを付けたらチャタリングが消えた!
コンデンサすげー! >>179
void func(const int x) {}
の場合、xは値渡しで渡され、
この関数入口で初期化されるconst int変数であり、
関数の中だけで存在する。
この値の生きている関数内で定数。
仮にconstを無くして関数内でx=0を実行しても外部の変数に伝搬しない。
しかし、
void func(const int *x) {}
というのは、xが指している先がconst intという意味
const intは初期化時に値を入れない限り変更できない。
constという修飾子はこの関数が変更しないことを宣言するのでなく、
const int宣言されている値が外部にあることを宣言している。
それがvolatile intだったらおかしいし、単なるintでもダメ。
残念ながら、変数名に近い方から順に解釈すると、このようになるし、
それ以外の解釈がない。
constを使って関数が外部変数を変更しないと宣言したいのは
よくわかるけど、仕様上はそういう扱いにならない。 >>182
>constを使って関数が外部変数を変更しないと宣言したいのは
>よくわかるけど、仕様上はそういう扱いにならない。
void func(const int *x); とすると、関数内部では
xが指している先の値を変更するコードは書けないわけだから
外部変数を変更しないと宣言したのと同じことなんじゃ? void foo(const (int * x)) ていうのはないんか
void foo(int const * x) てのはkelは通した。 >>183
> 外部変数を変更しないと宣言したのと同じことなんじゃ?
同じじゃないんだ。
void func(const int *x) {}
と書くと、関数func()内で外部変数を変更しないと宣言した以外に、
*xの指す外部変数はconst宣言されている変数だ。
と言う、余分な事も宣言してしまうんだよ。
その結果、
int ivar;
void func(const int *x) {}
void fun2c2(void) {
func(&var);
}
こういうプログラムは、func()の呼び出しで、
引数の型が違うと怒られてしまう。
なぜなら、varがconst intではないからだ。
もともとの質問者の状況はこの状況に近い。
怒られないためには、やりたくはないけど、
void fun2c2(void) {
func((const int *)&var);
}
というキャストが必要。 >>186
ちょっとtypoがあった。
さっきのコードのivarはvarと読み替えてくれ。 ArduinoNanoと、MH-Z19Bを、
https://github.com/nara256/mhz19_uart
を使って、内サンプルの
mhz19_getppm.ino
を動かしてみたんですが、シリアルモニターには、
error: can't get MH-Z19 response.
MH-Z19 now warming up... status:error: can't get MH-Z19 response.
-1
となり、数値を取ってくれません。
センサーのrxはD4に、txはD5に刺してます。
あとはGNDと5Vを繋いでます。
どこかおかしいでしょうか。 データシートにはUART(TTL interface level 3.3V)とあるが
5V仕様のNanoを使っているのではないですか? 俺も>>189と同意見
Nanoのtxに指定したピンにセンサーのrx
Nanoのrxに指定したピンにセンサーのtxをつなぐんやで
Nanoが5V仕様ならレベルコンバーター入れとくんやで arduino mh-z19でググると直結してる人が結構多いね
5Vトレラントじゃないのに
まあ直ぐに壊れることはないかもしれないけど
ウェブ上にそういうのが沢山あるのが気になるわ Interface level 3.3 V(Compatible with 5V) って書いてるよ >>189、191
でした。。。。
rxはrx同士、txはtx同士と思ってました。
でも、レベルコンバーターやら、5Vトレラントやら、また???な事が。
データシート見ると、Working voltageが4.5〜5.5VDCとなってたので、
Arduino Nanoの5Vに直結したんですが、これじゃマズいんでしょうか? その電圧範囲は電源として与える電圧の数字
その範囲ならちゃんと動くよってことだから5Vなら問題ない
インターフェイスの電圧レベルとはまた別の話 arduinoにLEDテープを組み合わせようと思っていますが、大量の電力(5V1A近く)が必要なので外部のUSBから電源をとろうと思っています。
https://www.switch-science.com/catalog/2247/
USBから5Vを取り出す際、↑を使って単に接続しても問題ないでしょうか?
それとも、↓のようなものを使ったほうがいいのでしょうか?
https://www.amazon.co.jp/gp/aw/d/B00LM1XVRK/ 1Aだろうが100Aだろうが、USB規格の電源から取るんなら
そのまま取れば良いんでない? >>197
ありがとうございます。ただ配線をしただけのものにしようと思います。 スマホなんかの充電用アダプタからUSB給電なら行けると思うけど
PCのUSBポートから1Aは規格外では?(typeCを除く)
素直に5Vアダプタではどうでしょう。 ■ このスレッドは過去ログ倉庫に格納されています