X



トップページ電気・電子
1002コメント342KB
Arduino初心者熱烈大歓迎質問スレ part22
■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん垢版2018/08/18(土) 08:37:53.78ID:ridqLuOK
http://www.arduino.cc/

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


前スレ
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/
Arduino初心者熱烈大歓迎質問スレ part16
http://wc2014.2ch.net/test/read.cgi/denki/1451909868/
Arduino初心者熱烈大歓迎質問スレ part15
http://rio2016.2ch.net/test/read.cgi/denki/1451893274/
0002774ワット発電中さん垢版2018/08/18(土) 09:34:30.26ID:+bACXv5b
このスレッドは過去ログです。
プレミアム会員に登録すると続きを読めます。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

───────────────────
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
0004774ワット発電中さん垢版2018/08/18(土) 11:41:36.07ID:dwhMayOW
※格安Arduino互換機の注意

USB-シリアル変換にATmega16U2ではなく、CH340系が使われている場合がある。
Windows7以下、MacOSXはCH340系のデバイスドライバーを別途インストールする。

CH340系ドライバーのダウンロード
http://www.wch.cn/download/CH341SER_EXE.html
0005774ワット発電中さん垢版2018/08/18(土) 11:46:47.54ID:dwhMayOW
※Arduino Nano互換機の注意点

2018年1月に新しいブートローダーが公開される。
互換機は古いブートローダーが書き込まれている場合がある。
書き込み時に「avrdude: stk500_recv(): programmer is not responding」のエラーが出る場合には、
ツール→プロセッサで「ATmega328P (Old Bootloader)」 を選択するか、
ツール→ボードで「Arduino Genuino Uno」を選して書き込む。
または、最新版のIDEに更新しブートローダーを最新のものに更新する。
0008774ワット発電中さん垢版2018/08/18(土) 14:07:45.71ID:bdPvI7OZ
勝手に〜気取り、って気に入らないのか。おまえ何様のつもり?
何か書くときはお前に書いていいかどうか確認しろってか?
0010774ワット発電中さん垢版2018/08/18(土) 15:21:29.09ID:ridqLuOK
>>9
いいのではないの?
技術的な内容に異議がある人は内容で反論すればいいわけだし。
0013774ワット発電中さん垢版2018/08/18(土) 17:18:34.09ID:d+HXjG7p
Arduinoやってる人でAdafruitを避けて通れる人は居ないんじゃ?
直接買ってなくても代理店から買ったり、最低でもライブラリは絶対使ってるはず。
0015774ワット発電中さん垢版2018/08/18(土) 20:35:48.62ID:Nba7/VAS
製品企画も中華がパクって安いコピー品を沢山出してるから業界への貢献度はデカいよ
0016774ワット発電中さん垢版2018/08/19(日) 03:08:52.04ID:mNPHNTs1
>>9
失礼なことを書いて申し訳ございませんでした。
全く問題ございません。
0020774ワット発電中さん垢版2018/08/19(日) 09:57:28.68ID:8sUv3/9T
20kHzなら設定できるdutyは0〜800だろ
クロックを周波数で割ったのが大体の分解能だ
0%か50%か100%の3段階でよければ8MHzだ
1%刻みなら160kHzだ
0021774ワット発電中さん垢版2018/08/19(日) 13:58:31.37ID:tT55m5+H
Arduinoの中に書き込んだプログラムを取り出す方法はないですか?
PCをリカバリーしてPCに保存したデータを全てなくしてしまいました。
0022774ワット発電中さん垢版2018/08/19(日) 15:23:45.36ID:BFxwAddO
>>21
諦めたほうが良いねぇ
0023774ワット発電中さん垢版2018/08/19(日) 15:39:22.48ID:tT55m5+H
やっぱりそうですか、ご返信いただき、ありがとうございました。
0027774ワット発電中さん垢版2018/08/20(月) 07:59:33.13ID:+U3i+INK
バイナリ読みだしても最適化されまくりだから、ソースに戻せたところで、質問者の欲しいソースとはかけ離れすぎだろw
それでも問題ない輩は、そもそも質問者しねーだろうし、ソースのバックアップもしてるだろーな。
0028774ワット発電中さん垢版2018/08/20(月) 12:17:39.74ID:JN6FMV7B
FLASHが余ってたらスケッチをLZMAの7zとか強烈なアルゴリズムで超圧縮してバイナリデータとしてROMのケツに書き込んどけwwww
0029774ワット発電中さん垢版2018/08/20(月) 12:22:17.54ID:+U3i+INK
展開するCPUが8bitなのはともかく、展開先のメモリをどうやって工面すれば…
せめて、ビデオメモリが展開先として使えたらいいのに。
0031774ワット発電中さん垢版2018/08/20(月) 23:54:18.58ID:8D1c08qr
>>26
ゲームじゃないけど
appleIIのエミュレータなら有ったと思う。appleII上でゲームも可能だと思うよ。
0035774ワット発電中さん垢版2018/08/22(水) 00:00:18.59ID:+iBk16iX
>>34
ArduinoIDEはArduino専用の統合開発環境。
ProcessingはJavaを単純化したプログラム言語のこと。(専用の統合開発環境も同名)

Arduino側のプログラムはArduinoIDEで作成して、
Arduinoの出力をPCで処理する部分をProcessingで書く。
後者はProcessingである必要はない。CとかPythonとかでもいい。
まぁ、作例がそれなりにあって、簡単だからProcessingを使うことが多い。
0036774ワット発電中さん垢版2018/08/22(水) 01:07:19.54ID:Ld1zkqF3
githubのライブラリーに付属のサンプルとかは、
.pde(Processing用のファイル)から、
.ino(Arduino IDE用のファイル)に変更していってるね。
更新してない古いライブラリーは.pdeのままだったりする。
0038774ワット発電中さん垢版2018/08/23(木) 14:46:57.78ID:WCmbOQAH
マイコン初心者です。arduinoスレで質問するのは違うと思うのですが、質問させてください。
無線でスタートストップラップをするストップウオッチを作りたいのですが、何(arduino raspi pic)を使ったらいいか、何を勉強したらいいか、どんな部品を使えばいいかわからないので教えてください。

センサC1 から無線で信号を受け取ったらストップウオッチS スタート
センサC2 から無線で信号を受け取ったらS ラップ計測
   C3 から無線で信号を受け取ったらS ラップ計測
   Cn から無線で信号を受け取ったらS ストップ

読み取りも無線でできたらいいなと思っていますが、SDカードかなにかに保存してみればいいかなと思ってます。
センサとストップウオッチの距離は10cm程度でそれ以下でも構いません。
なるべく小さく安く作りたいと思っています。
これ使ってこれ勉強しろで構いませんよろしくお願いします。
0043774ワット発電中さん垢版2018/08/23(木) 20:53:27.41ID:+mUsMySm
>>38
ESP-WROOM-02かな。
電池駆動とかどのくらいの距離離すかとかも書いた方が良いと思う。
LTEやLoRaじゃないと無理だわ、ってことも有るし。
0045774ワット発電中さん垢版2018/08/24(金) 01:08:37.54ID:NeTUMkju
>>39-44
ありがとうございます。電池駆動で距離は30cm程度です。
外で使うのでwifiモジュールは適していないのかなと思いました。
それとあまり距離は出さなくていいので今のところ赤外線モジュールが視野に入ってます。
0046774ワット発電中さん垢版2018/08/24(金) 01:21:32.23ID:c4TmFY1p
距離30cm程度で無線の必要性がよく分からんけど
赤外線モジュールだと、位置関係もある程度制限されるし
片方をポケットとかバックパックに入れるわけにもいかんよね
0047774ワット発電中さん垢版2018/08/24(金) 02:38:12.60ID:9EF9gxpi
赤外線は屋外だと太陽光の影響を受けて距離が短くなるよ。
と言っても30cmなら大丈夫と思うけど!
0050774ワット発電中さん垢版2018/08/24(金) 11:09:00.40ID:zoD73X1X
ESP32を5個買って、青歯接続が無難かなぁ…
あとでパソコンへデータ送信するのも、無線LAN経由でらくらく送れるし。
0053774ワット発電中さん垢版2018/08/24(金) 16:10:14.53ID:L5bumxoa
最近の青歯は省電力じゃないの?
CR2032で半年とか持たせられるし。
0054774ワット発電中さん垢版2018/08/24(金) 16:42:11.90ID:fuAl2iNy
使ったことないからあれだけど
電波飛ばすんだからその間は飛距離に応じた電気はくうよね?
0055774ワット発電中さん垢版2018/08/24(金) 16:54:50.74ID:MgknBLtb
カシオのスマートウオッチ、3年ほど使ってるけど電池交換は半年に1回だけ、もちろんCR2032を1個使用。
詳しい仕組みはわからないけど、電気をバカ喰いすることはないんじゃないかと。
0056774ワット発電中さん垢版2018/08/24(金) 16:56:53.67ID:Bo4eP/q9
PCのワイヤレスキーボードとか単4電池一本で1年以上もったりするけど
あれどうなってんの?1.5vで動いてるの?3vに昇圧してんの??
0058774ワット発電中さん垢版2018/08/24(金) 22:35:52.70ID:SDAWvoWt
>>56
大体は昇圧してる。
電波に関しては、スペクトラム拡散技術のおかげで、
かなり弱い電波でも受送信できるようになってる。
0059774ワット発電中さん垢版2018/08/25(土) 00:37:44.22ID:lKGhq8QJ
>>45
その程度なら、リモコンみたいな方式で赤外線で飛ばすのが手っ取り早くて消費電力も小さくて良いんじゃない?
主要なマイコンならちょっと調べればリモコンの製作記事見つかるだろう。
センサ側は16F1のpic@100円前後、受け側はnanoとかで十分。
使うセンサーによっては受け側以外はマイコンすら不要かも。
リモコン専用のチップ有るし。
0060774ワット発電中さん垢版2018/08/25(土) 10:14:34.05ID:51Erqn2W
ありがとうございます。
基本的には赤外線で、ストップウィッチの方にブルートゥースも乗っけて読み取りを楽にしようと思います。

まずはunoで地道に勉強しようと思います
0061774ワット発電中さん垢版2018/08/25(土) 13:00:38.50ID:hhhT3Fm7
ブレッドボード上で抵抗の足同士が接触してVccとGndショートさせてUSBポート壊したんだけど
ポートを保護する方法を教えてください
0063774ワット発電中さん垢版2018/08/25(土) 14:32:52.98ID:/JmuYw0q
青歯とか書いて悦に入ってるヤツって
いまだにすし屋でアガリとかオアイソとかガリ
とか言ってヒンシュク買ってそうだよなw
0064774ワット発電中さん垢版2018/08/25(土) 15:23:09.81ID:TgX+Cifx
青歯が恥ずかしいのは当て字の中二臭さ、今時じゃなく始めから恥ずかしい。
寿司屋隠語は業界用語なので客が使うのは恥ずかしい。
0068774ワット発電中さん垢版2018/08/25(土) 20:38:42.57ID:JKe48l7i
processingとの連携を勉強中で教えて頂きたいです。
xbeeとxbeeシールドを使い、xctuを起動したPCへ無線で繋げたいと思っています。processing1.5.1を指定している数年前のページがあったりするんですが今だと最新版でも良いのでしょうか?
0070774ワット発電中さん垢版2018/08/26(日) 07:44:45.36ID:jPZor44m
do文の中にanalogRead入れたら値が全く読み込めない
なんで?
for文なら動いてます
0073774ワット発電中さん垢版2018/08/26(日) 11:27:50.94ID:jPZor44m
>>71
もしかしたらdo文が繰り返さず
1回で抜けてるかも知れない
whileの時間増やしても速さが変わらない
0074774ワット発電中さん垢版2018/08/26(日) 11:35:52.38ID:9Xm7gaaZ
>>70
ふたつのプログラムを見ないと何ともだけど、while文の抜け出し条件が未成率で無限に抜け出せてないとか?
do文が無しで1回のみ実行だとアナログ値は読めてる?
そもそも読めないって、読みに行ったら戻ってこないの?
0075774ワット発電中さん垢版2018/08/26(日) 11:56:01.94ID:smhQmnH7
int analogpin = 0;
int count = 10;
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long clocks = millis();
int MAX = 0, MIN = 1023;
int data = 0;
int total = 0;
float ave = 0;
float mA = 0;
for (int i = 0; count < i; i++) {
unsigned long start = millis();
do {
data = analogRead(analogpin);
// Serial.println(data);
MAX = max(data , MAX);
MIN = min(data , MIN);
}
while(millis() - start <= 22); //50hz1サイクル20msプラス10%

total += int(MAX - MIN);
}
ave = total / count;
mA = ave / 2.0 / sqrt(2) * (5000 / 1024);
Serial.println(mA);
}

初心者だから読みにくいのは許してね
交流電流をクランプ式のセンサーで読み取りたいのです
電源は5vを4.7キロオーム2つで分圧してクランプの片側へ
クランプのもう片側はA0へ
クランプと並列に補助抵抗200オームをつけて
これだけの回路です
シンプルだけどfor文では動きました
質問のアナログ値1回は読めてるかどうかですが
スケッチ上にdo文の中にprintln置いていますが
それを生かすと止まります
故に読めてるかどうかは分かりません
出力はゼロをひたすら出力します
0076774ワット発電中さん垢版2018/08/26(日) 12:03:58.73ID:0BvjDZgt
説明しますね
交流50hzなのでワンサイクル20ms
1割多めで22msワンサイクル分の最大最低を読み出します
それの10回分の平均を出して
計算して実際の電圧にします
最後の電圧から電流に変換する式が抜けてましたが
0077774ワット発電中さん垢版2018/08/26(日) 12:25:20.94ID:jPZor44m
float b = 0, c = 0;
int COUNT = 200;
int g[200];
void setup() {
Serial.begin(9600);
// analogReference(INTERNAL);
// ADCSRA = ADCSRA & 0xf8;
// ADCSRA = ADCSRA | 0x04;
}
void loop() {
float a = 0;
int MAX = 0, MIN = 32767;
for (int k = 0; k < 50 ; k++) {
for (int i = 0; i < COUNT; i++) {
g[i] = analogRead(0);
if (MAX < g[i])MAX = g[i];
if (MIN > g[i])MIN = g[i];
// Serial.println(g[i]);
}
a += MAX - MIN;
}
b = a / 50;
c = b * (5000.0 / 1024.0) / 2.0 / sqrt(2) * 10.0 - 500.0;
Serial.println(c);
}

これは成功と思われますが誤差は大きいです
0078774ワット発電中さん垢版2018/08/26(日) 12:34:35.20ID:jPZor44m
>>75
追記ですが最後の出力とはm Aのことです
0079774ワット発電中さん垢版2018/08/26(日) 12:58:03.99ID:9Xm7gaaZ
>>75
スマホで読んでて、しかも老眼なんで見間違えもあるかも知れないけど、for文の条件式が count < i になってると初期値が count = 10と i = 0 だと中身を実行しないんじゃない?
違ってたらゴメンなさい。
0080774ワット発電中さん垢版2018/08/26(日) 12:59:00.96ID:Tr3eqDnt
ちょっと関係ないけど、Loopの中で下記の変数が再定義されまくっても良いのかな?
ループする度に変数のアドレスを保持するパフォーマンス的によろしくないと思うんだけど?
コンパイラがどういうコードを生成してるか知らないので、これでも良いのかもしれないけど・・・

unsigned long clocks = millis();  <ーこれ
int MAX = 0, MIN = 1023;    <ーこれ
int data = 0;               <ーこれ
int total = 0;               <ーこれ
float ave = 0;               <ーこれ
float mA = 0;               <ーこれ
for (int i = 0; count < i; i++) {
 unsigned long start = millis();   <ーこれ
0081774ワット発電中さん垢版2018/08/26(日) 13:01:12.62ID:joEZPTiR
変数は結局コンパイラに全部関数の最外スコープにまとめて定義する形にされるのでは?
0084774ワット発電中さん垢版2018/08/26(日) 13:08:22.51ID:Tr3eqDnt
あんま気にしなくて良いんですね・ありがとうございます。
引き続き、>>70さんのdo-while内のanalogRead問題をどうぞ
0085774ワット発電中さん垢版2018/08/26(日) 13:11:06.09ID:Tr3eqDnt
for (int i = 0; count < i; i++)
じゃなく、こうだ
for (int i = 0; i < count ; i++)
0086774ワット発電中さん垢版2018/08/26(日) 13:18:57.45ID:jPZor44m
>>85
動きましたー
ありがとうございます
よかったー
0087774ワット発電中さん垢版2018/08/26(日) 13:26:50.07ID:jPZor44m
>>79
お見事です
ありがとうございます
0089774ワット発電中さん垢版2018/08/26(日) 13:36:15.61ID:jPZor44m
お騒がせしました
みなさんありがとうございます
また色々参考になるご意見今後の参考にします
またご質問させていただくことがあると思います
0090774ワット発電中さん垢版2018/08/26(日) 13:40:55.19ID:r0Pk6YgE
ほんといろいろな意味で気持ち悪いコード
adcサンプリング周期とか無視かよ
millis() の使い方それでいいのか
analogReadは ADSCでのポーリング読み込みだから
あらかじめハード的に周期を観測して決めなければならない
というか、はあ、初心者はそういう発想で来るのねという感想
0092774ワット発電中さん垢版2018/08/26(日) 13:44:13.57ID:jPZor44m
>>82
ありがとうございます
0093774ワット発電中さん垢版2018/08/26(日) 13:49:32.77ID:jPZor44m
>>90
ど素人なのでご容赦ください
サンプリング周期??
ネットで調べたらアルデュイーノのanalogReadは量子化を考えてサンプリング定理でローパスフィルター入れてって書いてあったから
入れてみたけど失敗しました
0097774ワット発電中さん垢版2018/08/26(日) 18:00:09.10ID:r0Pk6YgE
床屋行ったので書いてみた
timerone ライブラリを使用しているので、gitからダウンロードしてね
/*
50Hz meas
use lib :
github.com/PaulStoffregen/TimerOne.git
1/50Hz = 0.02 (1 period)
0.02 / 100 =0.0002 =200u ( 100 sample = 1 period)
*/
#include <TimerOne.h>
#define SAMPLE_SZ 100
#define SAMPLE_PERIOD 200 // us
#define BLOCK_SZ 50
#define BLOCK_SZ_INV (1.0/50.0)
int sample_buf[SAMPLE_SZ];
int sample_buf_p;
int sample_buf_ready;
void isr_timer1() {
int data;
if( sample_buf_p < SAMPLE_SZ ){
data = analogRead(0); // wait for ADC
sample_buf[ sample_buf_p ] = data;
sample_buf_p++;
}
if( sample_buf_p == SAMPLE_SZ ){
sample_buf_ready = 1;
sample_buf_p++;
}
}
void setup() {
Serial.begin(9600);
sample_buf_p = 0;
sample_buf_ready = 0;
Timer1.initialize(SAMPLE_PERIOD); // unit=usec
Timer1.attachInterrupt(isr_timer1);
}
void loop() {
int i,j; int data;
int max; int min;
float sum; float avr;
float val;
sum = 0;
for (j = 0; j < BLOCK_SZ; j++) {
while( sample_buf_ready == 0 ) ;
max = 0;
min = 32767;
for (i = 0; i < SAMPLE_SZ; i++) {
data = sample_buf[i];
if (max < data) max = data;
if (min > data) min = data;
}
sample_buf_p = 0;
sample_buf_ready = 0;
sum += ( max - min );
}
avr = sum * BLOCK_SZ_INV; // outer loop sz
val = avr * (5000.0 / 1024.0) / 2.0 / sqrt(2) * 10.0 - 500.0;
Serial.println(val);
}
0098774ワット発電中さん垢版2018/08/26(日) 18:02:31.75ID:r0Pk6YgE
ああ、ダブルバッファにしてなかったから
これはボツだ
まあ、参考にして書いてみて
0099774ワット発電中さん垢版2018/08/26(日) 19:06:11.69ID:jPZor44m
>>97
感動しました
ありがとうございます
参考にさせていただきます
■ このスレッドは過去ログ倉庫に格納されています

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