Arduino初心者熱烈大歓迎質問スレ part21
■ このスレッドは過去ログ倉庫に格納されています
http://www.arduino.cc/
【質問者心得】
・スレに一応目を通してから質問しましょう
・回答者はエスパーではありません。状況が分かるように詳しく書きましょう
詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです
【回答者心得】
・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう
・節度ある初心者さんには、特に優しくね
【分裂騒ぎ】
おさまった模様。くわしくはぐぐれ。
前スレ
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/
Arduino初心者熱烈大歓迎質問スレ part16
http://wc2014.2ch.net/test/read.cgi/denki/1451909868/
Arduino初心者熱烈大歓迎質問スレ part15
http://rio2016.2ch.net/test/read.cgi/denki/1451893274/
関連スレ
【Arduino】フィジカル・コンピューティング4【OSC】
http://wc2014.2ch.net/test/read.cgi/denki/1407830304/
学研マイコン Japanino ジャパニーノで遊ぶスレ 3
http://kamome.2ch.net/test/read.cgi/denki/1286354827/ >>305
どうもありがとうございます
上2行は void setupの中、下2行は void loopの中で動かすんでしょうか?
試してみます
あと、
https://www.arduino.cc/en/Tutorial/MidiDevice
ここを見ているんですが、自作関数はvoid loopの後に書かれてあるんですが、void loopは一番最後でなくてもいいんでしょうか? そういうのはC言語ではもっと他にも細かいルールがあるけど
ArduinoIDEが色々と正しい形に直してくれるから ちょっと前に暗黙の宣言無しだと怒られたバージョンがあったなあ。
その後しばらくしたら、えらく寛容になった。 arduinoの前にプログラミングの知識が少なすぎっぽい
先に純粋なc言語を少しでいいから身に着けてからやった方がいいと思う 宇野壽倫(葛飾区青戸6)の告発
宇野壽倫「文句があったらいつでも俺にサリンをかけに来やがれっ!! そんな野郎は俺様がぶちのめしてやるぜっ!!
賞金をやるからいつでもかかって来いっ!! 待ってるぜっ!!」 (挑戦状)
■ 地下鉄サリン事件
オウム真理教は当時「サリン」を作ることはできなかった。
正確に言えば 「作る設備」を持っていなかった。
神区一色村の設備で作れば 全員死んでいる。「ガラクタな設備」である。
神区一色の設備を捜査したのが「警視庁」であるが さっさと「解体撤去」している。
サリンは天皇権力から与えられた。
正確に言えば オウム真理教に潜入した工作員が 「サリン」をオウムに与えた。
オウム真理教には 多数の創価学会信者と公安警察が入り込んでいた。
地下鉄サリン事件を起こせば オウムへの強制捜査が「遅れる」という策を授け「地下鉄サリン事件」を誘導したのは
天皇公安警察と創価学会である。
天皇は その体質上 大きな「事件」を欲している。
オウム科学省のトップは 日本刀で殺された「村井」という人物だ。
村井は「サリン」授受の経緯を知る人物なので 「日本刀」で殺された。
http://d.hatena.ne.jp/kouhou999/20150224 #defineとconstは同じ役割のような気がしますが、どう違うんでしょうか? >>312
一応、#defineで(マクロとかじゃなく)定数を定義した場合という前提で
#define:型・アドレスを持たない
const :型・アドレスを持つ
enum :型はintで、アドレスは持たない
・・・じゃなかったかな、まあ、ちゃんとしたこと知りたい時はちゃんとした人の
書いたHP見た方がいいかも HPじゃなくて、使ってる処理系のマニュアルで確かめるべし。
ISO,ANSI準拠と言いながら特殊な独自仕様で動くもの多数。 >>317
まとめてくださって、ありがとー
助かります >>317
#define 文字列が置き換得られてからコンパイルされる。
エディタで文字列を定数に書き換えたのと同じ。
constはコンパイラの質や最適化レベルによって扱いが変わるだろう。
例えば、const int x=10; int y = x;
がy=10と同じコードになるとは言えないなあ。
enumは定数と同じになるかなあ。 >>318
正論なんだけど、スレの趣旨には合わないかも
厳密なこと知らなくて問題になるようなケースはあんまりないように思うし >>322
貴方の作りたいものを考えるのはハードル高過ぎるかと。
arduino project でググると色々出てくるよ
もしかしたら、何かのヒントになるかも知れません 貴重なヒントをご教授頂き、ありがとうございます
おならセンサー作りたいと思います >>310
やはり最初は
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}
からだよね。
ただ、Windowsプログラミングで
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{.........
を見たときは焦ったな。。。 >>280-282
ご回答頂きありがとうございます。
端にスイッチを設置するのが一般的なのですね。
先のような商品はそれだけで動かすことは想定されていないのですね。なるほど・・・。
モーター以外のスライド部分を水中に突っ込んで使用したいと思っていたのですが、
端にスイッチを設置するとなると難しそうですね。
282さんが励磁の電圧を〜という方法を挙げられていますが、ステッピングモーターって
端にぶつかってそれでも回転しようとして異常なトルクがかかった場合、
どうなるんでしょうか?大変なことが起きるのでしょうか? >>326
そろそろ実物を触ってみなされ。
昔は高かったが、今はモータとドライバ合わせて500円で実物が手に入る
実際に動かして、回転軸触って、思いのほか力がないので驚くかもね。 >>326
つい最近センサーの故障で、原点を取りに行ったままガガガッって2〜3秒うなってましたが、
今んところ壊れてないですね。
3Dプリンターの話です。
安いモーターとArduinoでいろいろやってみるのがいいんじゃないですかね。 >>327
>端にぶつかってそれでも回転しようとして異常なトルクがかかった場合
ステッピングモーターの場合、停止時でも保持トルクを維持するために
一定の電流を流すのが普通です。
定電圧ドライバの場合は、止まってる状態で定格電流を超えない電圧を
かけるように設計するし、定電流ドライバの場合も定格を超えないように
設定するので、回ってるかどうかは関係ない。
(むしろ、回ってるときのほうが色々な損失があって発熱するかも)
ちなみに、今はICが安くなったので、わざわざ定電圧ドライバを選ぶ理由はないかな
定電流ドライバだと、マイクロステップでドライブもでたりするんで あ、ごめん。330は>>326へのレスの間違いです。 >>326
水中から出てる側の端にスイッチつけたらいい
起動時は上に動かしてスイッチにぶつかったらそこを原点として下に動かす ステッピングモーターは
自発的に止まってる状態のがむしろ発熱する気がする
ただのヒーターみたいなもんだし… >>317
>>318
>>320
どうもありがとうございます
使ってる処理系のマニュアルとは具体的になにを指すんでしょうか?
Arduinoが使いたいんですが、C言語のリファレンスということですか? #include "MIDIUSB.h"
#define N_POTS 2
const uint8_t MIDICC = 0x0B;
const int potPin[] = {0, 1};
const uint8_t potCN[] = {0x07, 0x27};
const int toggleLPin = 9;
const int toggleRPin = 11;
const uint8_t toggleLCN = 0x50;
const uint8_t toggleRCN = 0x51;
uint8_t potValues[N_POTS];
uint8_t potValuePrev[] = {0, 0};
void setup() {
pinMode(toggleLPin,INPUT);
pinMode(toggleRPin,INPUT);
}
void loop() {
readPots();
sendMIDI();
sendToggle();
MidiUSB.flush();
}
void readPots() {
for (int i=0; i < N_POTS; i++) {
int val = analogRead(potPin[i]);
potValues[i] = (uint8_t) (map(val, 0, 1023, 0, 127));
}
}
void controlChange(byte channel, byte control, byte value) {
midiEventPacket_t event = {0x0B, 0xB0 | channel, control, value};
MidiUSB.sendMIDI(event);
}
void sendMIDI()
{
for (int i=0; i < N_POTS; i++) {
if (abs(potValuePrev[i] - potValues[i]) > 1)
{
potValuePrev[i] = potValues[i];
controlChange(0, potCN[i], potValues[i]);
}
}
}
void sendToggle() {
if (digitalRead(toggleLPin) == HIGH)
controlChange(0, toggleLCN, 1);
else if (digitalRead(toggleRPin) == HIGH)
controlChange(0, toggleRCN, 1);
} 訂正
上だと、トグルスイッチの位置にかかわらず常にCC80が出力されてしまいました。
そのため、PC側でポッドになにかの機能をアサインしたくてもスチッチの出力に反応してしまいます。
PC側のMIDI機器のAとBを切り替えるためのスイッチとして使いたいです。 >>338
どうもありがとうございます
void setup() {
pinMode(toggleLPin,INPUT);
pinMode(toggleRPin,INPUT);
}
を以下に変えたけれどダメでした
void setup() {
pinMode(toggleLPin,INPUT_PULLUP);
pinMode(toggleRPin,INPUT_PULLUP);
} >>334に対する直接の回答じゃないけど、
"#define const"とか"avr gcc const"でググったら色々出てくるよ
C++の規格書とかGCCのreference manual 読んでも、疑問の解消には
中々遠いかも >>333
そうですね
定電流ドライバでドライブしてても、設定電流に達するまでの時間はかかるから
停止時より投入エネルギーは少なく、投入エネルギー=機械的出力+発熱 だから
機械的出力がゼロのときは、投入エネルギー=発熱 になって、停止時のほうが
熱くなるってことなのかな・・・ スイッチのセンターを5Vにしておいた方が直観的にも理解しやすいだろ switch文のcase に使う定数は、enumなら使えるけど、const 宣言された変数は使えない。
#defineは、文字列をdefineされた定数値に置き換えるので、当然使える。 >>343
止まってるときの機械的エネルギーはホールディングトルクでねーの? 止まってるときは全部ジュール熱に変わる
動いてれば一部は運動エネルギーに ArduinoてかESP32のI/Oピンって内部でダイオード入っている?
アナログ読み込みで負電圧かかっても平気かな?資料見つからないです。 データシートには、348の言う通り載ってないみたいだよ
絶対最大定格にも、電源電圧くらいしかのってないし
まあ、普通のCMOSデバイスに入ってる入力保護回路が入ってないことは
まず(というよりほとんど絶対)考えられないけど、ダイオード入ってるからといって
負電圧かけていいというわけではない
まあ、外に電流を最大1mA程度に抑える抵抗つけとけば壊れることはないと思うけど
他人に回路見せる可能性があるときは、低リークのSBDをつけといたほうがいい
何やかや教科書的なこと言うやつがいるから v2.3のdatasheet穴空くほど読み返したけどどこにそんな記述あるん? >>352
351は、32ページのTable 9: DC Characteristics 中の VIL(Min =-0.3V)の記述のこと
言ってるんだと思う
まあ、これだけではクランプ・ダイオードが入ってる、という証拠にはならないけど
心配ならピンに1kΩくらいの抵抗入れてから-5Vとかにつないで
ピンの電圧を測って見たらいい
-0.7〜1Vくらいの値になってたら入ってるはず・・・ありゃ定格外だわ(笑)
で、↑の記述は「絶対最大定格って書いてないからええわ」って考えるなら
抵抗入れるだけでいいけども、絶対最大定格だとみなすと、これではダメだし
SBD入れるとしても品種が限定されてくる
http://akizukidenshi.com/catalog/g/gI-01333/ OK
http://akizukidenshi.com/catalog/g/gI-01370/ 300uAくらいなら大丈夫かも ちなみに、「中華はこれだから」って書こうと思って調べて見たら
意外やAVRも似たような規定の仕方
PICは、クランプダイオードの絶対最大定格(電流)+全体の消費電力という
規定の仕方なんで、正々堂々「抵抗だけ」って方法とれるんだけど どっちを知りたいかだな
ダイオードの有無が知りたい →データシートには載ってない
入力の最大定格が知りたい →データシートに載ってる おおいろいろありがとう
CTセンサの微弱交流を回路無しに入れたいな、というのがもともとでした
電流量でなく動いているかどうかの検出なんで値の変化がわかればよいなと思いました >-0.7〜1Vくらいの値になってたら入ってるはず・・・ありゃ定格外だわ(笑)
たいていのC-MOSデバイスの絶対最大定格が VSS-0.3V 〜 VDD+0.3V になっているのは、
入力ピンに、出力インピーダンスゼロの電圧ソースを繋いだ場合を前提にした定義。
同じように、最大入力電流が規定してあることが多いと思う。
1kΩを直列に繋いで、過電圧なソースに繋げばクランプダイオードに電流が流れて
結果として絶対最大定格を超える電圧になるけれど、最大入力電流は超えない。
この使い方はNGとは限らない。
いかなる場合も超えてはならぬのだから、クランプダイオードに電流を流しては
いけない、という考え方もあるけれど、デバイスによってはクランプダイオードに
電流を流すことで保護ができる、という書き方をしているものもあるし。 >>358
>同じように、最大入力電流が規定してあることが多いと思う。
それを書いてないから困るよね、っていう主旨で書いたつもりなんですけど >>283だけどAmazonでドローン用?のオーバーレイモジュールでMAX7456が使われていたからそれを剥がして使う事にするわ >>359
たしかに、ESP32の話でした。
ただ、-0.3V〜VDD+0.3Vと書かれていれば、クランプダイオードは入っているでしょね。 すんません、初歩的な質問なんですが、
日本国内でArduino UNOもしくはそれとほぼ同等のArduinoの種類で、
通販ですぐ届く(2日ぐらいで)ネットショップってありますか?
あったら教えてほしいです。 >>363
レスありがとうございます。
すみません、
・値段が500円以内のもの
この条件を言い忘れてました。
よろしくお願いいたします。 ヤフーオークションかな…
Aliとかで売ってるやつを大量に仕入れて色付けて転売してるやつから買え
日本発送だ >>365
送料がバカ高いのが多いから500円以下はなさそう 値段が500円以内であって送料は条件に含まれてない 500円じゃ無理だろ。なんでいきなりそういうアホな条件つけてくるわけ? ヤフオクならesp8266が送料入れて500円で買えるのあるな
UNOじゃないがまほぼ同等だろ。届くかどうかは出品者次第だが >>362を見て、「お、有るかな、どうだろな」と思って
探し始めた善意人の労力の総量 > 500円 という残念な結果に。 本当に時間と競っているなら、質問してレスを待つまでもなく、
Arduino UNO 互換 価格
あたりをキーワードにGoogleで検索すればいいわけだし。
2日が3日になったら大損をくらうってことなら、その大損の金額ってどれぐらいなのって話になる。
その大損が5000円の価値を超えるものなら、さっさと納期優先でそれなりの金額のものを発注すれば済む。
プログラミングをすることは手持ちの範囲で可能な範囲で合理的な思考を学ぶことだよね。 おっしゃ
なら公式UNOを498円で売ってやる
ただし、送料は4000円な 皆さんありがとうございます。
在庫管理が大変ですが、
今まで通りの店で買うことにします・・・。
ありがとうございました。 在庫管理って、どういう意味で書いてるのか分からんけど
中華で10個くらい買っといて、半分使ったらまた10個発注とかすれば
いいんじゃない?
※10個は、あくまでも【例】です >>375
分かりやすい例えありがとうございます。
ちょっとそのような感じで実践してみます。 >>376
釈迦の説法かも知れませんが
・AliExpressでの「Arduino UNO R3」購入例ですが、台数を多く発注すると何故か
1台当たりの単価が上がったりします。
・特別安価な「Arduino UNO R3」だとブートローダーが入っていない
・画像と違う本体が届く・・・6台購入して4台違う物が来た
購入前に質問しても、販売専門なので仕様に付いては解らない等で話にならない。
・Arduino UNO R3互換品だと300円〜400円(送料込み)発注から10日〜19日で到着
・アマゾン販売の"EasyWordMall UNO R3開発ボード"499円は、到着日時はAliExpressの
発注と全く同じです。 「釈迦に説法」な。
ま、この場合「老婆心ながら」という程度だと思うが…。 UNOと「ほぼ同等」の範囲が「機能性能」で「形状」を含めないならNANOの方が良くね? >>377
情報ありがとうございます
自分は499円の買ってますね・・・。
>>380
ピン穴がUNOとほぼ同じならNANOでもいいです >>356 >>358
勝手に決めちゃってるみたいだけど、>>350が書いてる通り
ESP32の絶対最大定格には入力電圧の項目はないですよ
-0.3Vは あくまでも DC Characteristics の VIL.Min
VILは、(壊れるとかダイオードがどうとかとは関係なく)
Lowとみなされることが保証される電圧範囲の規定だから
>>351の「負はちょっとしかだめって書いてある」というのが
データシートの解釈としては一番正しいのかも
※実際に、-0.3V以下だとLowとみなされない可能性がある、と
言ってるわけではありません >>384
最近の馬鹿がそんな言い回し理解できるとは思えねぇんだよ 釈迦の説法←単純ミス
釈迦に説法←訂正が入る
馬鹿に説教←どこから出てきたお前
そもそも>>377は>>376バカにしてない 「馬鹿に説教」は間違いじゃないし、言葉通りの意味に取ればいいだけ。
一方、自分のレスを「釈迦の説教」と称すなど、思い上がるのも大概にした方がいいレベル。
ただ、>>385の言い訳は恥ずかしい。
間違えたなら、訂正・謝罪するか黙るかどちらか。 >>388
誰にレスしてんのか知らんが>>377は見てから書いてるんだよな? >>390
説教と説法ね
>>388
お前と>>387の2人、仲良しかw 車速と同期して光が流れる車載イルミ作ってるのですが途中で行き詰まってしまいました。
LEDを順次点灯させるプログラムは完成しましたがGPSで取得した速度を同期させる方法が分かりません。
誰か教えて下さい!
使用機器は
Uno R3
WS2812のテープLED
みちびき対応のGPS受信機 どう光らせたいのかも、どう行き詰ってるのかまったくわかんないけど例えばこういうことか?
if (速度 < 10km/h)
10km以下の光らせ方()
else if (速度 < 20km/h
20km以下の光らせ方()
・・・ >>395
LEDが何個あるかわからんが
ただの点灯と消灯だろ?
なら全部並べて0,1のビット処理できるだろ?
速度がわかったら、LED1個の隙間分を何msで通過するかわかるだろ?
その時間でビットシフトすりゃOK
そのビットで点灯させるように作れ 光らせたいパターンは車と同じ向きに光が車速と同じスピードで進んでいくイメージです。
1、GPSで車速を検知
2、車速と同じスピードでLEDが端から端まで順次点灯
3、繰り返し
って感じをイメージしてます
行き詰まったのはLEDの点灯間隔の処理のところです >>399
「LEDを順次点灯させるプログラムは完成しました」って書いてるから
今は一定な順次点灯の間隔を、車速に反比例させて変えてやればいいだけなんじゃ? Leonardo+74HC595で1602Aに出力したいんですが
74HC595+LEDをハードSPIで点滅出来る事を確認し、
1602Aを直接続4bitモードでの動作確認は出来たものの
Leonardo+74HC595で1602Aを扱う方法がさっぱりです
最悪自分で一から書けば良いとは思うんですが、Leonardo+74HC595に対応した
液晶ライブラリて無いですかね >>401
原理的にはできるけれど、特別な理由なきゃ i2cインターフェイスの液晶か
1602用のi2cインターフェイスボード使ったほうがいいんじゃない? ぐぐると74HC595で1602Aを扱う事は広く行われててライブラリもあるんですが
全てUNO用で、UNOと違ってSPIがICSPにしか出てないLeonardoではどうした物なのか >>403
ICSPコネクタに繋げばいいというものではないの? >>404
初期化にpin番号指定したりLeonardはSSがとんでも無い所に出てたりするので
どうかと思ったんですが、ソース眺めた感じ↓のSPI専用版ならそのまま使えそう
https://github.com/omersiar/ShiftedLCD ■ このスレッドは過去ログ倉庫に格納されています