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/ やったことないですけどピンの位置によりますが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アダプタではどうでしょう。 >>200
本来のUSB仕様だとたしかに500mAまでなので、今回は給電専用のUSBを使うこと前提にしています。
ACから5Vを取り出すのが確実なのは分かりますが、今回はバイクに載せるので、できるだけ扱いやすいUSBに拘っています。 本来のUSBの限界こえてるってわかってんなら、まず5V1Aをはき出せる出力がUSB端子の電源のことをUSBと略すのをやめようぜ
回答する前に本来のUSBじゃダメだけど大丈夫?といちいち確認されるのも無駄でしょ なんかバイク燃やしそうで危なっかしいね。
電源を何から取るのか分からんが
バイクのバッテリーなら各所にヒューズ入れてね。
リチウムイオン電池のモバイルバッテリーは、危ないからダメ。衝撃で最悪火を噴くよ。 アマゾンのリンクが何も分かっていない感を出しているけど大丈夫なのか? 俺も初心者でよく分からんけど
初心者スレなんだから分かってる人が教えてあげたらいいんじゃね? バイクのバッテリーからUSBのコネクタを使って5V 1A以上取り出すっていうことでいいのかわからんが、
そう解釈するとして、こういうのじゃいかんのか?
https://www.amazon.co.jp/dp/B01MF93TRO/ >>201
acから5ボルトってどういうことですか?
(ここらへんの解釈をちゃんと整理していかないとほんとにバイク燃やしそう)
リレーを使っての電源取り出し方法はわかりますか? >>208
常識的に解釈すればこんな感じでは。
>(商用電源の)ACから(AC-DCアダプタを使って)5Vを取り出すのが確実なのは分かりますが、
>今回は(商用電源が使えない)バイクに載せるので、できるだけ扱いやすいUSB(接続のモバイルバッテリからの供給)に拘っています。 https://www.amazon.co.jp/KiloNext-バイク用-USBポート-防水キャップ-ブルーLED付き/dp/B01MF93TRO
こういうのじゃないのか >>209
なるほどそっちか。ACってオルタネーターのことを言ってると思い込んでて混乱してました ぜんぜんArduinoと関係ない話題ばかりだな
それよりStar Ottoはどうなったんだ? バイク板で似たような質問してる子と同一人物なのかな? そこら中で赤の他人を「子」呼ばわりしているのも同一人物なのかな?
掲示板弁慶って、とてもあわれだね。 「子」
自分は大人、自分の方が立場が上、って主張したいのだろうが、
こんな所で自分から言うところが何だかミジメで哀れっぽいな。
二人をよく知っている周りの人間が言うなら分らないこ事も無いが。 スリープのPOWER_DOWNで『徹底的』に消費電力を抑える場合は、
・ADコンバータを無効
・アナログコンパレータを禁止
・ウォッチドッグタイマーの禁止
・BODをオフ
ぐらいですか?あと、使わないピンのモードを、
OUTPUTかINPUT、HIGHかLOWどっちにすればいいですか?
徹底的に待機電力を抑えたいのです。 オープンになっているピンなら、C-MOSのICならプルアップ設定の入力か、出力(HでもLでも)で良いのでは? 「C-MOSの」は余分でした。Arduino前提だもの。
徹底的に下げたいなら、USB-シリアル通信のICが載ってるものは避けるとか
レギュレータでの消費電流も見直すとか、が必要かもですね。 >>218-221
Pro Miniなんですが、電源LEDとレギュレーターは取っちゃいました。
ピン設定ははOUTPUTならハイでもローでもどちらでもいいんですね。
ありがとうござました。 質問です!
ArduinoにPS2のケーブルを繋いで、ArduinoをPS2のコントローラーとして
機能させるライブラリって存在しませんか?
PS2のコントローラーをArduinoにつなぐサンプルは見つかったのですが、
逆が見つかりませんでした。
http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-0/
Arduinoは基本的なコードが書ける程度の初級者です。
「このあたり勉強するとわかるよ」的なアドバイスでもかまいません。
配線とプロトコルを解説しているサイトも見つけたのですが、
PS2コンのプロトコルをArduinoで送信するやり方がわかりません。
以上、よろしくおねがいします。 >>223
コントローラーの基板乗っ取りが一番簡単そうだけどな。
コントローラを分解して、ボタンの基板のところにはんだ付け。
リレー回路組んでarduinoで接続。 >>223
ttp://magicpuppet.org/rollingswitch.html
ttp://magicpuppet.org/rolling_switch_technical_document.pdf >>225
ありがとうございます!まさにこんな資料を探していました。
>>224もありがとうございます! アルディーノ初心者です(始めて4時間です)
Arduino Uno
DHT11温湿度モジュール(Temperature and Humidity Sensor)[DFR0067]
4桁7segLED(カソードコモン)(OSL40562-LB)
上記の部品を手に入れまして、温湿度計が作りたいです。
早い話
ttp://tsukutta.hatenablog.com/entry/2014/08/14/094815
と同じものを作りたくて
回路、スケッチをそのまま真似したのですが
コンパイルエラーとなり書き込みが出来ません
DHT11のデータをPCで読み込むためのソフト?はダウンロードしたのですが
それでも直りません
これから試行錯誤するつもりですが、どなたか新たに必要なソフトないしは正しいスケッチを教えていただけないでしょうか?
温度だけでもかまいません。とにかく表示させたいです <MsTimer2.h> というライブラリがないと予想。
ttp://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/TIMERtoLED/TIMERtoLED.htm
とか参考になれば。。。 >>228
うちの環境では全くエラー出ないよ。
測定結果もちゃんとシリアル・モニターに表示される。
つまり、リンク先のスケッチに間違いはない。 >>228
調べた感じでは何かソフトが足りないという感じの内容のようです
>>229
<MsTimer2.h>と同じワードがエラーメッセージにありました!
ダウンロードしてみます!
申し訳ないのですが睡眠をとらせていただきます
ありがとうございました<(_ _)> 232です
昨日のarduinoですが無事起動しました
ありがとうございました
これから温度によってLEDの色が変わるようにしていこうと思います! >>233
解決したら、その経緯を報告するのが筋。
といっても、このキャラに高望みは無理か…。 >>234
この流れなら>>232でやると言っていた内容そのままなんじゃないかな?
ちゃんと報告している方だ。 質問する
自分は寝る
報告は無い
ゆとりってこんなもん >>237
悪いなんて言ってない。
「ゆとり」を分析してみただけ。
あえて言うなら、悪いのは「ゆとり」でなくお前のような事なかれ主義。 >>236
質問する、質問に答える、お礼を言う
これだけでいいだろ
それが嫌なら答えなくていいぞ >>238
では、事なかれ主義になれ。
楽だぞ、そんなんじゃ生きているのがツライだろ?
良い診療内科を紹介してやってもいいw 遅くまでレスを待つ人が出てこないように、その日はもう書かずに落ちると宣言したことに「こんなもん」と言う。
「こんなもん」と言っておいて「悪いとは言ってない」と言う。
報告があったのに報告がないと言ってしまう。
「ゆとり」とひっくるめてこうだ、って分析ごっこ。そんな分析ごっこは聞いて不快になる人はいても、得をする人ってたいしていない。
たしなめられたら自分のことは棚に上げて相手を事なかれだと言う。
初心者スレで憂さ晴らしやめて。 >>241
なんの
つつ鏡
返しだ!
リエントラントでスタックレベルならぬ「つ」レベルが深くなる、ハハハ。
IDコロ助を相手に大人げない事をしてしまった。
いつもならアホの相手は深入りしないのだが、
少し5輪競技の成績も悪いしイライラしてたので・・・。
皆の衆、下らないやり取りスマン。 IDEが吐くメッセージすら読まないヤツがマイコン使うようななったんだ。
ことの良し悪し関係なく、もう何でもありの時代なのよ。 >>233
DHT11よりもBME280の方が、価格、寿命、寸法、ソフトの書きやすさで優れていると思う。
精度はなんとも言えないけど、経験としてはDHTは湿度センサが狂いやすい。
換装の例
↓
http://intellectualcuriosity.hatenablog.com/entry/2017/12/14/212651 そんなに嫌ならテンプレに追加して息苦しいスレに育てれば シリアル通信しているデバイスの間にかまして、パケットをフィルタしたいんですが
デバイス - Arduino - ホスト
|
デバッグモニタ(PC)
シリアルが3系統必要になります。
HardwareSerial + SoftwareSerial*2を使えば解決できると思ったのですが、
全く受信できません(スケッチは以下の通り)
void loop()
{
s1.listen();
while (s1.available() > 0) {
int b = s1.read();
char buf[10];
sprintf(buf, "1:%d", b);
Serial.println(buf);
}
s2.listen();
while (s2.available() > 0) {
int b = s2.read();
char buf[10];
sprintf(buf, "2:%d", b);
Serial.println(buf);
}
}
同時受信を実現しているライブラリってないのでしょうか ■ このスレッドは過去ログ倉庫に格納されています