Arduino初心者熱烈大歓迎質問スレ part28
レス数が1000を超えています。これ以上書き込みはできません。
ArduinoIDE で ツール->ボード->ボードマネージャ を起動すると
package_index.json と package_index.json.sig が壊れる不具合が出てる模様。
バックアップして元に戻せば治る。
まだ原因が追求できた所なので、世間の情報は検索してないのですが、
おま環であれば良いですが、zip展開版の 1.8.12 です。
同様の方はご注意ください。 >>6
最新版1.9βだと問題ないらしい(うちもこれで治った)
根本解決ではなく、javaエラーある程度無視する仕様らしい?
なんかaeduino/javaともプログラム更新してない人含め、昨日突然同時多発的に始まったみたいね?
何があったのだろう?
https://github.com/arduino/Arduino/issues/10332 同時多発といえばWin10のアプデが関係してるじゃないの? WindowsUpdateはいろいろやらかしてくれるからな
1909入れてみたけどなんとなく変だったから1903に戻したし 前スレでSeeeduino Xiao買ったって人、消費電力はどのくらいですかねえ 特にスリープモードではどうか気になる…。 今日になって、Arduino IDEが起動しなくなった!
Windows10で、Arduino IDEのバージョンは1.8.12
会社でも自宅でもダメだから、PC側の問題じゃなさそうだ。
困ったなぁ。
ひとまず>>11を試してみよう。 >>14
最初の言い出しっぺですけど、この対策で問題解決できることを確認しました。
WindowsUpdate とは関係ないと思われます。
具体的なことがリンク先に書かれてますけど、package_index.json.sig を削除
するだけで良いみたいです。
起動時に警告が出るので、その通りにボードマネージャを起動するだけです。
次回以降は、警告が出なくなり、普通にボードマネージャも使えます。 屋外BOXを設置して、中に温湿度センサー等を置いて
ファンで通風しながらの気象ロガーを考えています。
現在湿度96%なんですが、センサーの基板等が心配です。
端子部や半田の部分にサビ止め等吹き付けたほうがいいんですかね?
kure5-56ならあるんですが。 >>20
直接雨があたったりしなけりゃ大丈夫じゃないかな。
この前森の中で3年働かせたセンサーの基板はピカピカだったよ >>21
大丈夫そうですかね。一応ファンのフードを工夫して、
予備のセンサーも用意しておきます。 >>18
うち、それだけでは解決しなかったな。
ジェイソン撃退で治るのは今までもちょくちょくあったけど、今回のはそれだ治らなかったから最新版再インストールやらjava更新やら色々やったわ。 >>24
やべぇ。
サンハヤトをサンハトヤと読んじまった。
関東ローカルネタですまん。 見積書がFAXで送られてきて「社員旅行ですか?」って総務の子に聞かれたのは懐かしい思い出。 ♪伊東に行くならハトヤ♬
♫電話は4126 ♪ このスレで「4126」を「良い風呂」と読めるの何人くらいだろう? DFPlayerでmp3playerを作りたいんですがどなたか私にスケッチ教えてください!
一般的なplayerと同じ動作させたいんですが・・・
全曲順番に再生する
STOP押したら停止、STARTしたら続きから再生
NEXT,PREVIOUSも欲しい
よろしくお願いします >>39
そんだけなら抵抗とボタンだけでできるんじゃないの?
マイコン不要で
https://i.imgur.com/ict7FG5.jpg >>40
Arduinoありきでお願いします!
勉強のために
よろしくお願いします。 >>42
いやだからそのArduinoのコードを書く依頼料だよ なんで見ず知らずのやつに書かないといけないんだよw String a = " ABC";
のように書いてもStringの先頭に空白が入りません。
どうすれば出来るようになりますか? >>48
printf("%1s¥n", "ABCDE");
printf("%10s¥n", "ABCDE");
\sとか¥sとか駄目かな? >>49
\sは駄目でした
¥sの使い方がわからなかったです。 パソコン連携のシステム作ってもらうのって
いくらくらいかかるの? String a = String(" ABCD");
↑これで出来ました。
ありがとうございました。 >>43
ライブラリが古い
誰も知らなそうですね 残念 >>53-54
流れが全然分からない
誰か解説おね USBのシリアル1とソフトウェアシリアルを繋げて、USB->シリアル変換ケーブル的な物を作りたいんだけども、
よくある↓みたいなやつでXmodemとかYmodem転送をすると失敗するのはなぜなんです?
レートを遅くしてもダメ。
Teraterm To Teratermで試してて、普通のキー入力とかは双方やり取りできてる。
void setup() {
Serial.begin(9600);
Serial2.begin(9600); // ソフトウェアシリアル
}
void loop() {
if (Serial2.available()) Serial.write(Serial2.read());
if (Serial.available()) Serial2.write(Serial.read());
} それってマイコンいらなくてTXピンとRXピンから信号取るだけでいいんじゃね
まぁそれってただボードに乗ってるUSB-TTLUART変換チップ使ってるだけになるけど 今試してる接続はこんな感じです
Port1(usb) -> Arduino → TTL-USB変換 -> Port2
Teratermを二個開いてそれぞれPort1とPort2をオープン
Port1から2、または逆方向にてキー入力などが送信されることを確認
Port1からPort2にXmodem転送すると途中でこける >>57
いやもちろんほんとにシリアル通信だけならおっしゃる通りなんですが、
実際はもうちょっと多機能なもので、そのうちの1機能としてシリアルケーブルモード的なのを実装したいんです。 >>58>>59
ソフトウェアシリアルあんま処理能力高くないしどっかで処理が重なってこけてんじゃない?
実際のデータのやり取り見た?なんかロジックアナライザもってない?800円くらいの中華品でも十分 ちなみにその別機能ってのは、ArduinoとSPIで繋がるSDカード内のファイルを、Xmodem(正確にはYmodem)でPort1またはPort2に送信するって機能なんですが、
これは動いてます。
つまりArduinoからのファイル送信はうまくいってます。
おまけでSDカードを使わないPort1→2スルーモードみたいなのが作りたいんですよね >>60
アナライザはあるにはありますが電池で動くような中華おもちゃです・・・
パケットキャプチャ的なものを間に入れるのが必要そうですね。
Port1と2のTeratermでパケット数がずれて止まるんで、処理能力不足は疑いましたが、
20MhzのNanoで4800bpsでもコケるって変ですよね…
転送先のMacPlusの方が遅い8Mhzですよw もしくは素直にUSARTを2つ以上装備したマイコンを搭載したモデルに変える
他に使ってるライブラリ等の関係でアーキテクチャを変えたくないならmega328PBとかmega2560とかそのへんが載った奴に
ちょっと変わってもいいならmega4809の載ったNanoEveryとか、だいぶ変わってもいいならSTM32F103C8T6にするとか >>62
SoftwareSerialの中身見たらわかるけどリソースをピンチェンジ割込みだけで済ませてタイマを一切要求しない仕様で
タイミング取るのにビジーウェイト使ってるからボーレートが遅いとCPUの拘束時間が長いし割込みが関わるとぶっ壊れやすいぞ トライステートバッファを追加して御希望のピンをUSBシリアルのTXピンとRXピンと繋いじゃえば?
普段はバッファをハイインピーダンスにしておいてモードチェンジ時には逆にマイコン側のピンをINPUTでハイインピーダンスにして
そしたらUSBシリアルと直接繋がるしCPUの介在がいらない
トライステートバッファの制御に1ピン要るけども >>54
一通り調べましたよ
ここにいる人は詳しい人ばかりだから知ってる人がいると思ったんですけど
誰かDFPLAYER詳しい人いませんかー? だな
そして質問者本人が成り済まして正解のレスをする、いつものバターン 途中に別の質問レスが挟まれてちゃんと消化されてるのがなんかウケる >>63-65
やはりソフトウェアシリアルで連続送信は無茶かもしれませんね・・・
NanoかProMicroの標準的な構成だけで簡単に実現したかったのですが、ちょっとあきらめモードです。
無くてもいい機能だし。
NanoEveryいいですね!
ねだんが高い以外はさいこうです >>66
上から目線で教えろで、調べたけどここには俺より詳しいヤツがいないってことですね。
わかります。 >>67
質問の仕方が悪かったですか?
じゃあそのスケッチの書き方も教えて下さい >>72
「Arduino 開発 あなたの住んでいる市町村」
これでググると、対応する会社が見つかるので、電話かメールして見積もりしてもらいなさい。 >>70
安くてNanoがいいならこういう中華クローンで328PBが載ってる奴は?>>63でも書いたけど328Pと328PBは違うモノだぜ
https://www.aliexpress.com/item/32818544709.html
画像は328PになってるけどタイトルにPBとあって、実際にPBが載ったのが届く(レビューの一番上にあるウクライナ人の写真を参照)
328PBならUSART2つついてるし328Pで動くコードはまるっとそのまま移植できる
ただ、USART1のTXDとRXDはSPIのMISO、MOSIと被る・・・
しかしコイツはSPIも2つ持っててSPI0じゃなくSPI1を使えばUSART0、USART1、SPI1でピン被り無しで使える 今は職業訓練所でもArduinoやってるとこあるから入学して教わればいいな >>72
残念ながら君より詳しい人がいなかった
がんばってくださいね >>70
片方がUSBつなぎでよけりゃ 32u4 のproMicroでいいじゃないのかね
クローン品がいっぱい安く売ってるし >>72
悪いどころの話じゃない、悪すぎる
お前が掲示板で質問に答えるとして
パソコンの使い方教えてください?
どうこたえるよ? >>77>>70
そういやProMicro(32u4)でもいいならSerial1でUSART0使えるわ
デフォルトのSerialは内蔵USBのだし >>76
がんばります
>>78
しらねーよ お前がよくできた回答を提示しろよ >>81
色々ググってるんですが
基礎も含めて勉強中です
>>82
Lチカはできます!簡単な音楽再生もできるんですがplayerのように全曲通しで再生、前の曲、次の曲、停止、再生など駆使したいんです・・・ >>84
DFRobotDFPlayerMiniです 49行目から118行目までライブラリの全機能が書いてあるよ
https://github.com/DFRobot/DFRobotDFPlayerMini/blob/master/examples/FullFunction/FullFunction.ino
例えば、
次の曲の再生は77行目 myDFPlayer.next(); //Play next mp3
前の曲の再生は79行目 myDFPlayer.previous(); //Play previous mp3 >>87
はい 全機能の存在は知っているのですが例えば「再生中の曲を停止する」というようなことが全然できなくて
例えばスイッチ押してmyDFPlayer.next()で曲が変わっていきますよね
でもこれを一時停止する、ってのができないんです
>>88
ありがとうございます 単体動作もやってみます ↓関数を1つにすること出来ますか?
uint32_t dpll_number;
uint8_t dpll_number_0;
uint8_t dpll_number_1;
uint32_t dpll_number_2;
uint32_t dpll_number_3;
Wire.beginTransmission(Address);
Wire.write(66);
Wire.endTransmission(false);
Wire.requestFrom(Address,4,true);
dpll_number_0 = Wire.read();
dpll_number_1 = Wire.read();
dpll_number_2 = Wire.read();
dpll_number_3 = Wire.read();
Wire.endTransmission();
dpll_number = (dpll_number_0 + (dpll_number_1 << 8) + (dpll_number_2 << 16) + (dpll_number_3 << 24));
よろしくお願いします。 >>83
そうか、ここは、Lチカすらできない人の集まりだな。 YouTubeで人気ないジャンルなのがよくわかるわw readの戻り値を操作してuint32に加えていけば使う変数は減るが、 >>103
ありがとうございます。
使う変数を減らしたいです。
uint32_t dpll_number;
Wire.beginTransmission(Address);
Wire.write(66);
Wire.endTransmission(false);
Wire.requestFrom(Address,4,true);
dpll_number = Wire.read();
dpll_number = Wire.read(); + dpll_number << 8
dpll_number = Wire.read(); + dpll_number << 16
dpll_number_= Wire.read(); + dpll_number << 24
Wire.endTransmission();
こんな感じはむりなんですか? >>104
自分で答え書いてるじゃねーか
+ の前の ; を取れよ。 +=のほうが読みやすいと思う。容量がかつかつでもない限り、変数へらすより自分が解りやすいコードにしたほうがよいんじゃねーかな。 なんかスルーされた…?
共用体にすれば余計な変数も余計なビットシフトもいらずメモリはおろかCPUサイクルさえ節約できるのに uint32_t dpll_number;
Wire.beginTransmission(Address);
Wire.write(66);
Wire.endTransmission(false);
Wire.requestFrom(Address,4,true);
dpll_number = Wire.read();
dpll_number = (dpll_number + (Wire.read() << 8));
dpll_number = (dpll_number + (Wire.read() << 16));
dpll_number = (dpll_number + (Wire.read() << 24));
Wire.endTransmission();
でやると>>95の出力と答えが違ってしまいます・・・ >>109
そうなんですか・・・
共同体の勉強してみます。 俺もスルーされた
何度も = で上書きされてまっせ >>112
ごめんんなさい。
+= がわからないのです。
調べてみます。 >>111
共用体な
たとえばその32bitの変数を、4つの8bit変数としても同時に定義できる
そんでどちらかを書き換えればどちらも書き換わる(同じメモリアドレスなので)
4つ順番に1バイト入れてけば自動的に32bitとしても読める なんでこの手の人は結果だけを得ようとして基礎知識をちゃんと身に付けようとしないんだろう
いくらArduinoがHALやらラッパーやらで簡単に書けるように作られてるとはいえ
演算子も知らず式の書き方もわからないのにどうする気なのか… 横からだけどドットマトリクス LED を連ねて使うのにビデオ RAM みたいな変数を使っていたから共用体のことは参考になったどうもありがとう
ビットシフトしなくていいしすっきりしそう
随分昔にCの勉強した時に共用体って見たような気がしないでもないが、今となってはまったく思いつかなかった >>114
ありがとうございます。何となく理解できました。試してみます。
>>115
すみません・・・
dpll_number = Wire.read();
dpll_number += (Wire.read() << 8);
dpll_number += (Wire.read() << 16);
dpll_number += (Wire.read() << 24);
で、4294941493
>>95だと7510805になってしまう…
自分で調べてみます…
汚してすみませんでした。 変数へらして数バイトあけても、デバッグしにくくなってたら意味が無いような。 共用体って考え方がすごい
初心者でビットの取り扱いに慣れてないせいもあると思うけど
慣れてないとビットがごちゃまぜになって分からなくなりそう >>111
4バイトlongと1バイトbyte[4]が同じ場所を占めるような変数宣言がunionでできる。
これやると、配列にreadデータを次々に4回入れたらその時点でlongの変数が出来上り。
まあ、変数のサイズやフォーマット依存なので、時間やメモリの制限きつくなければ普通にそのままでもいいような気も。
変数減らすだけなら、
uint8_t dpll_number[4];で。
ループもポインタも使えるし。 >>122
横からすみません。読み出しまで含めたサンプルコードいただけませんか?
興味はあるのですが書き方がわかりません >>123
初期化するだけだからコードも何もない。配列いじったら変数の対応するbitが変わる。逆もしかり。 >>123
分からない事を聞くならまだしも
1から全部面倒見ろって
なんか違うんじゃない?
やってくれる人がいればいいけど >>117
これじゃ、ダメ?
おそらくArduino Unoとかだとint型が16bit整数なので値が変わるのだと思う
16bit整数だとWire.read() << 16やWire.read() << 24は0になるからね
だからuint32_tでキャストして32bit整数として扱うようにする
dpll_number = (uint32_t)Wire.read();
dpll_number += ((uint32_t)Wire.read() << 8);
dpll_number += ((uint32_t)Wire.read() << 16);
dpll_number += ((uint32_t)Wire.read() << 24); あと、>>95のは
dpll_number = (dpll_number_0 + ((uint16_t)dpll_number_1 << 8) + (dpll_number_2 << 16) + (dpll_number_3 << 24));
もしくは
dpll_number = (dpll_number_0 + ((uint32_t)dpll_number_1 << 8) + (dpll_number_2 << 16) + (dpll_number_3 << 24));
こうしないと
(dpll_number_1 << 8)
の部分がint型(符号付16bit整数)に1度変換されてからuint32_tに変換される
その時に符号拡張されて値がおかしくなる >>128
今度はキャストの解説を求められるぜ!
多分、unisigned も単に符号なしで、ビット演算とか?
>>95 のコードで
--
uint32_t dpll_number;
uint8_t dpll_number_0;
uint8_t dpll_number_1;
uint32_t dpll_number_2;
uint32_t dpll_number_3;
変数名に無意味な number とか付いてる時点で察し 途中でポストしちゃいましました。
何故 _0 _1 が 8ビット で _2 _3 が 32ビットなんだろう?
元々のコード自体がきちんと動いてないんだろうな。
まず Wire.read() を全てシリアルに出力して、紙に書きだして
電卓使って、正しい答えを知らない限り、コードが正常動作してるか
分からないぜ!
共用体は有用だし、使いようによっては凄く便利なのだが、
たぶん多くが挫折するポインタの概念が分かってないと無理。>>123 がその例。
>>95 には程遠い世界だよ。
* と & の違いになり、void* が何故必要になったかまで、おんぶに抱っこ。
可読性が犠牲になったり、いずれ何処かででインディアン問題も出てくる。 共用体の例
union {
uint32_t dpll_number;
uint8_t byte[4];
} a01;
a01.byte[0] = Wire.read();
a01.byte[1] = Wire.read();
a01.byte[2] = Wire.read();
a01.byte[3] = Wire.read();
Serial.print("uint32_t dpll_number = ");
Serial.println(a01.dpll_number);
>>177
>>95の例だと7510805になってしまうと書かれてるが
試してるコードではバイト順が逆になってない?
今までに付いてるレスは全部リトルエンディアンが前提になってて
Serialから送り出されるバイト列もリトルエンディアン前提なのだけど
実際はどうなの?
リトルエンディアンというのは最下位のバイトが最初に来て
最上位に来るバイトが最後に来るやつ
その反対でビッグエンディアンというのがあって最上位のバイトが最初に来て
最下位のバイトが最後に来るのがある
最近のマイコンはどれもリトルエンディアンに統一されつつあるが >>122
文句ばかりで申し訳ないけど、>>115 や >>125 の意見がもっとも
と、個人的に思ってる。
> uint8_t dpll_number[4];で。
同じことを char で文字列扱って [5] が必要になる所で詰まる。
たまたま現在の処理系の long が 32ビット だってことに依存してる。 シリアルじゃないかI2Cね
具体的にどのデバイスなのかな? longとかintは処理系依存なんでマイコンではなるべく
int32_t、uint32_t、int16_t、uint16_tなんかを使うわけだけどね
AVRだとint型はint16_tでunsigned intがuint16_t
なので代入文で右辺が-32768から32767までの範囲を超えてしまうとおかしくなるので注意
int32_t hogehoge;
hogehoge = 1000000L;
とかしないといけない
最近はM5Stick VやMaixduino、Maixbitなんかの64bitのArduinoも出てきてるので
longはあまり使わないほうがいいね そういえば、Arduinoでビッグエンディアンの製品ってあるのかな?
I2CやSPIではビッグエンディアンでデータ送ってくるものはありそうだけど
Arduinoが出だした頃は古いものは除いて新規のマイコンはみんなリトルエンディアンになってるし
Arduinoが対応してるマイコンは比較的新しいものが多いと思うのだけど 64bitのLinuxなんかでもx86_64との互換性を考慮してリトルエンディアンばかりになってるね
64bitのPOWERもPOWER8からバイエンディアンになって
UbuntuやDebianでは64bitではリトルエンディアンのものしか出さなくなった
ARMもLinuxではリトルエンディアンだし、RISC-Vもリトルエンディアン >>136
どうなんでしょう?
スイッチサイエンスの製品説明にも RISCチップ、ビット数 などは書かれているが、
インディアンは、データシートの後方にしか書かれてないんじゃないのかな?
数行で確認できるので、GitHub にあるかもしれないけど、
Serial.bigin(9600) を 115200 に変更する面倒を考えたら自分で書くよねw
モトローラーと共にビッグエンディアンも終わったんじゃないかな?
個人的には、バイナリのみのリバースエンジニアに、ビット長が不明で、
リトルエンディアンとか面倒で嫌いなんだけど。 バイト長が不明な変数の場合はリトルエンディアンの方が扱いやすい
なにせバイト長に限らず下位バイトが同じ場所にくるからね
たとえば32bitの整数の0x76543210の場合
0x10 0x32 0x43 0x54 0x67
と格納される
これが16bitの整数の0x3210の場合でも
0x10 0x32
と格納される
下位のバイトの格納位置は変わらない
ビッグエンディアンだと
0x76 0x54 0x32 0x10
0x32 0x10
とバイト長が変わると下位バイトが同じでも下位バイトの格納位置が変わってしまう デバッガが高機能だとリトルエンディアンでも混乱することはないし
数のバイト列として扱う場合はリトルエンディアンの方が楽
マイコンとして扱う場合でも下位ビットが揃ってた方が楽 話を戻して
>>94の方法で
1番目のバイトが53、2番目が155、3番目が255、4番目が255だとすると
結果が4294875957
>>128の方法でやると
これだと4294941493
Pythonで
(255<<24)+(255<<16)+(155<<8)+53を計算してみると
4294941493
(255<<24)+(255<<16)+(155<<8)+53+(255<<24)+(255<<16)-2**32は
4294875957
>>94のは明らかに(dpll_number_1 << 8)の部分が
符号拡張されて上位バイトに0xffff0000が追加されて値がおかしくなってます アンカ間違えました>>94のアンカは>>95の間違いです >>133
よくわからないが、配列が4つなのはlongの仕様ではなく、そのセンサが8bitずつ4回に分けてデータを取得することに依存してると思うが。
おっしゃるように、longのサイズやバイト順なんて決まっているとは言えないので、>>122に書いたように、配列使って扱いやすくするのは良いが結合するのにunion使うのは勧めない。 ライブラリでポインタ渡しの定義がされてない場合がかなりあってめんどい
まぁ書きゃいいんだけど >>141
uint32_t、uint8_t型で符号拡張されるの? >>145
(dpll_number_1 << 8)の部分は
2項演算子( << )で1項目のdpll_number_1がuint8_tで2項目の8のがint型
なので8のint型に合わせて結果がint型になる
一度int型に変換されるのでuint32_tに変換されるときに符号拡張される なので
((uint16_t)dpll_number_1 << 8)
もしくは
((uint32_t)dpll_number_1 << 8)
とやれば結果は正しくなる >>143
longじゃなくてuint32_tとやれば32bit確定なのでunionでも問題ない
マイコンの世界ではbit長が確定する場合は
なるべくint32_tやuint32_t、int16_tやuint16_tを使うほうがいい まあ、AVRは8bitCPUでその8bitでuint32_tを扱うわけで
共用体使った方が断然速いコードになるけどね と思ったけど
アセンブラ出力して比べてみたら全く同じコードだったw >>150
バイト単位のビットシフトは結構ちゃんと吐いてくれるよ
volatileじゃない仮変数も必要なければRAMに置かないし
ビットシフトとアセンブラで思い出したけどAVRGCCてswapを吐かない?
uint8_tのhogeに>>=4すると回数のカウントに別のレジスタ使ってループでlsrを回してるんだけど
lds ldi lsr subi brne stsで16バイト喰って20サイクルも使っている(しかも余計にレジスタ1つ使う)
andi swapなら4バイト2サイクルで済むのに >>151
ごめんロードストア入ってるのと入ってないのを比較した
後者は lds andi swap sts で12バイト6サイクル の間違いです 違った
やっぱりunion使った方が速かった
unionを使って関数にした場合の該当コード
mov r14,r24
mov r15,r22
mov r16,r20
mov r17,r18
レジスタをコピーしてるだけ
シフトでやるとこんなになる
.LVL11:
mov r12,r20
mov r13,__zero_reg__
mov r14,__zero_reg__
mov r15,__zero_reg__
movw r14,r12
clr r13
clr r12
mov r16,r18
ldi r17,0
ldi r18,0
ldi r19,0
.LVL12:
mov r19,r16
clr r18
clr r17
clr r16
.LVL13:
add r12,r16
adc r13,r17
adc r14,r18
adc r15,r19
add r12,r24
adc r13,__zero_reg__
adc r14,__zero_reg__
adc r15,__zero_reg__
.loc 1 65 0
mov r24,r22
.LVL14:
ldi r25,0
ldi r26,0
ldi r27,0
mov r27,r26
mov r26,r25
mov r25,r24
clr r24
add r12,r24
adc r13,r25
adc r14,r26
adc r15,r27 みなさんありがとうございます
>>117でおかしかったので、
dpll = Wire.read();
dpll += (Wire.read() * 256);
dpll += (Wire.read() * 65536);
dpll += (Wire.read() * 16777216);
昨日、↑のようにしたら正確な値を得ることが出来るようになりました。
>>128 >>141
ありがとうございます。納得できました。
dpll_number_1の値がおかしいことまでわかったいたのですが、
なぜおかしくなるのか理由がわかってスッキリしました。
こっちに書き換えます。 >>130
ビット数が違うのは正常な値が出ているときに8ビットにしても大丈夫だったので小さくしました。
>>131
バイト順は正常でした。
>>134
ES9038Q2Mです >>154
>>127で書いたようにこうすればシフトでもうまくいくと思うよ
dpll = (uint32_t)Wire.read();
dpll += ((uint32_t)Wire.read() << 8);
dpll += ((uint32_t)Wire.read() << 16);
dpll += ((uint32_t)Wire.read() << 24); >>146
シフト演算子もそれあるのか・・・
というかそれ以前に定数のintにならないならuint8_tのままだから
(dpll_number_1 << 8)
(dpll_number_2 << 16)
(dpll_number_3 << 24)
とかはまともに動かないよな。
<<するのはuint32_t変数だけにして
for (i=0;i<4;i++) {
dpll_number <<= 8;
dpll_number |= hogehogeread()
}
4つくらから上なら、自分はこのあたりがすき。
これはOK?
>>154
まちがいが起こりにくいように16進にしといたほうがいいよ 節約したいならこんなコードでもいいかも
アセンブラコードみたらこっちの方が命令数が少なかった
dpll = Wire.read();
dpll += ((uint16_t)Wire.read() << 8);
dpll += ((uint32_t)Wire.read() << 16);
dpll += ((uint32_t)Wire.read() << 24); ちなみに私の環境とテストコードでは
>>154と>>157はアセンブラコード確認してみたけどほぼ同じコードになるね
gcc、頭いい と思ったら
dpll = (uint32_t)Wire.read();
dpll += ((uint32_t)Wire.read() * 256);
dpll += ((uint32_t)Wire.read() * 65536);
dpll += ((uint32_t)Wire.read() * 1677216);
でテストしてた
そりゃ、157と同じになるわ
で、>>154で試したら間違った値出たよ >>158
あ、下位から先に得られるんだから、これじゃ逆だorz
忘れてください・・・ >>117も違う値になるね
まとめ
dpll = (uint32_t)Wire.read();
dpll += ((uint32_t)Wire.read() * 256);
dpll += ((uint32_t)Wire.read() * 65536);
dpll += ((uint32_t)Wire.read() * 1677216);
もしくは
dpll = (uint32_t)Wire.read();
dpll += ((uint32_t)Wire.read() << 8);
dpll += ((uint32_t)Wire.read() << 16);
dpll += ((uint32_t)Wire.read() << 24);
もしくは
dpll = Wire.read();
dpll += ((uint16_t)Wire.read() << 8);
dpll += ((uint32_t)Wire.read() << 16);
dpll += ((uint32_t)Wire.read() << 24);
でやれば正しい値になるはず >>153
共同体も試してみます。ありがとうございます。
>>156
はい
>>163
ありがとうございます。
これで解決できました。
みなさん重ね重ねありがとうございます。
>>154が間違っていたんですか… まぁ。。。思った通りの結果なんだけど、質問者は 実数(マジックナンバー) を掛けて終わり。
その数字に L を付けなくても気持ち悪くないんでしょうね。
初心者歓迎なので、結果 OK なんでしょうけど、.s の内容にまで発展したのは、
全体的に良かったのかな?w
途中で gcc の動作について出てたけど、rms の過去の発言でオプティマイズに
関する物が参考になる。また gcc のコードを読むと中間言語に落とす所のツリー
構造解析などは、非常に美しい。
for(int i = 0; i < 100; i++){} がオプティマイズレベルを上げて行くと
アセンブラを空にする、しない、議論まであった。結果は後者だったけど、
オプションで指定できる議論に発展した。
中間コードから先の .s はターゲット依存なので、それぞれのインプリ依存だけど。 偉そうなこと言ってるくせにインディアンには笑ったわ 無知にマウント取りたがるやつって恥ずかしい。
赤ん坊の頃に泣いているのを放置されて育つとこいつみたくなるって育児書に書いてあった。
こういう同級生が社会で孤立して自殺している。
勝手に死ぬならいいけど自分の子供には同じようにしないで欲しい。 速さや美しさのレベルには全然到達しない
とにかく動かすだけでいっぱいいっぱい 一つ前の関数と比較したいときに入れておく関数名を何にしています?
aの場合は、a_tempやa_dmpでいいですか? UNOを使ってて割込みハンドラを書いてるんだけど、インラインアセンブラでグローバル変数のアドレスを取得したいときはどうしたらいいですか?
例えばhogeというuint8_tのグローバル変数がすでに定義されているとします(volatile uint8_t hoge = 0xAA;)
このとき割込みハンドラのインラインアセンブラで lds r16,hoge と書くと値の取得が出来ます(レジスタ16に0xAAがロードされる)
しかし当然これはSRAMに保存された変数の値です(ちなみにこの時コンパイルされたコードを見るとちゃんとhogeのアドレスが即値で入っています)
今回はレジスタペアにhogeのアドレス(16bit)をldiで取得したいのですが書き方がわかりません(C言語でいう*hogeがしたい)
コンパイル後にbssセクションを見てhogeに割り当てられたアドレスを調べてldiの即値を書き換えれば当然得られるのですが
これだとグローバル変数の数や宣言の順番などによって毎回hogeのアドレスが変わってしまいそれに対応するために毎回この作業が必要です
前述の lds r16,hoge のようにコンパイル時に該当のグローバル変数に割り当てられたアドレスを ldi で用いる方法はありますか? >>176
AVRのアセンブラ全然わからんがこんな感じかな?
uint8_t hoge = 100;
void func21(void){
uint8_t ret1;
uint8_t addr_l, addr_h;
asm volatile (
"ldi XL, lo8(%3)\n\t"
"ldi XH, hi8(%3)\n\t"
"ld %0, X\n\t"
"mov %1, r27\n\t"
"mov %2, r26\n\t"
:"=r"(ret1), "=r"(addr_h), "=r"(addr_l)
:"memory"(hoge)
:"r27", "r26"
);
Serial.print("ret1 = ");
Serial.println(ret1);
Serial.print("addr_h = 0x");
Serial.println(addr_h, HEX);
Serial.print("addr_l = 0x");
Serial.println(addr_l, HEX);
Serial.print("&hoge = 0x");
Serial.println((unsigned int)&hoge);
} >>176
うろ覚えだけど、
ldi r16,lo(hoge)
ldi r17,hi(hoge)
だっけ? 一番最後の行は
Serial.println((unsigned int)&hoge);
ではなく
Serial.println((unsigned int)&hoge, HEX);
でした
ごめんなさい 変なレス付いてるのでわかりやすく解説
>>178の
"ldi XL, lo8(%3)\n\t"
"ldi XH, hi8(%3)\n\t
の部分はインラインアセンブラによってこうなる
ldi XL, lo8(hoge)
ldi XH, hi8(hoge)
つまり、
labelをlo8()で括れば下位8bitのアドレスが即値として取得できる
labelをhi8()で括れば上位8bitのアドレスが即値として取得できる
ただそれだけ ARMなんかの32bitのRISC CPUでも同様の演算子が用意されてるね
ARMのThumb-2だと
movw r0, :lower16:label01
movt r0, :upper16:label01
こんな感じでアドレスを読み出せる
ARM64で48bitの仮想アドレス空間全体だと
movz x0, :abs_g2:label01
movk x0, :abs_g1_nc:label01
movk x0, :abs_g0_nc:label01
下位33bitのアドレスだと(ARM64のgccではデフォルトではlabelの範囲は下位33bit(8GB)まで)
adrp x0, :pg_hi21:data_label
add x0, x0, :lo12:data_label >>176です
lo8とhi8は知ってたんですが基本インライン構文だとコンパイルエラーになってしまって使えないものだと思っていました
拡張アセンブリ構文で入力オペランドなどをちゃんと宣言しないと駄目だったんですね
解決しました、皆様ありがとうございました >>184
>>181も言ってるように、これはアセンブラにlo(),hi()を与えてるのではなく、プリプロセッサか何かがうまく変換して、アセンブラに与えられるのは単なるldiによる8bit即値代入に置き換えられたもの、って話だと思う。 >>185
それがやりたくて、その書き方を知りたかったって話だと思うが… >>185
残念でした
>>178をコンパイルしてアセンブラリストを出力すると
インラインアセンブラ部分はこう出力される
ldi XL, lo8(hoge)
ldi XH, hi8(hoge)
ld r17, X
mov r29, r27
mov r28, r26
知らないなら変な横槍入れない方がいいよ >>187
最終的にそのhi8やlo8のマクロを展開したあとの話だよ
要するにelfをダンプしたとき
そもそもldiの第二オペランドは即値しか入らないわけで リンカの仕事だと思うんだけど。
そりゃ実行可能オブジェクトにはアドレスが設定されてるでしょう。 どこまでがアセンブラかという話になるけど
stringsで調べるとavr-as.exe自体にlo8とかhi8なんて文字列が含まれてる
hi8()やlo8はアセンブラ自体の演算子だよ?
AVRにはアドレスのlabelの種類はないかも知れないが
elfにはアドレスのlabelの種類の情報や値の情報なんかも入ってるはず
じゃないとバイナリを再配置するときにlabelの値を書き換えるときに問題になる
単なる即値とは意味が違うよ >>189
AVRのelfのシンボル情報見たけど、hogeの値は確定されてた
アセンブラが出力してオブジェクトファイルのシンボル情報を見たらまだ確定されてないね
リンカの仕事だね LinuxもelfだけどLinuxの場合だとロード時に実際のアドレスが決まるんだよね
だから実行時のアドレスは実際に実行するまでわからない 実アドレスがどこになるのかなんて、プログラムの中の人には関係ないことです 64bitLinuxのgccで-mcmodel=largeを指定するとグローバル変数にアクセスするときに
リテラルプールから64bitの絶対アドレス読み込むようになるけど
実行時のアドレスはelfのシンボルテーブルの値と違うね
gccでデフォルトのオプションでfPIC、fPIEが指定されてる場合もあるのでその場合は
-fno-pic -mcmodel=largeとか-no-pie -mcmodel=largeとやらないといけない Linuxは-fPICや-fPIEオプションをを指定しない実行ファイルは
ロード時にアドレス情報書き換えてるようだね
http://0xcc.net/blog/archives/000107.html で結局アホ毛のアドレスはプログラム内で求められるん? おめーの毛のアドレスなんて分からなくても値はわかるから即値で0入れとけや ARDUINO 1.8.13 2020.06.16
[ide]
*複数のモニター設定でMacOSX> = 10.15でクラッシュする問題を修正しました。
*「ツール」メニューのボードリストにあるボードは、プラットフォームごとにグループ化されています。これは選択を行う必要があります
IDEに多数のボードがロードされていると、より簡単です。(ありがとう@matthijskooijman)
*「手動プロキシ」セクションのプロキシユーザー名/パスワード設定の保存を修正しました。
*「ツール/プログラマ」メニューでは、現在選択されているボードに関連するプログラマのみが表示されます。(ありがとう@matthijskooijman)
*修正:外部モニターを削除した後にIDEを再起動すると、スケッチウィンドウが表示されなくなる。
*シリアルモニター/プロッターが無効になっているときに、ボーレート/構成の変更を許可します。(ありがとう@matthijskooijman)
* jmdnsを3.5.5に更新しました。ネットワークボードの検出を改善する必要があります。
*起動時のライブラリスキャンの最適化。(@ricardojlrufinoに感謝)
*タブ内のファイル名の垂直方向の中央揃えが改善されました。(@ricardojlrufinoに感謝)
*アップロード中の進行状況バーのコンソールレンダリングが改善されました。(ありがとう@matthijskooijman)
[arduinoビルダー]
*修正後退:一緒にコンパイルする必要のある「ラッパー」コードを含むプリコンパイル済みライブラリを修正
プリコンパイルされた部分。
* Atmega2560 MCUでのコンパイル用の自動「--relax」を削除
*ブートローダーが.bin形式の場合のskethbook + bootloader hex mergerを修正しました。
*異なるパーティションをトラバースするときの相対パスエラーを修正しました(特に大きなスケッチのmacosxで)
*ライブラリ検出フェーズ中に#define変数を追加
*コンパイルからの改善された進捗レポート
[コア]
* AVRコアを1.8.3に更新:
-Wireクラスがタイムアウトをサポートするようになりました
-avr-gccを7.3.0-atmel3.6.1-arduino7にアップグレードしました >>202
( ´・ω・`)_且~~オチャデモイカガ? > *「ツール」メニューのボードリストにあるボードは、プラットフォームごとにグループ化されています。
> *「ツール/プログラマ」メニューでは、現在選択されているボードに関連するプログラマのみが表示されます。
> *シリアルモニター/プロッターが無効になっているときに、ボーレート/構成の変更を許可します。
> *起動時のライブラリスキャンの最適化。
このへん嬉しい ボードメニュー良き!
https://i.imgur.com/5XWp7NZ.jpg
でもプログラマのとこはいちいち選択しないといけなくなったわ IDE1.8.13を早速使ってみたら、なんかおかしい。
1.8.13でコンパイルしてみたら、BME280で計測した室内の温湿度気圧が、湿度だけいきなり100%になった。
同じスケッチで1.8.12でのコンパイルだと40%くらいだったのに。
ちなみにBME280のライブラリはAdafruitの2.0.2。(使ってるBME280はスイッチサイエンス製だけどw)
IDEを1.8.12に戻してコンパイルし直したら、もとの40%台に戻った。 今作ってるプロジェクトでBMP280使ってるから
その情報こわい・・・ IDE1.8.13に更新したらDS1307+を使った時計の動作がおかしい
バッテリーバックアップしてるのにマイコン起動するたびに必ず2006/02/06 6:28:00で時間が上書きされてしまう
一字一句全く同じスケッチをIDE1.8.12で書き込むと正常に動作する(上記のせいで変わってしまった時刻は直したとして)
なんかI2Cが変だな? Arduino Pro Miniを基板に実装しよとしているのですが、ICピンヘッダーを使っても大丈夫でしょうか?
足が多くて取り外しの時に折れそうで怖いです。 ヘッダーって言うとだいたいオスのほうの事だけど(メスはピンソケット)
丸ピンていうとメスの方(丸ピンICソケット)を思い浮かべるが
ともあれオスメスが正しい組み合わせのソケット使ってればなんでもいいでしょ
丸ピンソケット使いたいならそれ用のヘッダをはんだ付けすればいい >>211
ありがとうございます。
抜き差しできるようにしたいのですが足が多いので折れないか心配です。 ブレッドボードでも真っ直ぐ上に引き抜かないとピンが曲がるよね 入門しようといろいろ調べて、いざボードを購入しようと思ってるんですけど
どれを選べば良いですかね?
互換機は大量だし、書籍のお勧めが廃版だったりで悩んでます。 >>216
とりあえずATmega328P載ってる奴でいいんじゃないの?それが書籍でもwebでも一番日本語の情報が多いでしょ
つまりまぁUnoかNanoだな
形は好きな方でいいが(シールドが多いUnoかブレッドボードで使いやすいNanoか)最初は余計なトラブル(ハンダ不良とか)が無いように純正品を買っとけば?
https://www.switch-science.com/catalog/789/
ちなみにスイッチサイエンスでUnoを買うと永久保証がついてるよ
http://trac.switch-science.com/wiki/warranty
何か分かんねえけど動かなくなった!とか、ジュースこぼしてダメにした!とか、変な風にショートさせて壊したっぽい!とかでも新品に交換してくれるぞ >>216
アリエキで180-700円位の奴
値段重視 ATmega328P+CH340
https://a.aliexpress.com/_dVeW8T2
互換性重視 ATMEGA16U2 + MEGA328
https://a.aliexpress.com/_dVKKi5W
サイズ重視 CH340 ATMEGA328P
https://a.aliexpress.com/_dSiwFTq
安いから上から2個ずつ合計6個買うとかどお? 最近、Aliexpres経由で注文したものが、中国内でのトラッキングを最後に行方不明になることが多い。 そう?
俺が注文したのは全部ちゃんと届いてるけどな。 初心者にAliexpress勧めるなんて頭おかしいだろ >>221
220です。
アリのスタンダードとかシンガポールポスト便で連敗中。
空港までいって送り主へ返送とか、航空会社引き渡し後行方不明とか。
どちらも返金してもらった。 >>222
別に誰に勧められたわけでもないが最初からAliExpressやeBay以外で買ったことが無い。
つまり純正品は一つも持ってないが不良品だったことも無い。 いまは時期が悪いね
アマゾンで国内発送ならすぐ着くから、Aliの3倍くらい出せば? >>224
LEDがもげてるとか、promini3.3V版注文したのに5V版が来るとか日常茶飯事だぞ
更に裸TinyをArduinoで使おうとか生チップ買うと
平均して1割くらいは偽者とか高電圧リセットしても動かないものがある セラーの選び方が悪いんだろ
ピンからキリまであっての海外通販なんだから
そのクソのようなセラーを示しもせずにただ語られても困る これから始めよう!って初心者にAliexpressでセラーの目利きして買うとか届いたチップの真贋なんてわかるわけないんじゃ…? >>229
Arduino初心者が中華通販も初心者とは限らん
チップの真偽など素人でなくても届いてからじゃなきゃわからん
まだ食い下がる気ならもっと説得力のあるレスをしな 監視して遺憾砲撃つだけの簡単なお仕事です
島取られても人拉致されても何もしないからなこの国の公務員は 使い勝手の良さそうなUnoで試作してみて、動かすの安価なボードって方向で行きたいと思います。
レスありがとうございました。 まずはUNOで、何か作るならナノだな
この二つは素直に動く
他はクセが強い ワシはpromicroのクローンばかりつこてる
ちょっと高いけどUSBシリアル内蔵で迷わずに済む unoから入るとそう思うのかもしれねーけんど
特にクセなんか感じねぇ、そんなもんでしょ OUTばかりで自己主張が激しいとか
アナログ多めで繊細とかw>クセ いろいろなんでも気にせず使える方が自由だとは思う。 Arduino Nano 33 IoTはなんで日本で売ってるところないの? Teensy 4.0がパワーアップしてTeensy 4.1になって帰ってきましたよ
Teensy 4.1
https://www.switch-science.com/catalog/6377/ Teensy 4.1は価格が上がってるのでTeensy 4.0もまだ扱ってるようです
いろいろ盛り込んだ分、価格が上がったんだろうね
Teensy 4.1
https://www.switch-science.com/catalog/6377/
税込単価 4,177 円
Teensy 4.0
https://www.switch-science.com/catalog/5877/
税込単価 3,192 円 4.0の頃からそうだけど
クロック設定によっては1GHzで動作し64bit浮動小数点演算をハードウェアでサポート、もはやオーバースペック
…から繰り出されるLチカ Teensyって凄いスペック・・・
趣味で使うとしたら、これどういった用途に使うの? スイッチサイエンスはTeensy 4.1売るならこのLAN用のケーブルも売ればいいのにね
https://forum.pjrc.com/teensy41_ethernet2.jpg >>248
すげえな。
GHzが近いクロックで100mAしか食わずにヒートシンク要らんのか。
比べるものじゃないんだろうけど、PentiumやK6の時代に持っていったらひっくり返るな >>245
Arduinoでマイコン性能の壮大な無駄遣いって胸熱じゃwwwん! 夜ちょっと夜食買いにコンビニ行くのにフェラーリ乗っていく感じ! 486DX2は一応ヒートシンク付いてたけど別にグリスとかも塗ってなかったし、ずらしたらすぐ外れたな >>255
それでもFPUは別チップだし、クロックも数10MHzだったでしょ? MaixduinoならWiFi使えて、CPUは400MHzの64bitRISC-Vが2コア
CPUが64bitなだけではなくて、Arduinoでも64bitで開発できる
浮動小数点演算は倍精度に対応
Flash 16M(Arduinoでは8MBをプログラムに使用できる)
RAM 8MB(うち2MBはAIプロセッサで使うのでArduinoでは6MB)
Arduinoも性能の幅ができたね
Sipeed Maixduino
https://www.switch-science.com/catalog/5707/ どうしても行き詰ってしまったのでお知恵をお貸しください。
https://pastebin.com/n1nH1uks
内容としては
・Switch Caseで条件分岐している
・その中の一つのCase(今回はCase5)に IDEのライブラリ管理からインクルードしたST7032(LCD)用のライブラリを使用したを記載したコードを挿入
・表示桁数をそろえたいのでfprintを使用(unsigned longの変数表示今はテストのため99を表示)
・同じCase内のfprint以降のコードは実行されている(シリアルモニタで”5”が表示され、LCDには”99”が表示されている)
・なぜかそれより後のCase6以降が選択できなくなる
という状況になっています。
ループで回しているのでシリアルモニターで見ると0〜9まで表示されるはずなのですが上記LCDコードが入っているCase6より後ろのものが選択できないので0〜5までの表示になってしまいます。
これは何が起こってしまっているのでしょうか?
条件に応じて表示や動作を変えるように作りたいのですがこれだと複数の表示パターンなどを入れることが来ません。
どうにかCase5以降も正常に選択できるようにする方法をご伝授ください。 >>259
省略されると5が終わらないのか6の途中で異常が出てるのかわからん。異常の出てる当たりの前後にSerial入れて問題箇所特定して。 >>259
もう少し切り分けできると思いLCD関係を外してみたところやはり同じような状態が再現されたのでLCDは関係なかったみたいです。
改めまして、LCD関係を除外したコードを用意させていただきました。
https://pastebin.com/z8855K86
こちらのように途中のCase内でfprintを使用するとそれ以降のCaseが機能しなくなってしまいます。
シリアルモニタで観察すると
0
1
2
3
4
05 <-fprintで成形されたi = 5の変数
0
1
と繰り返し表示されCase6以降が選択されません。
(期待動作として0〜4,05,6〜9を繰り返す)
fprintを使用したcase5より後ろのCaseも動作するようにするにはどうしたらよいのでしょうか?
ちなみにですがこのコードは問題再現のために作ったコードなのでforで変なループ回すなとかそういったツッコミはご遠慮ください。
単純にCase6以降が機能しなくなる原因とその解決方法をお伺いするために作ったものです。 とりあえず char Val[2] = ""; をswitchの外に出してみ
forの1行上(loop直後)とか
switchのcase内で変数の初期化するなって赤字でwarning出てない? >>261
コンパイルした時点でwarning出るだろそれ…
warning: jump to case label [-fpermissive]
note: crosses initialization of 'char Val [2]'
コンパイラがおかしいっつってるのにまずそこを解消しろよ >>261
25、26行目削除
27行目 Serial.println(i); に変更
7行目8行目の間に Serial.println(i); 挿入
でやって なんかごちゃごちゃ書かれてるけどcaseで変数をローカル初期化したらダメ
そこ直せば問題なくループが回るはずだが >>263
なぜ毎行に行間をつけるんだw
初心者は「コンパイル出来た=プログラムに問題は無い」と思ってる節があって(偏見)
コンパイル成功したときはコンパイラが出すメッセージを一切読まない…気がする
例えコンパイルが成功したとしてもwarningが出たらチェックしないといけないのだけどね
そしてできれば初心者のうちは表示される警告は全部潰していくべき
当然無視してもいいものもあるんだけどそれはもっと自分で動きが把握できるようになってからだと思う まぁ狙った動作になってるからwarningが出るやり方でも問題なしとしていてcase fall throughとかunused variableとか出しまくるライブラリがあったりするからな
ライブラリの中で出てる警告なのか自分で書いたプログラムで出てる警告なのかわからんくなるんじゃねーの
それでも「こういう警告が出てる」って事実は質問に書くべきだと思うが ちなみに jump to case label はArduinoIDEの警告レベルが初期値でも出るゾ 全てに設定すべきってのは完全に同意だが >>268
教えられた通り環境設定から警告レベルの変更を行いようやく>>262や >>263でいわれたワーニングの意味が分かりました。
デフォルト設定ではコンパイル警告のチェックがOFFになっていたので今まで表示すらされてなかったので気づきもしませんでした…
なるほど、コンパイルは通るけどアラートが出まくるというのがあるんですね。
教えられた通り
>とりあえず char Val[2] = ""; をswitchの外に出してみ
を実行してみたところ確かに動くようになりました。
また、
>https://www.chihayafuru.jp/tech/index.php/archives/2990
の情報でも対策することができました。
ありがとうございます。
設定でアラートも表示するようになりましたのでこれからはもう少し原因究明に繋げられるように注視いたします while(1){寝る; 起きる; 仕事行く; 家に帰る; 寝る;} >>271
ArduinoIDEってデフォルトでwarning完全無視なの?ひでえw
まぁ解決してよかったな
これで次からは赤文字出てたらしっかり読んで自分で解決できるぞ! >>276
設定すると出るが
試に設定ファイル消してデフォルトに戻してみたら今は最初は「なし」になってたわ
インスコ仕立てで設定も何もしてないと一切出ない >>261
char Val[2]="";
じゃないの?
これにsprintfでゼロフィル2桁数字文字列入れたら3文字目の末尾ゼロが溢れて変なところに書かれるのでは?
char Val [4]="";
くらいでどう?
こういうのは大きめにしたほうがいいと思う。sprintfも想定外数値入ったら二文字以上出力しちゃうだろうし。 >>273
ループカウンター入れて一定数超えたら餓死とリセット転生呼び出してください >>261
素直に考えれば、スタックにまず i が取られて、その上にVal[2] が載るだろうから
Valをオーバーフローさせたら i が書き換わるという現象は不思議じゃないね
ArduinoはC言語だから、Cのメモリ管理や文字列について学ぶべし。
マシン語の知識もある程度は必要なので、ちょっとやったほうがいい。
sprintf と fprint を書き間違いしてるところからして、コードを書くときは
スペルやらをもっと注意深く扱うべし >>280
もう解決したことにたいして的外れなしかも間違ってることを堂々と書けるバカって幸せそうだな >>281
そっちの問題もまだあるから間違いでもないのでは >>282
いつも出てくる煽りだから気にしない。
c++ではcaseブロック内の変数宣言は可能。初期化が実装依存なので注意/避けるべきだけど。
直接の原因は文字列のオーバーフロー説に同意 どうして間違った知識の奴ほど自身満々に書き込むんだろう
avrgccではcase内でローカル変数の新たに宣言して使ってはいけない
オーバーフローは全く関係ないし、ただcase内で変数を初期化するだけで正常に動作しなくなる
簡単に確かめられるのになぜ間違ったことを書き込むの?
もう一度書くが、オーバーフローは関係ない、avrgccにおいてcase内でローカル変数を宣言してはいけない
↓実行してみろ
https://pastebin.com/YK0TEBc2 流し読みしてたからどっちが正しいか判らんけど
>どうして間違った知識の奴ほど自身満々に書き込むんだろう
これって自分にも当てはまってるって気づいてるのかな まぁ今回に限って言えばはオーバーフローは確かに関係ないが…
そもそもまず何でいつもすぐ下らないマウント合戦になるのさ
しかも質問者は解決しててもう居ない終わった話でさ
他のスレでも基本そんな感じだけど…初心者熱烈大歓迎の看板は外した方が良いんじゃない? >>285
両方あってると思う。
問題が2つあるってこと。
宣言場所を移動して動いているのもたまたまかと。 a = 10u * 1000u;
10uとか、1000uの「u」ってなんすか? 今回の例はループカウンタはレジスタ上に取られてchar配列はRAM上に取られる予感 誰も口ばっかでオーバーフローのこと検証しないのな
さすがマウントスレ >>265、>>278が書いてることは最低限修正がいるよね。
2文字の文字列のためには3文字分のエリアが必要なのに、2文字分しか確保してないし、
sprintfで2文字書いたら、どこかを壊して0を書き込んでる恐れがあるわけだし。 だが今回の05で止まる件とは無関係
[4]にしてやっても止まり、外で宣言すれば[2]でも止まらない
何で無意味に食い下がるんだかw>>278,280,295 >外で宣言すれば[2]でも止まらない
すみません。
スコープの問題はすでに解決ずみだと思っていました。
↓これでもダメだろか。
case 5:
{ //スコープをくくる
char Val[4] = ""; //2で動くのは運がいい
sprintf(Val, "%02d",i);
Serial.println(Val);
} //スコープをくくる。ここまで
break; IDEをダウンロードするとこから寄付金送ったことある人いる? なんも来ないよ
つかアカウント作らんでPayPalで払ったし 当方Arduino初心者です。
サブPCでArduinoIDE環境が整わなく困っています。
有志から提供されたライブラリを使おうとするがコンパイルエラー。
提供されたライブラリがHID.hを参照しているがそれが見つからないとのこと。
メインPC https://imgur.com/uKwEapW
サブPC https://imgur.com/s7whb1f
確かにHID.hがなさそうですが、メインPCでインストールした記憶がなく、標準ライブラリだと思っております。
メインPC側のHID.hをディレクトリごとコピーしようとも考えたましたが、ライブラリディレクトリ内にHID.hが見つからず。
原因と解決方法をご教授頂きたく。 HIDって32u4が載ったデバイス用のライブラリでしょ?
ボードマネージャでサブの方にだけインストールされてないボードとかがあるんじゃない >>303
arduino.ccからもらって来たarduino-1.8.12-windows.zipの中を見をてみたけど、
arduino-1.8.12\hardware\arduino\avr\libraries\HID\src
に入ってる。 >>304
>>305
返答ありがとうございます。
HID.hをコピーして 早速つぎの壁にぶち当たりました。
ディレクトリごと丸々コピーしたのが原因でしょうか。
〜以下エラーメッセージ〜
Arduino:1.8.10 (Windows 10), ボード:"Arduino Leonardo"
C:\Program Files (x86)\Arduino\libraries\src\del_opnt.cpp:25:56: error: 'nothrow_t' in namespace 'std' does not name a type
_UCXXEXPORT void operator delete(void* ptr, const std::nothrow_t& ) throw() {
^~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\src\del_ops.cpp:25:50: error: 'std::size_t' has not been declared
_UCXXEXPORT void operator delete(void* ptr, std::size_t) throw(){
^~~~~~
「yuushi.h」に対して複数のライブラリが見つかりました
使用済:C:\Program
「HID.h」に対して複数のライブラリが見つかりました
使用済:C:\Users\usename\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\HID
exit status 1
ボードArduino Leonardoに対するコンパイル時にエラーが発生しました。
「ファイル」メニューの「環境設定」から
「より詳細な情報を表示する:コンパイル」を有効にすると
より詳しい情報が表示されます。 連投と下げ忘れスミマセン
当方Cの知識もかじる程度で、引数の考え方すら曖昧なほどです。
エラーメッセージの解読すらままならない状況です。 あるべきライブラリが見つからなくて失敗してたんだから手動コピーで状況をややこしくするよりIDEをアンインストールしてインストールし直した方が良いと思う 元から入ってるって>>305で示されたわけだが
なぜコピーしてしまうのか ボードメニューからArduino Leonardoとか選べば、HID.hがメニューに現れるね
ボードメニューからESP8266を選べば、ESP8266用のライブラリが現れる
ArduinoIDEはそういう仕様になってるね >>306
とりあえず、どのサイトを参考にしてるかを明確にすることです。
にしても、参考にしているサイトに書いてる通りの場所に書いてる通りのフォルダをコピーするのが鉄則ですよ。
>>305に書いたやつは>>305に書いた場所に無けりゃダメだし、重複してもダメです。 >>308
再インストールしてことなき得ました。
ありがとうございます。
>>309
なかったのでコピーしました
>>310
303のサブPC画像の右下でLeonardoを
選択していることがわかると思いますが、
HID.hが見つからない状況でした。
>>311
目的がグレーゾーンなのでなるべく表記しませんでしたが、
こちらのサイトを参考にしています。
https://qiita.com/sobassy/items/cb707e50f2f27a851886 みなさまありがとうございました。
動作まではうまくいっていませんが、コンパイルまではうまくいきました。
しばらく試行錯誤してみようと思います。
連投スマソ。 >>303
前スレの852です。
私も似た様なコンパイルエラーが起こり、どうにもならなくなりました。
お使いのIDEはインストーラー版でしょうか?
そうでしたら、とりあえずzip版を使って見て下さい。私はそれでとりあえず一時凌ぎができました。
根本解決したかったのですが、インストーラー版の再インストールでは症状が治らなかったので、HDDの交換容量アップも兼ねて、OSのインストールし直し→IDEのインストールし直しになりましたけど。(メンドクサカッタ…。) 重ね重ね申し訳ない。 >>303 です。
コンパイルと書き込みまでうまくいきましたが動作しない状況です。
https://qiita.com/sobassy/items/cb707e50f2f27a851886
上記参考サイトの下部
>SwitchはデバイスのIDが登録外だった場合、信号を受け付けなくなるので、ArduitnoのデバイスのIDをSwitchが認識できるものに変えてあげる必要があります。
とありますが、borads.txtを書き換えてボードに書き込みましたが動作せず。
LEDランプが光らないことから認識されていないと判断して、IDEでボード情報を取得。
BN: Arduino Leonardo
VID: 2341
PID: 8036
と表示され、VIDとPIDがboards.txtを書き換える前の数値と変わっていません。
度々申し訳ないのですが、原因と解決方法ご教授頂けませんか。 >>317
サイトを参考している為、予備知識等ゼロに等しい状態です。
>>303時点でにわか知識を色々こねくり回して皆様にご迷惑おかけした末
状況把握のみを...と思ったのですが。 変わってないってことはVIDとPIDを盗用するために書き換える箇所が間違ってるんでしょ 一旦IDEを終了してファイルを書き換えてIDE再起動とか、そういうレベルの話? >>319
パスの確認と、
うまくいっているメインPCとの比較確認を行いましたが、間違いなさそうです。
>>320
盲点でした!と思って試してみましたが改善に至らず。 すんません IDEって細かいコンパイルログとか出ないんですよね
usbconfigいじっても、それ関係がコンパイルにかからないような気がしてるんですが https://i.imgur.com/zq5fle4.jpg
赤丸のとこらへんよ
そんで、バージョンアップで項目増えてた
use アクセサリーふぃゆーちゃーってなんだ! https://imgur.com/WIcjQ72
参考になるか分かりませんが、
書き換えたBords.txt と 書き込んだあとのボード情報の
スクショをあげてみます。
VID: 2341
PID: 8036
は選択した2行分の書き換える前の数値です。 >>326
元々のと二つあるけど、もともとの数値の行は消したの? ごめん
0、1といくつかあるんだな
328は無視して >>328
読解力がなく申し訳ない...。
書き換える行周辺のビフォーアフターが以下になります。
ビフォー
leonardo.vid.0=0x2341
leonardo.pid.0=0x0036
leonardo.vid.1=0x2341
leonardo.pid.1=0x8036
leonardo.vid.2=0x2A03
leonardo.pid.2=0x0036
アフター
leonardo.vid.0=0x2341
leonardo.pid.0=0x0036
leonardo.vid.1=0x0f0d
leonardo.pid.1=0x0092
leonardo.vid.2=0x2A03
leonardo.pid.2=0x0036
真ん中の2行を書き換えています。
とんちんかんな返答していたら申し訳ない...。 >>331
ごめんなさい
私の早とちりなので気にしないで leonardo.vid.0
leonardo.Pid.0
は書き換えちゃダメなの? >>332
いえいえ、ご丁寧にありがとうございます。
>>333
メモ帳ダメなんですね
一度メモ帳で保存したらアウトっぽいので...
再インストですかね...
>>334
やってみましたけど変わらずですね
(エディタはメモ帳でしたが。)
ボード情報を読み込むと、
書き換え前の数値になっていた為、
~~~.1を書き換えるのは間違えなさそうです。
>>326 スクショと >>331 コピペ参照 >>333
再インストしてVScodeで編集してみましたが
やはりダメみたいです。
情報ありがとうございました。 ArduinoIDEインストールするのは初めて?
別バージョンを入れたことがあるならインストールされるフォルダが変わってる可能性がある
つまり別バージョンのboards.txtを編集してるかもしれん >>337
私もそれを危惧して、
ショートカットからファイルの場所へと飛んで編集したので
おそらく間違いないと思います。 >>335
参照サイトの下の方、zenito9970氏のコメントも見た方がいいかも
違うこと書いてある leonardo.build.vid=0x2341
leonardo.build.pid=0x8036
こっちもだ! build.pidとbuild.vidが使われてるのかもね >>339
情報ありがとうございます。
試してみましたが、ダメでした...。
https://imgur.com/a/GyyVGB0 参考サイトには本分とは別のboards.txtのパスが書かれてるけど
そっちは存在したの つーかめんどいからboards.txtでファイル検索してみたら みなさまご協力ありがとうございました。
Arduino Leonardo のボードマネージャをバージョンダウンしたら
書き換わりました。
最新のver1.8.3 からメイン環境と同じ 1.6.2 にして解決しました。
大変長い時間お付き合い頂きありがとうございました。 >>343
お伝え忘れてました。
ありましたね。
バージョンダウンしたあとは
どちらも書き換えたので、結局どちらが影響してるのか分からず仕舞いです...。 Arduino Microか互換で、汎用ICでデジタル入力の足増やすのを計画してます。
74HC165
74HC153
74HC157
等の使い方調べてるんですが、他にも似た用途のものってありますか?
一応ダイオードマトリクスも検討してます。 >>347
74HC597。ホールドレジスタとシフトレジスタを組み合わせたもの。8ビット入力 >>347
>>348
お前らロジックICの使い道を俺に教えてくれてありがとう ごめん、ちょっと脱線するけどダイオードマトリクス?の一応確認で、
3本の入力線を、1,2番のポートに、1と2と1+2っていう風にそれぞれつないで、間にダイオードを入れておけば、
入力がどれか一個しか来ない時に検出出来るって事でいいのかな?
あとは、NOT二回入れればダイオードの代わりになる? 抵抗値を何段階かでADCする方式も、IOポートの節約の目的には捨てがたいな >>322 です コメントありがとね 試してみるっす
「マウスをちょっと動かして離席状態を避ける」ってやつを焼いてみたが、
会社から借りてるシンクラだと、idVendorがちゃんと
してないとハネるんだよねー で書き換えしたいなーと いう話 マウスの方式にもよるけど赤外線LEDチカでええんちゃうん 100均のプラレールもどきは、とりあえず買ってみたが
どう振動を与えたらいいのかよくわからんw
赤外線側に着目するのはスゲエ発想 それは気づかんかった できるのか
とりあえずdigisparcが4回に1回ぐらいしか書き換わらないのなんでだろー なんでだろー じゃあマウスがトンネルの天井になるような形でいいんじゃね
マウスを動かすんじゃなくてマウスパッドを動かすんだ
列車が通過するたびマウスが動いたことになると思うぞ 秒針のある時計の上にマウスを乗せておく…とかっていうのがどっかにあったような >>361
それ
って1ヶ月前にもやってたよね?この話し。
厳密に言うと詐欺行為になるよ。 Arduinoの*.hexはそのままAVRに書き込んでも動作しますか?
しますよね? MCP23017の使い方が解説されてる
デジタルピンを増設する「IOエキスパンダー」の使い方 [Arduino]
https://www.petitmonte.com/robot/howto_io_expander.html >厳密に言うと詐欺行為になるよ。
マウスを時計に乗せたら詐欺行為? なんで?
「マウスが動いていることをもって働いていることを監視している職場において、マウスを時計の乗せてマウスを動かしているふりをする」
みたいな条件が付かない限りは詐欺にならないのでは? PICはhexの中に設定入ってるけどArduino(AVR)は入ってないんじゃね 何か懐かしいと思ったらアイコン警察と勘違いしてたw C#なら2行でマウスプルプル
while(true){
System.Random rand = new System.Random(1000);
System.Windows.Forms.Cursor.Position = new System.Drawing.Point(rand.Next(-10, 10), 0);
} >>372
ありがとうございます
やっぱ動作するんですね
Arduinoのボードは大きくて邪魔なのでAVR単体にしたかった System.Windows.Forms.Cursor.Position は画面全体の座標だっけ?
だとしたら、だけど、Xのマイナスってどうなるんだっけか。 >>355
>会社から借りてるシンクラだと、idVendorがちゃんと
そもそも Thin Client だと、自作プログラムは実行できないかも。 >>384
俺のマウスでもできなかった。なにかのザラザラをレンズを通して結像してそれの移動を見てるんだと思うけど、鏡を使ったら何を見てることになるんだろう。
昔のロータリーエンコーダのマウスならこういう改造は簡単にできたかな。 Arduino IDEの新バージョンはボード選択メニューが階層になって選びやすくなったけど
ライブラリのメニューは変更なしか
次のアップデートで、ライブラリは別ウィンドウのダイアログで管理できるようになれば良いのにな
こんなにライブラリが増えるとは当初思っても見なかったわ あ、今でも別ウィンドウで管理できるけど
自分でフォルダー作って好きに纏めたりとか出来たら良いんだけどな VScodeなり使ってPlatformIOとかで開発したらええんじゃない それがなんかうまく行かなくて、ArduinoのIDEじゃないと動かない場合がある 同じgccでビルドしてるんだからどっか構築が間違ってるだけだよ 何がどう動かないのかを書かないとなあ
ま、書けないから、直せないんだろうけど PlatformIO IDEだと純粋なC++になる
Arduinoは純粋なC++じゃなくて特殊なことをやってるC++もどき
だからArduino IDEでコンパイルが通るのにPlatform IOだと通らないこともある
一番目立つ違いはPlatform IOだと
関数はその関数を使う関数よりも先に宣言しないと使えないのに
Arduino IDEでは宣言しなくても使えること
Platfom IO IDEを考慮してないArduino IDE用に書かれてるサンプルは
ほぼ間違いなく修正なしに動作しない
Platform IO IDEを使ってる人はその辺はなれてるから
簡単に修正して動かすことはできるけどね たとえばPlatform IO IDEだと
こうしないとコンパイルが通らないが
#include <Arduino.h>
void func01(void);
void func02(void);
void setup() {
Serial.begin(115200);
func01();
}
void loop() {
func02();
delay(10);
}
void func01(void) {
Serial.println("func01");
}
void func02(void) {
Serial.println("func02");
} Arduino IDEだとこれでコンパイルが通る
void setup() {
Serial.begin(115200);
func01();
}
void loop() {
func02();
delay(10);
}
void func01(void) {
Serial.println("func01");
}
void func02(void) {
Serial.println("func02");
} あと、Platform IO IDEだとVScodeは自体は軽いのだろうけど
Platform IO自体がPythonで書かれてるようでかなり重い
2コアのCPUだと重すぎて裏で何か動かすこともかなり辛い Platform IOのいい点は#include文が<>でも""でも
srcフォルダの直下を最初に見に行ってくれるので
ライブラリを毎回修正してる場合、
srcフォルダの直下にライブラリのソースファイルを入れておけばいい点 あと、Platform IOはフレームワークのバージョンをプロジェクト毎に指定してビルドできたり
FlashやRAMの多いマイコンならサイズ重視の最適化オプションではなく
速度重視にしたい場合もあるが
Platform IOなら、プロジェクト毎に最適化オプションを変更できたりいろいろ便利ではある >>397-402
非常に参考になった
ありがとう! 初心者スレなんで簡単に>>397-402の要点を書くと
初心者はPlatform IOに手を出さなくていいということ
で>>ID:Q45+zkttはどうなった? おおざっぱな質問なんですが
arduinoのadってどれくらい電力を消費しますか? >>406
大雑把過ぎるぞ
どのArduinoかによって載ってるマイコンが違うのに
あとADてなんだADCのことか?
とりあえずUnoとかNanoに載ってるATmega328PのADCの消費電力ならデータシートの522ページに載ってる データシートが258ページしかないんですが甘えないで探します >>409
勝手に日本語にした奴は公式じゃないから使うのやめとけ
あれたまに間違ってるし
ちゃんとMicrochip公式のデータシートを見ろ >>412
公式のやつも294ページしかありませんでした
他のやつもあるかもしれないのでサイトほってみます 判明しました
みなさまありがとうございました
思っていたより結構消費するんですねー バッテリープロダクトならあらゆる周辺回路は使うとき以外極力オフにしておこう
ADCは違うけど中には明示的に止めないとスリープしても動いてるのもあるし AVRのADCは0.2mA弱喰った記憶がある、そんで16MHzの本体が15mAとかだったような
たまに中華クローンで電源LEDがバカみたいな明るさになっててお前が光るだけでマイコン並みじゃねえかみたいの有って笑う >>419
スイッチのプルアップがおかしくて
スイッチ押すと異様に電力食うESP32中華製品とかあるし >>420
>>413の51pあたりから消費電力削減のための設定が書いてある なんか自分で中華製買うの怖くなってきた
おススメ中華UNO教えて まぁDIPがいいって人とかこのシールドが使いてえって人もいるかもしれないし
esp32とかでもわざわざUnoの形にしてるのあるしね もっと小さいのがいい miniとかmicroがいい 完成したらUSBシリアルは不要なのでprominiでもいいんだけど
不思議とNANO互換のほうが安かったりするんだよな
純正ProMiniはA4-A7がボードの中央にあってピッチもずれてて使いにくいんだけど
中華ProMiniは端っこに修正されてる
https://www.aliexpress.com/item/33026933494.html
これはクリスタル交換も容易、16MHz←→8MHzや20MHzもできる
なんせ安いから躊躇無くコテ入れられるわ
LDOも交換しないと3.3V発生してくれないけどこれは外付けでもいいだろう LDOはピン互換じゃない場合があるので回転したり裏返したりしないと大惨事になるよ
クリスタルとLDOを交換した例
https://i.imgur.com/CCXHiG3.jpg >>397
単なるプロトタイプ宣言。gcc ならオプションで制御できる。
-Wimplicit-function-declaration
ArduinoIDE と PlatformIO で同じオプションを付けないと全く動作が変わるし、
生成されるコードも大きく変わる。 >>429
他人の作ったプログラムをコピペするなら必要かもしれないが
自分で作る場合はわざわざArduino IDEに合わせる必要ないと思うけど
ライブラリでトラブルにあったことは今のところないし
それに関数で使う前にプロトタイプ宣言が必要ないのは.inoのファイルだけだぞ
.cppや.cだと必要 >>430
> それに関数で使う前にプロトタイプ宣言が必要ないのは.inoのファイルだけだぞ
> .cppや.cだと必要
-Wimplicit-function-declaration って書いたのが見えてない?
プロトタイプ宣言無しでもコンパイル通る
もちろん .c でもな
ただそれを標準装備の ArduinoIDE のように常用するのは、どうかとは思うよ
ArduinoIDE使ってる人と、emacs+PlatformIO 使いが同じコードを書くとは思ってない >>431
だからArduino IDEがプロトタイプ宣言がいらないのが.inoだけで
.cや.cppはプロトタイプ宣言がいるんだよ
だからライブラリとかはプロトタイプ宣言がいる使用なの、Arduino IDEはね 32bitのArduinoはたくさんあるが
よく考えてみると16bit CPUのArduinoはあまりないね
全くないわけじゃないけど、どれも普及してない
ARMが8bit、16bitマイコンの置き換えを狙ったCPUコアのCortex-M0+を使った
SAMD21みたいなマイコンがあるから必要ないのかな? >>428
早く言ってくれよ
どれも2番が出力じゃないのかよ
マジックスモークだよ >>434
データシートを読むのは基本だぞ
いい勉強になったな MicrochipとしてはArduinoはAVRやARMのSAMで押さえてるから
あえてPICでArduinoやろうとはしないだろうね
PIC32のArduinoはあるようだけど >>433
精神的な要因が多いのでは?
16bit位が丁度いいと思ってるけど、8bitで作れるようなものを16bitで作ると貶される(気がする)
コストを求める業務用ならともかく、趣味の世界では8ビットを16ビットに置き換えたほうが幸せになれる気がする
(主張はともかく家に在庫してるマイコンは8bitか32bitが大半を占めてる) リソースを節約する古き良き職人気質は、マシンパワーでぶん回す時代の流れに押しつぶされるんだね。 >>442
個人レベルだと学べることに限界はあるからなあ。 今どき薪割りして風呂沸かしてる家なんか無い
やってるとしたら趣味の領域
それと同じだ >>433
>全くないわけじゃないけど、どれも普及してない
あったのか… >>444
Arduinoを趣味意外で使ってる企業(個人)ってあるの? セコセコしないで技術革新によるパワーの恩恵を十分に堪能すればいい 近所の銭湯の何軒かは薪、おがくずが燃料だ。昔からのところだけど。
乗り換えるだけのメリットがなければそれでもいいわけで、それはマイコンの選択も同じ。 我が家の近くの銭湯も解体現場から持ち込んだと思われる廃材が庭に積んである。
経費が安く済むからだろうな。
個人の家で薪の風呂は「ポツンと一軒家」くらいだと思う。 家庭で使われてる洗濯機の95%は全自動だ
洗濯板の方が隅々まで汚れが落ちるんだとか
二層式の方が洗浄力が高く、洗い・すすぎと脱水が同時に出きて
短時間に大量に選択できるんだとか言ってるが、それらの利点は業務用に於いてだ
それと同じだ 会社の制服は洗濯機禁止で手洗いせよと書いてあるので
帰ってそれだけ手洗いしてる
そのあと脱水は洗濯機
乾燥機もダメ スマートハレタの話題って、このスレで大丈夫ですかね >>461
なんだっけ?そんなタイトルのゲームがあった気が >>463
ゲーム製作集団のことかな?
タイトルの前にロゴが出てくるんで覚えてるんだろうと思う
Bio_100%
ttps://ja.wikipedia.org/wiki/Bio_100%25 Bio_100% はWinGXで抜け作のゲーム遊んだわ どちらも同じWIZnet社製W5500チップを使ってるやつなんだけど
3.3VのArduinoで使いたいんだけど、どっちがいいのかな?
WIZ550io v1.3
https://www.switch-science.com/catalog/2382/
税込単価 1,980 円
WIZ850io
https://www.switch-science.com/catalog/3683/
税込単価 2,442 円 >>469
1ヶ月、2ヶ月待てるかよw
しかし、毎回中華の回し者が来るな >>470
などどswitchscienceの回し者じが吠えております。 >>472
ソースすら読まずにニュー速のスレタイだけを見て脊髄反射するから
何の関連も無い場所で何の関連も無い流れでクソレスw
まあ、ウヨさんの無能さにも最近は慣れて来たけど、一応言っておこう
文字読めますか、理解力ありますか、馬鹿ですか、と アリババを利用するなんて中国政府に個人情報渡すような行為誰がするんだよ アリババ元会長は中国共産党員
アリババ会長も中国共産党員......「赤い資本家」がIT企業に潜む
https://www.newsweekjapan.jp/youkaiei/2018/12/post-30.php
> そのような政治的洗礼を受けていたならば、
> マーは一企業人として資本主義風に金を稼いできたのではなく、
> 隠れ共産党員として市場原理を利用し、党と政府のために工作してきた、と言えよう。
> 日米の政財界と太いパイプを築いたのも、
> リベラルな企業人として世界経済に貢献したというよりも
> 「高級スパイ」として潜入したとみたほうがいいかもしれない。
>
> そもそも中国ではアリババほどの規模になると、
> 政府や共産党の触手から逃れて市場原理だけで経営などできない。
> 改革開放を掲げた政府の「社会主義市場経済」は建前。
> 実際の中国経済は共産党員である「赤い資本家」が国家資金を駆使して、
> 国民を搾取する官営資本主義だ。 俺はどちらかというとリベラルでネトウヨではないからな 俺aliexpress派
最近大分まともに届くようになった
物流が回復してきている ラズパイzeroはswitchscienceで買ったけど
Arduinoは全部中華互換機だなあ、
最初は尼で買ってあとはずっとAliexpress
switchscienceで面白そうなもの探してAliexpressで互換品買うといのもよくある
倒産すると困るので、俺以外の人はswitchscienceで買ってあげてください。 習近平に忖度した安倍晋三が春節にコロナ満載の中国人観光客に熱烈ウエルカム
こういう事実は見えないふりなんだよね、こういうヤツって>>ID:gUwXHLKx
自分の都合のいい方向から見た都合のいい側面しか語らない便利な価値観の持ち主 格安wifiモジュール「esp8266」「esp32」 が落ちてるみたいなので、ここで質問します
ESP8266でスマホのLINE通知を受信できますか?
通知があればESP8266でLEDとかを光らせたいです。 >>476
中国批判するなら中国製品を着用するな、なんて考える方がいかれてるだけなw
ソ連誕生間もない頃、資本主義国家と貿易すべきかどうかが問題になったことがあった
レーニンはこう言った
資本主義者から買ったロープで彼らの首を絞めればいい
ということで貿易することになったとさ 中国製、コストのみならずパフォーマンスも上がってきてるからな。
20世紀からアップデートしたほうがいい。
民生品だったら、日本製は C/P 悪すぎて話にならなくなってるし >>483
出来る方法はあるけど、そういう質問をしてるレベルだと難しいと思う。
「なんとかのスケッチを書き込めば出来る」
っていう感じではなくて、いくつかのサービスを組み合わせてシステムを実現するかんじ。 思うように動かず質問です。
Aruino nano互換機とPIRセンサーとサーボモーターを組み合わせ、
PIRに手をかざした時にサーボモーターが決められた角度動いて元に戻るようにしたいと考えています。
#include <Servo.h> //サーボモーター用ライブラリを読み込み
const int PIR_ON = HIGH; // PIRセンサーが反応しているとピンの値はHIGH
const int PIR_OFF = LOW; // PIRセンサーが反応しているとピンの値はLOW
const int PIN_PIR_SIG = 12;
const int PIN_Servo = 8;
Servo myservo;
void setup() {
pinMode( PIN_PIR_SIG, INPUT_PULLUP );
pinMode( PIN_Servo, OUTPUT );
myservo.attach(12);//servo変数をピンに割り当てる、ここでは12番ピン
}
void loop() {
int i = digitalRead( PIN_PIR_SIG );
if (i == PIR_ON) { // PIRセンサーが反応していたら
digitalWrite(PIN_Servo, HIGH);
}
else {
digitalWrite(PIN_Servo, LOW);
}
}
Void loop中のサーボを動かすコードはどうすればよいでしょうか?
また、コードの中でおかしい箇所(たくさんあるかもしれません・・・)ありましたらお教えください。 >>488
サーボは8番ピンじゃないの
const int PIN_Servo = 8;
と設定したんなら
myservo.attach(PIN_Servo);
と書きましょう 皆さんありがとうございます!
再度見直してみます。 出来ました・・・!
感動です!
LEDも組み合わせましたが動作しています。
皆様のおかげです、ありがとうございました。 最初はそんなもんだ
初めてfortranで書いたプログラムが動かなくて先輩に相談したら
カンマがピリオドになってただけ。
自分じゃ半日眺めても分からなかった ELEGOOのMEGA2560スターターキット買ってチュートリアルどおりにやってるんですが、Lesson30のリレーが作動しません。
直前のLesson29で電源モジュールつけて、L293Dというドライバつけてモーターを動かすのはできたのでそれら部品は問題ないです。
Lesson30はリレーが加わっただけなのでリレー部品が壊れているのかと思いますが、壊れているかの確認方法がわかりません。
確認方法等なにかありますでしょうか。 リレーはコイルと接点でできている
コイルに電流流すと接点が閉じたり開いたり。
電池と豆電球があれば機能確認できるでしょ。 Arduino UNOを書き込み装置としてブレットボード上の328Pにブートローダを書き込みたいのですが、
avrdude: Device signature = 0x000000となりうまくいきません。
どういう手順で確認したらよいでしょうか・・・ >>499
ArduinoISPのスケッチ・書き込み装置の選択までは有ってるので
結線ミスか配線の不良かブレッドボードの不良を疑ってみる >>500
そうですよねぇ・・・
さんざん確認したんですが。
もうちょっとやってみてダメならUNOを2台使用する方法を試してみます。
ありがとうございます。 動作しないの?
エラー出ても実際の動作には支障ありませんって書いてるホームページあったけど
あとAtmega328Pがブレッドボードにちゃんと刺さってなかったって人もいた >>501
なにか足りないのかも
写真とかアップすれば他にもアドバイスできるかも
https://i.imgur.com/T0vDehI.jpg
こんな感じで
↓正常に書き込みできた時の出力
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude done. Thank you. とりあえず、スケッチ>>書き込み装置を使って書き込む からLチカのスケッチでも書き込んでみて
書き込めるか&動作するか確認してみたら? >>503
わざわざ写真までありがとうございます。
同じ配線はできているようなので、ブレットボードと配線の接触とかかもしれません・・・
ちょっと急ぎだったのでUNO2台を使用するやり方で1発成功しました。
お騒がせしました。ありがとうございました。 Arduino NANO の3.3Vはどこで作られてますか?
FT232RLまたはCH340?
裏についてる3端子レギュレータじゃなさそうに見えます… >>506
回路図によれば純正のはFT232RLの3V3OUTピンから出てる。 >>507
ありがとうございます
やっぱそうですよね
いまいち自信がなかったもので
インターフェイスICなのにレギュレータも付いてるなんて >>509
FT232RLでもそんなもんなんですね
今、CH340使ってて3.3Vモジュールの動きがおかしいもので
FT232RLのやつに換えたらなんとかなるかと思ったんですが
3.3Vはオマケですねぇ 電池はモーター回せるくらいパワーあって短時間なら1Aとか取り出せるよ そういや外部からの5V入力は5Vにつないでいいの?
まぁつなげばわかるんだけどそれはナシということで >>513
大丈夫では。
レギュレータのLM1117はVOUT>VINでも大きい電流が流れない限りは保護ダイオードはいらないことになってるし。 >>514
サンクスです
ボクはそういうのがわからないレベルですw 保護ダイオードというのはコレ
https://i.imgur.com/ETqO9ZC.jpg
AMS1117の場合はD1不要と書いてある
2電源になる場合はあったほうがいい アメちゃんが中国と取引すんなボケーって言い出した
アリは引き上げかも知れんね いつかこうなると思ってた
買い溜めしておいてよかった
あ、今のうちにハンダ大量に買っとこうかな トランプ(共和党)が大統領選で負けても、香港の状況を考えると、バイデン(民主党)新大統領も掌返したように、中国に擦り寄る事もできないよね
その前に、軍事オプション実行の話も出てきてるみたいだし > 軍事オプション実行の話も出てきてるみたいだし
米国の空母艦載機で南沙諸島の中国軍基地を攻撃、とかやってくれないかな。 米中戦争・米朝戦争を対岸の火事だと思ってる日本人!
戦争景気で儲かるとか、空母やら戦闘機がちょこちょこと交戦するだけだろと思ってる日本人!
今の戦争はミサイル攻撃だぞ!
中国が何万発のミサイル・何万発の核弾頭を配備してるか調べろ!
米軍基地はどこにある!?開戦即、数千発のミサイルが飛んで来るんだぞ!
日本が戦場になることを自覚しろ! 米中が軍事衝突したらよっぽどじゃない限り第三次になるんだよなぁ… 激突しないために日本はもっともっと中国にすり寄り媚を売り言いなりになろう
要するにこう言いたい訳だが、ハッキリ言うと流石にバカでも、それはおかしい
と気づいちゃうんで、平和万歳、命は何より大切、ミサイル怖いですねぇ、核は怖い怖い
と少し婉曲に言ってますw しかし中国ってどうしようもない独裁国家だよな。
シューキンペー見てると、総統を続けられるように憲法を改正した第二次大戦前のヒトラーを思い出す。
ヒトラーのポーランド侵攻のようにチベット、内モンゴル、ウイグル自治区を侵攻、占領して
悲惨なジェノサイドをやり、俺のもんだと勝手に宣言して、所有権が無い南沙の島々に基地を作った。
国民は金のためなら何でもやる金の亡者だし、
とにかく中国は世界平和のために一刻も早く滅んで欲しい。 >>524
その習近平に忖度しインバウンドを見込んで春節に中国人ウェルカムの安倍晋三にもひと言どうぞ そんなナチスと手を組んだ日本とイタリア
何考えてたんだか
今はアメリカに付いてるけど、これも逆張りかもねw 石油資源の有無だね
アメリカべったりから抜け出そうと画策した田中角栄はハメられた
その意思を受け継いだ石破の息子は未だに冷や飯喰ってる
ボンボン育ちの無能安倍がでかい面して担がれて日本は亡国の憂き目 君たち中国好きすぎだろwww
日本のマスゴミも大使呼んで映像見ながらインタビューすれば良いのにw
好きだかだぁ、絶対やりません、ってか
https://youtu.be/DwBaL-5o1oc 毛沢東と紅衛兵で懲りたはずなのに、アホは過去から学ばないみたいだな。
とにかく諸悪の根元<中国帝国>が滅べば世の中は平和になる。 えっ? 好きじゃないの? オレも結構好きだけどな
歴史、兵馬俑、謎の遺跡、大陸ロマン、なんだかんだ言っても良いところはたくさんある
嫌いなのは数々の拷問や残虐な刑罰にかける情熱と発想力、人を美食で食してたり
今は何より偽物の多さ。パクるのはまだ許せるけど偽物多すぎ それ過去の中国文化ね
わざわざ大雑把な定義持ち出して、後出しじゃんけん好きそうだな、あんた そりゃ歴史も長いし広いし大雑把にくくらなきゃ話できないだろ
あと年寄りと話すとわかると思うけど中国マジで好きな人多いよ
むしろ嫌いって人に会ったことないかも、、、公言しないだけかもしれないが あ、食べ物だけは別というか特におばちゃんは中国産と聞いただけで
やめた方がいいんじゃない?、って感じの反応する、まあわかるけどw しかしArduino全然関係なさすぎて酷いなw
ここがどうかは知らないが、けっこうマイナーなスレでも工作員だかシンパだかすぐ湧くけど
それだけ色々浸透してる。技術も向上も中国に献上して、安いよ、と喜んでたら
その安物さえ買えなくなって中国人をインバウンドでおもてなし、酷いよなw
お返しはコロナで色々壊滅、なんてこったい 中国のせい、で済まそうとするのは
無能な政権を擁する国の無能な政権の常とう手段
迎え入れてんのは安倍晋三 >>525
はい、アドルフ・ヒトラー総統に対するヨーゼフ・ゲッベルス首相みたいなのが、安倍晋三ですwww >>538
トランプにハブられた習近平が何とかしてと泣きついてきたので、
阿倍総理が「じゃ国賓招待するから日本においで」と助け船を出した。
昔、天安門事件の後、世界で孤立した中国を助けるために
海部首相が訪中したのと同じ。
その後の東シナ海の石油掘削問題や尖閣諸島の中国軍艦の領海侵入を見てると、
中国政府がどんなに悪逆非道かがよ〜く分る。
絶対に信用してはいけない国だ。 昔、ベトナムがアメリカを追い出して一息ついている時に、
中国軍がベトナムに侵攻した。
エ?ベトナムが米軍と戦っている時はベトナムをサポートしてたじゃないか?
中国は領土拡張のためなら何でもやるんだな、しかも相手が弱っている時を狙って。
とビックリした。
中国は絶対に信用してはいけない国だ。 こんな話はいくらでも有るけどスレチだよね、悪いね、終わりにする。 14億のうち10億人が死んでも、アメリカの人口を1億以下にして
まだ核攻撃の余力を持っていれば勝ちっていう、人命無視の共産主義国家って怖いな
でも戦争になったら共産国って強いんだよね >>541
絶対に信用してはいけない国に助け船を出したマヌケな安倍晋三のせいで国民大迷惑ってことですねわかります Pro Mini互換ボード200円
https://www.gdm.or.jp/crew/2020/0717/355970
もう値上げされてるAliで買うのと値段が変わらなくなってない? >>541
野良犬にお手して噛まれたら「野良犬の野郎けしからん」とは言わない、お手した奴がバカ
自分の手をかまれるのは勝手だけど国民犠牲にした安倍晋三の罪は万死に値する
そういう現実を見据えた議論しないと日本が滅びるぜ >>546
今Aliで2個買えば送料込み194円
もっとも、1個だけとかいうバカな買い方すると230円なので
徒歩でその店に行って水分も取らずに帰ってくれば確かに安いね 先輩方お世話になりますm(__)m
砂時計を2分ごとに180度回転させて、自動で砂時計を
上下回転させる
物を組んだのですが
サーボモーターが正確に180度回転してくれないんです_| ̄|○
170度くらいです。いろいろな数値を確認したのですがNGです
先輩方どの様な原因方法があるか教えてくださいませm(_ _)m
パルスモーターでやろうかも検討してます。 それと先輩方m(__)m
パルスモーターの先に付ける、ギヤなどの頭はどこに売っているのでしょうか?
いろいろとググったのですがダメです。
デカイ十字やデカイ円形の物を装着して、砂時計やオイル時計を
自動で回転させたいんです Ali なら gear で検索したら山ほど歯車が出てくるけど、
それは、俺の環境(過去の検索履歴)の影響? 国内でバリエーションが多いのは協育歯車かな。ずいぶん昔に買ったきりだけど
https://www.kggear.co.jp/ >>549
そもそも180度も回るっけ?
いっぱいいっぱいじゃないの?
ステッピングモータにするか改造して連続回転する。
頭
http://akizukidenshi.com/catalog/g/gP-12488/ >>549
サーボモーターってメカニカル的にリミットがあるんだよねー
SG90の正規版もそう
それでも200度くらいは行けるけどね、おかしいな
そして「DM」ってマークのパチもんSG90にはリミットが無い
記憶ではメカニカル的に360度回ってたと思う
これでどう? 皆さま
ありがとうございます
少しの間にこんなにサポートが
ありがとうございますm(__)m
360回転するサーボで試したのですが、180度正確に回転しないんですよ_| ̄|○
ステッピングモーター ですね。わかりました。 使ってるモーターの型番ぐらい書いたら?
それと波形は?正確に出てんの? >>557
それなら正確なパルス幅が出てるか確認するしかない
様子見ながら微調整
再現性が無いなら高いモーターに変える >>558
サーボはSG90と言う、サーボモーターです。
360回転すると言う、サーボモーターも購入したのですが、ラベルが剥がされているのか、外観は全くSG90と同じです。 原始的だけど、リミットスイッチを付けるっていうのは?
0度と180度につけて、押されたらモーターを止めるっていう感じで >>555
ありがとうございます
欲しいのはこれです!
正式名称はなんて呼ぶのでしょうか?
カップリング? >>563
ステップモーターの先につけてそれに砂時計を取り付けるの?
おもちゃレベルかと思ったけど違うの?
いやまあ詮索する気は無いけどさ
そりゃキッチリ180度だったらステップが一番さー ラジコンサーボはローテーションサーボとか言われる一方向に回転し続けられる奴もある
だいたい型番が違うが(SG90Rとか)まぁ中華品なら同じままでも不思議じゃないな
あとSG90はパルス幅450us〜2550usまで受け付けるから190度くらい回転するはずだぞ
Arduinoのサーボライブラリだとデフォルトで544〜2450までになってるからそこまで回らないかもしれない
最少パルス幅と最大パルス幅をいじってみ 誰もライブラリのパルス幅設定について触れてねーじゃんよ
>>556だってSG90は180度以上回るはずだけどなって言ってるけど対処方法触れてないし… >>549
libraries\ESP32-Arduino-Servo-Library\src\Servo.h
のMIN_PULSE_WIDTHとMAX_PULSE_WIDTHを探して値の範囲を広げてみたら? じゃねえ
libraries\Servo\src\Servo.h そもそもライブラリ使ってるとも一言もいってねーんだが
「僕の書いたコードでサーボがきちんと回転しません。なぜでしょう」
しか質問してねーから 確かにそうだが
いくらなんでも
使ってなかったらアホだで ライブラリ使わないで自分で制御してる人はこんな事で躓かないんじゃね >>570
俺も今見たがそれを最初に聞かない回答者と、言わない質問者どっちもイマイチだなって思った。
つまりどっちも同じレベルの奴らなんだなって。
で、ライブラリはつこてんのか?
普通に考えてつこてんだよな。
となるとうえでかかれたとおり、ライブラリ内の最小、最大パルス定義の問題の可能性が高い。
変えすぎるとサーボぶっ壊れるから、少しずつ様子を見ながら変えるように。 今度はそういうマウントできたか(´・ω・`)
ライブラリ使ってんならそれくらいは知ったうえで質問してるという見方もあるぞ 話引っ張ってるけどそういやもうサーボ関係ないんだな 質問です
ピンの出力がでません
原因はなんでしょうか >>581
故障ですかね?
もう少し詳しい状況と、スケッチを教えてくださいませんか? >>582
配線は間違ってないしスケッチも大丈夫なんです
やっぱアマゾンの安物は壊れてるんですかね
もうちょっと高いのを買ってみます >>583
間違ってない、っていう意識がおかしい。そんなことだと、自分ではなくほかに原因を求めてしまう。
習慣的に、見落としや未熟のせいで何かおかしいことをしているかもしれない、って考える方が問題解決しやすい。
スケッチ、配線がわかる図、実際の配線の写真を質問に添えるといい。 >>583
おまえ頭悪いんだろ? 自分でわかってるからそういうバカな文章書くんだ。 >>584
ほんと、>>583 こう言う奴は、企業組織では、絶対に採用しちゃイケないタイプだな アマの安いのでも壊れてた事は今までなかった
半田付けがひん曲がってたことはあるが >>583
サンプルのblink.inoすら動かない、となったら初期不良でしょうね。私も、よく安物買いますが、初期不良はなかなか無いですよ。
ピン入力は動きますか? ボード上のパワーオンled(あれば)は、光りますか? 583の行動自体は間違ってないと思う
>配線は間違ってないしスケッチも大丈夫なんです
これは配線やスケッチを疑って何度も確認したという意味だと思う
>やっぱアマゾンの安物は壊れてるんですかね
上の事からボード不良を疑ったと思われる
経験上マイコンの不良の可能性は低いが、ボードのピンヘッダの不良や配線不良(ブレッドボードの場合)は多く考えられる
結線場所が有ってるとして、配線自体の不良やブレッドボード不良には気づきにくい
マイコンボードを追加購入すること自体は不具合の検証方法としては悪くない 最初に買う1個目くらいは正規品を買うべきだと思うんだよね
正規品だとまず初期不良は無いだろうから
後からパチモノ買って動かなかった時に原因の究明に役立つからね >>590
なんかね、そもそも転送に成功していなくてエラーメッセージも見ていない 気がする。 中華互換機で不良品に当たったことは無い。
初心者の場合人為的なミスの方が圧倒的に可能性が高いので
安い分複数台購入できるメリットの方が大きい。 >>592
これ
アマで合計10数枚のArduino互換機買ったけど、ハードウェア不良は無いな
ファームが書いて無いボードが3枚あり、自分で書き込んだが 相談している本人が詳しい状況を開示したくないなら、手の出しようがない。
確実に間違ってなくて、それでも動かないなら、故障しかないでしょう。
たいていどこかで間違ってるわけですが。 >>593
法規知らずに赤信号で走って、交通事故起こして、俺の責任じゃ無いと言ってるようなもんだな もっとも、最初の1枚は、互換品じゃなく純正を選ぶ方がいいと思う。
動かないときに、より強く自分のせいにできるわけだし。
もしかして
>ファームが書いて無いボードが3枚あり、
↑これに当たったんだろか、って思うだけで、自分のせいじゃなく、ボードのせいかもって疑うわけだし。 >>ID:xcBzROrR
>>591
正規品を扱うショップのステマかな?
中華互換機のせいで商売あがったり
>>596
この場合、相手もいない自爆だし公共物への被害も無いので、勝手に事故っててって感じね >>597
ファーム書いて無きゃスケッチ書き込めないんですって言うだろ
1台目正規品説に何の根拠も無し
初心者のうちは同じものを複数買うが鉄則 こんなところで嫌儲ふりまわす人ってめんどうくさい。 >初心者のうちは同じものを複数買うが鉄則
これも一つの道。 こんなところで擁護ふりまわす人ってめんどうくさい。 >>598
>正規品を扱うショップのステマかな?
>中華互換機のせいで商売あがったり
なんだこの人妄想癖でもあるのか >>604
あまりムキになるとホントだったんだと思われるぜ
他にムキになる理由でもあるなら別だが 1台目は純正品買えって人が必ず登場するけどそういうことだったのか
数十台全部中華互換機な俺の経験で言えば不良品は1台も無いけどな 問題解決の力がある人は、それで良いんだ。
次のような人には純正の方が良いと思う。
・自分を疑う代わりに、これが互換基板だからダメなのかな? と考える人。
・構成部品(特にレギュレータ)の定格が純正品と違う場合に問題解決ができない人。
・ドライバーで引っ掛かったら困る人。
・掲示板で質問するときに、自分の使っているデバイスを説明できない人。
逆に
・互換基板だからって滅多に不良はない。おかしいのは何かが間違ってるからだ。
・構成部品の違いが問題になりそうなところにはタッチしない。あるいは必要に応じて交換できる。
・ドライバーの問題ぐらいググれば解決できる。
・Arduinoに関して掲示板で質問する立場ではない。
なんて人なら、Aliで一山なんぼで買えるもので良いわけだし。
自分ができる、大丈夫、問題ない、自分が初心者のときにもクリアできたってことと、
それができない、大丈夫ではない、問題がある、クリアできない人との話は切り分けないとね。 >>605
その手の人には、これがムキになってる様に写るんだね。 581です
無事解決しました!!
ありがとうございました どう見ても結論ありきのステマ>>ID:xcBzROrR
互換機でも初期不良なんて無いって意見が多数なのに言い張るステマ>>ID:fSbbh/sb >>613
ボクはなんでもお見通しだいっ! てか?
見てるこっちまで恥ずかしいから止めてくれ まあ確かに国内で正規品を扱ってるショップは苦々しく思ってるだろうねえw
気の毒だけど仕方ないねえ 対立を煽っても意味がない。Arduino自体が互換品を妨げないものだし、オリジナル品と互換品の両方を扱ってる業者あるよね。
業務でも単品製造の特注品だと、Arduinoを組み込んだものもある。そういうところではオリジナル品が好んで使われる。
互換品であってもそれが普及の力になるなら、結果的にオリジナル品の採用も増えるさ。
都合が悪ければ、オリジナル品が互換品を締め出す手立てはあるだろう。それをしないのは、しないことにメリットがあるからと考える方がいい。 互換/準拠とかコピー/クローンとか間際らしいよなw >>616
相反する事実を語っただけで対立構造だと思い込むステレオタイプ乙
あと、締め出せるものなら締め出してるが締め出せないだけ
今更どうやって締め出せるのか具体的に書いてみ >>ID:fSbbh/sb
互換品で不良率が高いという事実をデータで示さないとね
ここまではそうでないと言ってる人の方が多い 中華のesp32-devkitcは自動書き込み失敗するのでコンデンサつけるというのは定番だと思うんだが
手を加えないとまともに使えないものはちょいちょいある >>619
>>594の人がファーム書いてないのが10個中3個って言ってるじゃん
これをあんたは不良とは言わないのか
最初に買ったのがこれだったら初心者には手に負えないんじゃないか? >>621
自分の情弱を棚に上げて何でも初心者面で乗り切ろうって人は何を買っても不良品だろうね。 >>621
>>619のレスから
>ハードウェア不良は無いな
は無視して、
>ファームが書いて無いボードが3枚あり
だけ取り出して、
>自分で書き込んだが
は無視なのね。
情報操作、歪曲、ご苦労様です。 >>621
それは不良品とは言わず、君のスキルが不良という。
初心者であることは学ばない、調べないの免罪符ではない。 自分ができたんだからといって他人に同じことを求める人って、
同じことをもっとできる人に言われたら、才能のせいにすることが多いと思う。なんでだろう。 1個目は正規品でいいんじゃないの?
全部オープンなのに互換品締め出しとか
なんの話してんの?
理由は開発者の良心でしょう >>626
>自分ができたんだからといって
学ぶ、調べるができないなら無理、Arduinoなんかやめてどうぞ 中華のステマの気がしてきたぞ
>>621 で仮定の話をしたら俺自身の様に捉えてる
→日本語が不自由
ファームが書かれていないのを良品と主張
→日本では不良品、中華では良品
正規品を完全否定
→コピー大国の中華 自分の手に負えないと不良品
で、都合が悪くなると中華呼ばわり
民度低いなあ>>ID:EPwsmJiJ >>631
俺自身の事など書いてないのに
やっぱり日本語が不自由なんですね 1台目は正規品買え不良品が少ないから
互換機で不良品に当たったことねえし
ファームが書いてないのが3台て言ってる人いたろう不良品だ
それ不良品呼ばわりはスキル低すぎ
中華だ!中華だ!
可哀想な人 匿名掲示板でステマが多いなんて当たり前だろうに
何をいまさら
特にArduinoやるような人は引っかかりやすそうだしな まあ、中華製はファームがかかれてないのを良品といってしまえるような品質ってことだ
初心者が手を出すものではないし、手を出しても失敗することも考えて行動しようね あと、Aliexpressは注文してから届くのに1、2ヶ月かかるからな
まともに動かないのが含まれてることを考慮して同じものを3個くらいは注文すべき
極端に安いけど、国内の業者とは使い勝手が違う ファームなしなんか本当にあるの?
お店の評価見てる? アリでarduinoのch340ドライバ使わなくていいコピー品見掛けなくなったし
クローンも以前の二倍程度に値上げしたな
俺のpc、ch340使うクローンmegaにusb接続しながらシャットダウンさせようとすると
フリーズで完全に固まって電源ボタン長押しもやむなしなんだよね ブートローダーの事をファームと言えるなら最初から入ってないとまずいな Arduino互換機として売られてるならブートローダーが入ってないのは不良品だと思う
atmega328pのマイコンボードとて売られてるなら不良品じゃないと思うが・・・
なかには純正品の存在を知らない初心者もいるかもね
初心者に優しくできないならこのスレを開かないのが良いと思う
意味不明な質問をエスパーしたり、初心者に理解できる回答を考えるのが好きな人が回答すればいいんだよ(俺) クローンの話題が盛り上がってるついでに聞きたいんだけど、Nanoっていつの頃からかIDE内で旧式が(old)と区分けされたけど旧式と新型って機能的になんか違い有るの?
Nanoクローンってもれなく(old)だけど新式クローンって有るのかしら? >>644
気になって少し調べてみたら新・旧でブートローダーのサイズが違うっぽい
UNO R3なんかはNANOより後にでた製品らしく、ブートローダが新しくなってるみたい
NANO(旧)が2048バイトでUNOが512バイトっぽい
NANO(新)が無いので推測だけど512バイトに変わってるのかも 新型のブートローダー書き込んでみたけど、ブートローダーの容量は2kBから変化しなかった
シリアルの速度が違うぐらい?( ↑新 ↓旧 )
Overriding Baud Rate : 115200
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
Overriding Baud Rate : 57600
Hardware Version: 2
Firmware Version: 1.16
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
NANO(旧)最大30720バイトのフラッシュメモリのうち、スケッチが924バイト(3%)を使っています。
NANO(新)最大30720バイトのフラッシュメモリのうち、スケッチが924バイト(3%)を使っています。
UNO 最大32256バイトのフラッシュメモリのうち、スケッチが924バイト(2%)を使っています。 >>645
>>594 だけど、アマで買ったELEGOOのNANO3枚にブートローダが書き込まれて無かったから、USBaspのサイトを参考に、関連パーツを買って、書き込んだ
https://ht-deko.com/arduino/usbasp.html
でも、Arduino自体やICSP端子のことも分かって、とても楽しかったよ
Arduinoは、UNOはもちろんMEGAやPro Miniでも遊んでるし、関連サイトやブログが多数(世界規模だと無数!)あって玉石混交だけど、それはそれで面白いね
https://i.imgur.com/SeDthjU.jpg 更に色々調べてみたら、NANOに新型のブートローダーを書き込んだら容量変化してたっぽい
コンパイル(検証)の時はブートローダーに関係のない容量が基準になってるっぽい
NANO(新)とUNOのブートローダーは同一の物だったので、512バイトで間違いないと思う
新型のローダーで1.5kBも容量が増えてとてもお得な気分(まあAVRの書き込み装置あるんだけど・・・)
旧 /bootloaders/atmega/ATmegaBOOT_168_atmega328.hex
新 /bootloaders/optiboot/optiboot_atmega328.hex
UNO /bootloaders/optiboot/optiboot_atmega328.hex >>639
まさにそれ
通販サイトでまともなセラーすら選べないんだろう
それって何について「初心者」なのかって話だけど、Arduino初心者として扱って欲しいらしい
必要な知識の検索すらできないのもArduino初心者だからってことらしい
全部>>642に任せる 328Pの載った互換機でわざわざブートローダ無しを作る方が面倒だろうね
載ってるチップが328PのクローンとかそもそもAVRじゃないとかなら可能性あるけど 互換機はざっと20台以上買ったけどブートローダが書いてないのはひとつも無いな。
自分で飛ばして中華だからーとか言い訳してるだけじゃね?
お高い正規品を買ったらそんな言い訳もできないよねw >>648
詳しい調査ありがとうございます。
やっぱり違いはあるのですね!
そのうち新式の方にクローンも置き換わっていくのかしら・・・ >>649
よくわからないけど、任された!
技術力や知識力は無いけど、奉仕力で頑張る 中華工作員がまだ暴れてるのか
いい加減スレチ
Aliや互換機の専用スレがあるだろ Aliexpressの工作員はArduino初心者をバカにして悦に浸ってるようだけど
Arduino初心者って中学生や高校生も多いんだぞ
あやしいAliexpressなんて勧めるなよ
Arduino互換機なら国内でだってそれほど値は張らないわけだが
いい年して、はした金を節約しないといけない貧乏人だってことか? 今、Aliで注文したら届くのは9月か10月だぞ
年寄りにしてみれば1ヶ月、2ヶ月はすぐなんだろうがな みんながAliで買うようになったら日本国内にある電子工作のパーツ屋がどんどん潰れてくぞ
それで困るのは、結局、電子工作やってるやつら >>658
中学生くらいの子供に買い与えるなら
センサーとかいっぱいついてる3000円くらいのセットかなぁ
そして大いに破壊して雑な扱いしたら壊れるという事を学んでもらいたい
問題が発生したら一緒に考える Aliで安いのは偽者中華製品だけ
正規品は安くない >>663
機嫌悪いみたいだけどお茶でも飲んで落ち着いて
( ^ω^ )_旦~~ 初めてのArduinoで純正品を買わないで動かない!詐欺だ!って叫ぶやつは初心者というよいか只のケチという気がしてならない
純正品にブートローダーが入ってなかったらそりゃもう何文句言ってもok 初心者とか慣れてないやつなら純正買った方が無難だろうとは思う。
互換品は慣れてからでも良いんじゃね? 最初は正規品をって人は感情論に終始
挙げてる理由も全部否定されてる ブートローダーは自分で書き込むものだと思ってた
そんな俺の初めては秋月の奴 >>668
俺も俺も
最初に間違ってLeo買ってなんか違うと気がついて何故かAE-ATMEGA買った
付属のFT232を取り付けしないでライタにしてLoder書き込んだ記憶がある もう、ボードなんて買わないで秋月やAitendoでATmega328P買えばいいじゃん
自分でブートローダー書き込めない人は
ブートローダー書き込み済みの秋月やAitendoでATmega328P買えばいいんじゃね? Aliで安いのは中華チップのオンパレードだからな
それでも不具合はすごく少ないが もう、Seeeduino XIAOでいいんじゃね?
500円ちょっとでだいぶ安い、
いろいろ多機能でへんな互換機より便利 >>673
そう、これ凄いよな
ただADCが付いて無いのがイマイチ >挙げてる理由も全部否定されてる
反対意見と否定は違うよね。
そういう観点もある、と言う話は出ているけれど、選択の余地のなく全部否定されるようなことってあったかな?
反対意見が出たことが肯定論の完全な否定であると考えることも、また感情的な行為だよ。
特に初心者は純正品を買う方が良いという考え方と、互換機で良いという考え方は矛盾なく併存できることなんだし排他的になる必要はないのにな。 >>666
同意
スキルが上がればブートローダー書き込みくらい分けないだろうけど、最初は何がなんだかわからない
いきなり中華は動かないときのハードルが高い
それでやめてしまうのはもったいないと思う
自分自身arduinoのおかけで電子工作のスキルが多少は上がったからなあ
ハードルの低さは半端な熱意の自分にはありがたい でも初心者が電子工作やるにあたってAmazonとかでスターターキット買って始めたりするからなあ
俺はネットで検索するクセが付いてるから全く困ることはなかったけど えれぐーのレッスンCD途中までやったけどね。
まあ最後までやれば何でも作れるようになるだろね。
そこまで暇じゃないけど。 >>680
ELEGOOいいね
マイコン入門から、かなりのレベルまでIoTの学習ができる Elegooフィラメントは安くて普通に使えて良かった
再販してほしい ELEGOOはUSBシリアル変換の石にちゃんとATmega16U2使っていて
安いから好感もてる こちらのURLのパワーパックを作ろうと思っているのですが
https://pwm.sigris-rabo.work/?page_id=199
線路出力の制御にリレーモジュールの省略されているので誰かそれの回路図を教えていただけないでしょうか?
なお使うリレーモジュールは汎用品になります >>685
母線引き通し(線路出力制御用)リレーと方向指示リレーの事だと思うんだけど、それだったら
ArduinoNanoボードのD12=母線引き通し(線路出力制御用)、D13=方向制御
この2ピンからリレーモジュールの制御ピンに接続で良いかと >>685
あと、URLの図面なんだけど、実際のNANOボードは3ピン有るんだけど
図面のソケットは28ピンしかないね・・・
上側の存在してないソケット分の2カ所がD12,D13です 学術巨大掲示板群: アルファ・ラボ ttp://x0000.net
物理学 化学 数学 生物学 天文学 地理地学
電子 IT 工学 国語 方言 言語学 など >>685
部品リストにリレー3個ってあるのにソースコードだとリレー2個しか使ってないから変だなて色々見てたら
https://pwm.sigris-rabo.work/?page_id=138
こっちのURLのソースコードだとリレー自体を使わなくなってるので、途中でリレー使うのやめたっぽい >>689
ありがとうございます
もしよければ回路図や、可能であれば実体配線図の提示は可能でしょうか? >>690
リレーが無くてもインバーター音を再現するパワコンとしては機能するので、まずリレー無で作ってみてはどうでしょう?
そこまで作業すれば↑の書き込みの意味を理解できて回路図・実配線図なしでリレージュールを何処に繋げばよいのか理解できると思う
それでもわからない場合は再び質問してみては?
追記事項(ちょっと気になった点をいくつか)
URLの回路図(nano互換基板のピンに対応)と書いてあるが実配線図は(秋月電子のPro Mini用)
実際のPro miniとは端子の位置が異なってる(K-10347で検索して説明書参照)
URLの回路では12Vから9Vを作ってるが12VをVinに入力するか5Vを5Vinに入力すれば動くと思う(省略可だと思う)
FETとマイコンの間にはダイオードしかないが、本来保護抵抗を入れるべき(容量性負荷の為) そういやさ、マイコンの出力だけで操作できるリレーってないの?
あったらすごい便利やん? >>694
そらモジュールならもちろんオッケーになるのはわかるんだけど、LEDくらいの電力で動くように電磁石スイッチってのは今の技術でも安くは出来ないもんなのかね…?と思って。
>>693
SSRも交流しばりあるからね… これもトランジスタぽいのが見えるが…
ただこれでだめな理由は全くないな。 通常のリレーだと小型の高感度タイプでも0.2Wくらい必要なので5Vなら30mA〜50mAくらい
リードリレーなら0.05Wくらいでも動作するものがあるから5V10mAくらいのもある >>696
これどうしたらONになるの?
接続が分からない >>699
COMは共通
NCはIN=LowでClose(COMとつながる)
NOはIN=LowでOpen(COMから切れる)
Highでは上の逆 >>692
オムロンのG3VM-61CR1とか
東芝のTLP3543Aとか
3.3VのマイコンのGPIOでも10mA程取れれば10Aのスイッチングできるよ
もちろんDCのね(30Vか60Vまでだけど) DCでいいならPowerMOSFETと抵抗2本で55Aとかスイッチングできるじゃん
3.3VならVGS4Vまで引き上げる為にTr1個追加もしくは
VGS1V-3Vの低ゲートMOSFET使えばいいしさ
PWM駆動できるからモーター回転やヒーターの温度制御もなめらか >>701
確かに、電磁パーツのスイッチングは小信号回路とアイソレートしときたいから、フォトリレーが良さそうね 最近Arduino UNO Wifi Rev.2やArduino NANO EVERYなど328ではなくATMega4809を搭載したものを入手したのですが、CPUが変わったという事でタイマーライブラリのMStimer2が非対応な状況となっています。
これらATMega4809を搭載したArduinoでも使えるMSTimer2相当のLibraryはありませんか?
検索をかけて色々見て回っているのですがどうにも”328とはTimerの仕様が違うよ”的な記載ばかりでその運用について触れている記事を見つけることができませんでした。
よろしくお願いいたします。 >>708
酔っぱらってるし、実機無いから未検証だけど、代用のコード書いてみた(短いからコード用のアップローダ使わず直書き)
まあ、多分動かないけど、こんな感じの手段が有る程度に思ってくれ(PIC以外のコードをまともに書いたことない( ^ω^)・・・)
TCB0,1,3でも良いのかな?(思考停止なので2を使ってみた)
void setup() {
TCB2.CCMP = 0x4E1F; //クロック20MHzの場合に1ms毎にタイマー割り込みを発生
TCB2.INTCTRL = 0x01; //割り込み設定ON
TCB2.CTRLA = 0x01; //タイマー起動
}
void loop() {
}
ISR(TCB2_INT_vect) {
const uint16_t RunMilliSecond = 100; //100msに1回実行の場合
static uint16_t CurrentCount = 0, PreviousCount = 0;
if (CurrentCount - PreviousCount <= RunMilliSecond) {
PreviousCount += RunMilliSecond ;
//実行するコード
}
CurrentCount++;
} >>709の
ISRの最後にTCB2.INTFLAGS = 0;必要だと思う
もしくはTCB0.INTFLAGS = TCB_CAPT_bm; かも >>708
ここは見た?
https://forum.arduino.cc/index.php?topic=633627.0
こっちにライブラリもあるけど?
ttps://github.com/Kees-van-der-Oord/Arduino-Nano-Every-Timer-Controller-B 自分の場合、Arduinoの電子工作は10種類(UNO, MEGA, PRO MINI, NANOの互換機)くらいしか経験無いけど、比較的新しいとは言え、市場に出て2年くらい経ってるチップの関数ライブラリが、本家のIDEに入って無い例って、けっこう多いの? 外部の割り込み入力からarduino unoを復帰させる時、どのような方法が一番待機電力を少なくできるでしょうか?arduinoだとスリープ中でも結構待機電力ありますので、ESP8266にディープスリープ+トリガー待ちさせておいて、ESP8266が目覚めた時にトランジスタでarduino unoに電力供給する? >>713
ESP8266を使う理由があるなら別ですけど、
UNOで6.5uAと書いてあるよ。
http://radiopench.blog96.エフシーツー.com/blog-entry-830.html しょせんArduinoなんて他人の褌で相撲とってる二次創作みたいなもんだ
日本的メーカー対応みたいなもんは期待しちゃあいけない >>714
ありがとうございます。これってGPIOからの割り込みでの起動に対応してるのでしょうか?ESPならライトスリープとかで、割り込みで復帰させられるようなのですが。 >>716
基本のSleep ModeはPower-DownのようなのでINT0やINT1で割り込めるんでは?
試してみて教えてください。 >>709
いただいたソースコードをもとに試しでLチカを想定したコードを作成したところ
どうにもタイマーを起動するとタイマーの内容のもの以外がすべて機能しなくなるようで…
Arduino標準のBLINK(D13)とタイマーチカ(D7 プログラム内LEDAに相当)の
同居想定として作成してみました。
https://pastebin.com/i3QBKtec
これを起動するとloop内のものが一瞬だけ動いたかと思うと最初のタイマーが反応して以降
帰ってくることはなく結果的にBLINKは最初の点灯だけは起こり、その後機能せずタイマー内の点滅(LEDA)だけが点滅しました。
また、RunMilliSecondが100msではちょっと早すぎると思い2000にしてみても
減速はされず2000msとは程遠い速度で点滅しました。
>>711
こちら、サンプルコード自体は機能いたしました。
ものすごい多機能そうで理解できるまでちょっと時間かかりそうですが(汗
とりあえずサンプルコードの機能そぎ落としをしながら理解を進めたいと思います。
この4809を使ったArduino 価格は安いのですがUNOやNANOとはやはり大きく違うという事を思い知らされています・・・ 正規品買う気のない俺はAliで互換機見つけたと思ったら4808だった
とりあえず無印Nanoで足りてるしもうしばらく待つわ >>720
今見たら色々間違ってましたね
ifの<=逆でした
× TCB0.INTFLAGS = TCB_CAPT_bm;
○ TCB2.INTFLAGS = TCB_CAPT_bm;(TCB2.INTFLAGS = 0;と被る)
まあ、他の方の情報のライブラリでいいと思います あるセンサーから測定値を取り出したいと考えています。
図面を見るとセンサーからのコネクタはRS485となっていたので
AMAZONで『KKHMF MAX485 RS-485 TTL−RS-485モジュールコンバータ』を購入しました。
ハッキリ言ってARDUINOではセットに付属されていたモノで遊んだ程度の知識しかありませんのですが、
見よう見まねで以下を作ってみたのですが何も検出されません。
ご指導いただけないでしょうか
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
#define PIN_RTS 13
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
digitalWrite(PIN_RTS, LOW);
int test = 0;
}
void loop() {
mySerial.listen();
test = mySerial.read();
Serial.println(test, DEC);
delay(100);
} >あるセンサー
の仕様がわからないと何とも言えない。 RS485はコマンド送ってアンサー待ちしないといけない
複数つながる可能性があるから局番指定したり
チェックサム生成したり面倒臭い
2線式と4線式があって2線式だと自分の送ったコマンドをそのまま受信するからそれを除外しないといけないし
それをSoftSerialでやろうとすると更に難易度が上がるよ PIN_RTS は、RE DE の両方に繋いでるのかな。
それならDEのときにREをディセーブルすることになるし、自分の送ったコマンドは受けなくてすむかな。
485でも垂れ流しでデータ送ってくるように設定できるものもあるけど、センサーマニュアルを見ないとなんとも。
ところで>>723のモジュールだけど、DEがプルアップされていたり RS-485が2線とかデリカシーを欠くような設計。 返信が遅れてしまい申し訳ありません。
>>724さん
そのとおりですね。センサーは
https://www.optex-fa.jp/products/dsp_sensor/cd22/
これのRS485版になります。
センサー自身に表示されている数値を手元で確認できるようにしたいと考えています。
>>725さん
2線式のコネクタが仕様されています。
今、手元にはセンサー単体のみで接続コネクタもない状態です。センサー片手に秋葉原を聞いて廻ったのですが手に入れる事ができず、コネクタに直接ワイヤーを繋いでいる状態です。
>>726さん
RE DEともに13ピンに繋いでいます。
モジュールについては色々と教えていただきたいです。 >>727
FA用のセンサーって事は工場で仕事に使うものを初心者スレで質問してるのかな?
工場でarduinoやラズパイって見たことないけど
工場で使うんだったら盤屋に依頼するのがいいんじゃないか?
CC-Link用のがあるんだから三菱のPLCですぐできるでしょ >>727
まずそのサイトでマニュアルダウンロードしたら?
そもそも電源入れただけじゃ通信してないんじゃないの >>723
そのセンサーの仕様書読んでみたけど
センサーの設定が有ってる(9600bpsに設定)として、まずRS485モジュールを扱うコードが必要だと思う(送受信設定等)
さらに、データを読み出すにはArduino側から読み出し命令を出し、それの返信としてデータを受信する必要がある
CD22 シリーズの通信仕様は以下になります。
通信方式 EIA RS-485 準拠(半二重:局番設定によるマルチドロップ接続には非対応)
伝送コード バイナリ データ長 8bit ストップ長 1bit パリティチェック なし
ボーレート 9.6k/19.2k/38.4k/57.6k/115.2k/230.4k/312k/460k/500k/625k/833k/920k/1.25M (bps)
ヘッダ / データ区切り STX / ETX
■ コマンドフォーマット
送信コマンド : STX (コマンド) (データ 1) (データ 2) ETX BCC
受信コマンド(成功) : STX ACK (返信データ 1)(返信データ2) ETX BCC
受信コマンド(失敗) : STX NAK (エラーコード) 00H ETX BCC
※ STX(02H)、ETX(03H)、ACK(06H)、NAK(15H)、BCC は網掛け部の XOR 演算結果
コマンドの種類 : C(43H) 個別機能コマンド
W(57H) 設定の書き込み(Write)
R(52H) 設定の読み出し(Read)
判定結果読み出し 送信 B0h 02h 返信 00h (判定結果)
bit:0 = 1 の時 判定出力 ON bit:4 = 0 の時はそのデータが既読であることをします >>730
あんた親切だなあ
それともすでにメンバー登録してあった?
興味本位で言ったけど面倒だからやめたわ >>730さん
本当にありがとうございます。
>>727さんから「RS485はコマンド送ってアンサー待ちしないといけない」とありましたので、読み飛ばしていた仕様書の当該箇所をアナログ人間がわからないなりに解読しようとしています。これから色々試してみるつもりです。
>>731さん
もっともだと思います。
私は購入時にメンバー登録していましたが、メンバー登録が必要にもかかわらず安易にセンサーのサイトを貼ったことを反省しています。
不快な思いをさせてしまい申し訳ありませんでした。 >>733
730です
想像ですが、予想した手順を記載します(RS485の通信したことない)( ^ω^)・・・
1.MAX485の出力ピンを出力ONに設定(DEをLOW>HI)
2.Serial.write(0x02);,Serial.write(0x57);,Serial.write(0xB0);,Serial.write(0x02);
Serial.write(0x03);,Serial.write(0xE6);(でたらめです)
3.Serial.flush()
4.MAX485の入力ピンを入力ON(REをHI>LOW)に設定(もしかしたら入力常にONでもOKかも)
5.MAX485の出力ピンを出力OFFに設定(DEをLOW)
6.データを受信
>>731
なんかネットで拾った 6万もするセンサーポン使うのにデータシートすら読んでないとか
何かすげえな
おいらとは別世界の人だわ https://i.imgur.com/tYPEYut.png
ついでにポチった( ^ω^)
ちょっと差動通信してみたかった あ、ちゃうか
ロジアナでもつないどきゃ出力はチェックできるな
面白そうではある でもじっちゃんがセンサーはIICかSPIだけにしとけって言ってたからやめとこう >>737
2個買えばArduino同士1200mまで引き伸ばせたんじゃないの >>742
Aliあるあるネタだけど
これ2ポッチしたら、10個届くのよ(;´・ω・) RS-485のインターフェース基板で2端子しか付いてないものって、安心して接続できるのは共通グランドが期待できる範囲だけだよな。 そういえば、昔どこかのスレでRS485をA、Bの2線にするか、
A、B、GNDの3線にするかの大論争があったな >>747
どちらともいえない、運用方法や状況、考え方によって変わると思う
RS-485は2線(or4線)で通信することを前提として考えられた規格だと思うのだけど
2線通信で不具合が発生する場合の対処の1つがGNDを接続する方法だと思う
(また外部ノイズを減少される目的でのシールドとGNDを接続する事と別に考えたほうが良いと思う)
機器A−機器Bで通信するとして、電源が絶縁されてれば問題は起こりにくいと思う
また、電源が共有の場合でも、通信側を絶縁すれば問題は起こりにくいと思う
多分業務用の高い機器は電源も通信も絶縁されてる可能性が高い気がする(←そんなの持ってないよ・・)
GND接続の有無で通信に問題が有る状況だとしたら、GNDを接続する以外の手段で問題を解決した方が良いと思う >>745
RS485はA-B間の電位差で信号を送るのでGNDとは直接関係無いんじゃないか?
GNDはコモンモードノイズ対策のシールド線用でGND間の電位差が問題になる様な場合は片側のシールドを浮かすだろうし RS-485インターフェースICのメーカーの資料を提示して議論するべき。 部屋の換気具合を知りたいのでCO2センサーモジュールを買おうと思てるんだけどArduinoで使いやすいおすすめある? >>752
最低、アナログ出力かシリアル出力が付いてればいいんでないの?
ノイズのこと考えると、シリアルが1番かな?
センシング面での性能は分からんわ ARMとかRISC-Vだとavr/pgmspace.hにあるpgm_read_byteとか使わなくても
直接、プログラム領域にある変数とか配列読めるんだね
Arduinoの作法としてはavr/pgmspace.hにある関数群使うのがいいのだろうけど それはArduinoの作法じゃなくて搭載してるマイコンAVRの仕様なんで・・・マイコンのデータシートや命令セットを読んでもろて
ちなみにAVRでも最新のmega0とかtiny1とかAVRDAシリーズだとLPM命令を使わなくてもLD命令でアクセスできるぞ 不注意で328Pじゃなくて168Pがのったnano互換ユニットを買っちゃったが、(4枚) 168Pの方が良いことって1つでもある? マイコン的には容量が少ない以外の差がない ので値段が安いのであればそこだけ >>759
ありがとうございます。
やっぱりそうですよね。
失敗しちゃったなぁ。 >>761
いや、すでに目の前にあって、実際メモリ不足で書き込めないスケッチがあった。軽い目的に回そう。 >>765
中華マイコンなら無いほうがおかしいでしょ? やすりで削ってレーザー刻印だから消しゴムじゃ消えないぞ
全額返金で168Pが無料で手に入るチャンスだけどそういうのは無いなw
チップ単体だとTiny12の刻印削ってTiny85として売ってるのはよく見かける
動かないとかチップIDが違うといえば返金してもらえる ひでえな中華
50円の詐欺のために50円のコストかけてないか? >>768
販売先に日本が多いと、評価が上がるとか、日本人は余り文句を言わないで諦める奴も多いとか? Aliexpressで買って届くまでに1ヶ月、2ヶ月待った挙句にそれが偽者だったらショックだよなw https://forum.arduino.cc/index.php?topic=699473.0
AVRDAシリーズのコアが仮完成したみたいだ
https://www.microchip.com/wwwproducts/en/AVR128DA28
VCC=1.8Vでもフルスピード24MHzで動く今年発売したばかりの最新のAVRマイコンだ
tiny1シリーズやmega0シリーズに順ずる高性能な周辺機能を装備のうえ、ADCが12bitだったりDACが10bitだったりパワーアップしてる
命令セットは↑から変わってないので何時も通り使える上に、push命令とsbi命令とcbi命令のマシンサイクルが2から1に短縮され割り込みルーチンなど高速化
ROM128k/RAM16kの大容量でEEPROMもアリ、なんと28pin仕様にはDIP版もあるぞ! まあ、届いただけマシだと思わねば
何ヶ月も届かず、注文したことすら忘れて、
そのまま闇に消えていった注文品がいくつもある こういう奴がいるから日本向けは舐められる
大変迷惑 素人ですが質問させて下さい。
CH340シリーズのUSB変換モジュールで、USBからの5Vを給電しつつ信号レベルを3.3Vにするにはどうすればいいでしょうか?
少なくともCH340のVCCに3.3Vを入力する必要があるのですが、CH340の3V3端子とVCCをショートさせるみたいな話もありましたが、データシートを読んでも具体的にどうすればよいかわかりませんでした。
実際には↓のCH340Eが実装されたこのモジュールを使ってます。3.3Vという記載がありますが3.3Vで使う方法の記載はありません。
https://m.ja.aliexpress.com/item/33041987984.html
5V/3.3V切り替えができるモジュールもありますが、あれはチップのVCCへの入力前に5Vとは別に3.3Vへ降圧している?
そもそもCH340の3V3端子の使い方(用途)が不明です… どのデータシートを読んだか知らんが
英語版
https://cdn.sparkfun.com/datasheets/Dev/Arduino/Other/CH340DS1.PDF
V3端子は電源がVcc5Vで使う場合はデカップリング
Vcc3.3で使う場合はVCCに繋げってことらしい
FTDIのチッブなんかは内部で3.3Vを作ってる >>779
ありがとう。私が見てたのはこちらですが内容的には同じですね。
https://www.mpja.com/download/35227cpdata.pdf
やっぱりUSBの5VをそのままCH340に使ってシグナルを3.3Vにするのは無理ぽいですね…
CH340のV3ピンは、5V給電時は3.3Vが出力されるので、チップ内で3.3V生成してるのだから、それなら5V動作時でも3.3Vで通信するモードがあってもいいのにと思ってしまった。
CH340積んでV5/V3.3切り替え付きのモジュールは、よく見ると別途レギュレターチップ積んでてそこで3.3V作ってるみたいでした。
素直に3.3V対応のUSBシリアルを買ってきます。
せっかくCH340単体で3.3V供給してるのになんか使い道無くてもったいないなぁ USBシリアルなんて頻繁に買うものじゃないし
安さに釣られずおとなしくFTDIの買ったらええ
ワイは秋月で5V/3.3V切り替え可のやつ買った 最悪だ
新しく買ったDUEに載ってるch340gにブートローダーが入ってないみたいだ
しかもこのボードicspピン付いてないし
Nativeポートは使えるけどProgrammingポートが全くデバイス認識されない
今度からicspピンついてる16U2が載ってるボードのみにしとこ >>783
ああ、なるほど!
CH340の3.3Vは自身のコア動かすためにあるのか!
>>782
はい、そうします(笑)
勉強になりました。 >>784
CH340G自体にブートローダーって要る? aliで5vのprominiまとめて買ったんだけど、5v16mhzで書き込むと動作速度が半分になる。
3.3v8mhzで書き込むとオッケー。
間違えたんかなこれ?
ただ3.3v8mhzのやつでも、raw端子に繋げば5vで動かしてもいいんだよね?
確か12vくらいまで対応していると読んだことあるし。 >>787
とりあえず OD しましょう。
耐圧はレギュレーターによるんじゃないのかな?
ヒューズリセットに12v使うので、チップ自体は壊れないだろうけど、
レギュレーターによっては、香ばしいことになるかも?
https://ht-deko.com/arduino/promini.html
ここの写真を見る限り、うちにある 5v版 だと思ってたものも全て 3.3v かも?
ずっと普通に 5v で使ってるわ。 >>786
要らんのか?良く解からんが
ch340gに原因がある事は確かだ ブートローダーを何だと思ってんの?
CH340Gはマイコンじゃねえぞ CH552Gはマイコンです。
USBのほか、UART、ADC、アナログコンパレータ、タイマ、PWM を装備し、
CH340Gのように働くことができます。 >>792
止めたれ
勘違いして恥ずかしいのは、本人が1番分かってるのに、そういう傷口に塩を塗る様なことは >>795
16U2はマイコンとして売られているもの。
ユーザーがプログラムを書き込むかあるいは、メーカーにプログラムを書き込んで出荷するように要求されるもの。
CH340Gは、USB-シリアルのブリッジとして売られているものなので、16U2と同じようには考えられないと思う。
(MCP2200の中身がPIC16F1459でも、MCP2200をマイコンとは言わない。FT232もたぶん中身はマイコン)
CH340Gが動作しないなら、もしかしたら本当に中身がマイコンで、プログラムのミスなのかもしれないけれど
外面的には、部品としての不良とみなして考えるのが自然だと思う。
電子工作をする一般エンドユーザーから見れば、
16U2が動いてなさそう…
16U2用のプログラムを書き込んだら治るかも
ハード的に破壊されているなら、少なくとも 16U2を載せ替えて、その上で16U2用のプログラムを書き込む必要がある。
CH340Gが動いてなさそう…
パターンやほかの部品に問題がないなら、CH340Gを載せ替えれば動くはず。
なんにせよ、>>784を書いた人のの主旨は「CH340Gが不良らしい」ということなので「ブートローダー…」はもういいよね。 数年前に書いたスケッチを、久しぶりに改造しようかと思ったら、
PROGMEM prog_uchar hehehe[] の宣言が通じなくて、
コンパイル通らなくてあせった。
こんな時代なのね。
const char hehehe[] PROGMEM
プリプロセッサにしても意味不明な、、、 PROGMEMの部分は__attribute__ ((progmem))だからね
だから宣言ではこうなってることになる
const char hehehe[] __attribute__ ((progmem))
するとprogmemというコンテキスト名で領域が確保される インラインアセンブラでこうしてやるとバイナリファイルをprogmemとして確保できるらしい
https://pastebin.com/nuPfavZ1
使い方はhogehoge.binがバイナリファイルでHOGE01がそのデータに割り当てたいシンボル名として
C言語で
IMPORT_BIN("hogehoge.bin", HOGE01);
extern const uint8_t HOGE01[];
とやればいいらしい 間違えたコンテキスト名じゃなくてセクション名ね
progmemって要するにセクション名をprogmemにしてるだけっぽいよ 実際にteensy4.0で試してRGB565の画像データファイル>>799でインポートして
LCDに表示できた
画像データはGIMPでCソース形式で保存するとRGB565に変換できるので
それをバイナリデータとして書き出す自作プログラムを作成
Arduino IDEではファイル名は絶対パスで指定しないとエラーが出たよ そういうのできちゃう人って
神様にしか思えないんだが
何がどうなってるんだろう ほんとに好きで勉強(・・・というか勉強しようと思ってやるんじゃなく好きで学ぶというか・・・勝手に調べる)してずっとやってりゃそのうちその神様とやらになれるよ pro microの3.3V/8MH版、USB/HIDなスケッチをテストしてて、ボード設定Leonardoで書き込んだら死亡しちゃった
これってbootloader焼きなおせば復旧するのかな? ちょっとすぐ試せないのでわかる人いたら教えてください 物理的に壊してなければ正しいスケッチとヒューズ設定にすればおk >>805
書き込みをWindows上で行っているならば、pro microをH/Wリセットした直後に
ハードウェアマネージャでBootLoader用のCOMポートがが見えるようならば
IDEでブートローダを書き込めば直るかも
BootLoaderが見えない場合にはICSP経由でBootLoaderを書き込む
それでもダメだとわかんない 一度書き込めて二度目から書き込めなくなったときはこれ試してみて
612 名前:774ワット発電中さん[sage] 投稿日:2019/12/06(金) 20:41:59.26 ID:9sDeXhF9
>>609
リセットの手順ちょっと違った
pro miniの場合だけどこんな感じ
参考にしたページのアドレス貼れないからコピペ
Arduino Pro Mini側のリセットボタンを押しながら、
Arduino IDEのアップロードを実行し、
FTDI-USB変換ボードのTXが光った瞬間に、
Arduino Pro Mini側のリセットボタンを離す。 俺のArduinoなんかブートローダ書き込み後1回目はスケッチ書き込めて
2回目からは書き込めない
そしてまたブートローダを書き込むとやはり次の書き込みは成功して
その次は失敗する
ゴミ 805です。コメントありがとうございます。Fuseビットは変わってなくbootloader書き込み直しだけでで復旧できました。
中華ProMicro2種(5V/16MHz、3.3V/8MHz)があって付け替えて試していたところボード設定を間違えました。
5V/16MHz⇒Leonardo、3.3V/8MHz⇒Liliypad USBと設定しておかないとおかしなことになっていたようです。
あとHIDなスケッチは曲者ですね。スケッチ書き込み後にCOMポート見失ったり、ポート番号が変わったりすることがあります。
環境はwin10ですがCOMポートがスゴイ勢いで増えていってます・・・いらないの消さないと・・・ >>811
> あとHIDなスケッチは曲者ですね。スケッチ書き込み後にCOMポート見失ったり、ポート番号が変わったりすることがあります。
HID と COM が混在するのが難しいのですかね?
vUSB 関連を昔にいじったけど、結局、STM32 に落ち着いた。
STM32 も HIDデバイス にすると COMポート を見失うけど、
スケッチ書き込み時に、リセットを押すだけなので、そんなに困ってない。
micronucleus 搭載の Tiny85 も、それなりに癖はある。 HIDでCOM見失うって良く見るけど、HIDモードが使えるやつはブートローダモードの
時しかスケッチ書き込めるCOMが見えないだけじゃないのかな
AT32U4(Pro Micro互換ボード)はH/Wリセットして8秒間だけスケッチが書き込める
COMポートが見えるようになる動作が普通みたいだけど
ブートローダー書きこんだ直後しかスケッチ書き込めないってやつも、IDEで書き
込むとき、書き込み開始してからタイムアウトするまでにH/Wリセットかければ
書き込めると思うけど OTGと給電が共存出来ないAndroidタブレットを4Gモデム代わりに使ってArduinoに簡単な
信号を送る場合、イヤホンジャック経由で通信するのが簡単ですかね >>813
> HIDでCOM見失うって良く見るけど、HIDモードが使えるやつはブートローダモードの
> 時しかスケッチ書き込めるCOMが見えないだけじゃないのかな
それですよ。ただコンパイル終了時にタイミング良くリセットしないといけなかったり
シリアルモニタ開けなかったりするのが、見た目からすると不安定だったり、
COMポート が見失うという表現になる。 Arduino nano every(ライターATSAMD11D14Aと分離したもの) をPCBAで作りたいと思っています。
https://www.avrfreaks.net/forum/how-burn-firmware-nano-every-bare-pcba-board
よさげな情報がありました。
Nano every:
ATSAMD11D14A bootloader : help to reprogramme D11 firmware;
ATSAMD11D14A firmware : simulate USB device,write arduino sketch to ATMEGA4809.
4809 bootloader : needn't
4809 firmware : any sketch you burn to it through Arduino IDE
という事が書いてありましたが、これって、ATSAMD11D14Aを考えれば、
実装された生の4809にUPDI書込みが可能だという事ですよね。
それで、もしも先人で成功されている人がいらっしゃったら、
真似させてもらおうと思っています。
どなたか、いらっしゃいますか〜? ぷろみにって「スケッチを書き込んでいます」が出た瞬間にリセット押して書き込むのが当たり前だと思ってた。
DTRのない4線のシリアルケーブルしか持ってないから… はんだごてが苦手なので、Seeeduino XIAO の
ピンを30セット分誰かに依頼したいです。。。 やりはじめたら途中で苦手ではなくなると思う。
だから、何かで練習するのがおすすめ。
適性次第で練習してもできない人はいるけどね :-P そしてDQNっぽい奴に暴力で支配され金をせびられる毎日 自分でピンヘッダを何度かやったけど、すっごく汚いんだわ。たまに接触していなかったり。youtube見てると感心するわ。ルーペ付き半田ごて台って初心者にいいかな?宙に浮かせての作業はむしろ難しくなりそうだけど。手先の器用さは普通だお。一応、安い温度設定コテは尼に注文した。
ほんと、誰かにやってほしい。。。 趣味で20年以上安いコテを使っていて、最近温度調整コテ買ったら使いやすくて驚いた
濡らして温度下げて調整しなくていいのでホント楽
はんだ付けで悩んでいる人には救いの神だと思います ホムセンに売ってるような安い温調コテでも十分
適正温度にするだけで全然違うよ
温度はマジ大事 ほうなん?
ハッコーのブースト付きのやつしか使ったことないけどそれとは違うよね。
どんな風に使いやすいん? 最近買ったMEGAの互換機の速度が遅いような気がしたので、
void loop() {
digitalWrite(2, HIGH);
digitalWrite(2, LOW);
}
の速度(周波数)を測ったら、UNO(純正)が112kHz, MEGA2560(互換機)が89kHzで、
やっぱりMEGAの方がUNOより遅いんだけど、これってそういうものなの?
それとも互換機なのがいけないの?
ちなみにTeensy 4.1だと9.8MHz出ました。 あ、loopのオーバーヘッドがあるから
void loop() {
while(1){
digitalWrite(2, HIGH);
digitalWrite(2, LOW);
}
}
とかにしないといけないのか。
それでもやっぱりMegaの方が遅い。 とりあえず今気にしているのはCPUそのものの速度ではなく、
digitalWrite()の速度
です。
で、いろいろググったら知りたかったことが書いてあるブログにたどり着きました。
http://blog.livedoor.jp/prittyparakeet/archives/1061895937.html
やっぱりdigitalWrite()はMEGAの方が遅いということのようです。 >>831
あなたの>>8282,829からそれをエスパーするのは無理だろうね
その速度比べて何の意味があるの?という疑問は別にしても せっかくレスしてくれた人に礼の一言もなく
自分の言い分だけを書きなぐって去っていく
これが美しい国ニッポンのゆとりさんw >>832
どう書けば通じたのでしょうか?
ポートを直に触らずにArduinoの標準のライブラリだけで
I/Oをアクセスするときの性能を知りたかったんだけど
それって意味無いのでしょうか?
Arduinoに関してはは全くの初心者なので、
初心者にわかるように説明していただけるとありがたいです。
(いわゆるコンピュータに関する経験はそれなりにあるので、
一般的な専門用語や概念は説明無しに使っていただいて構いません。) >>833
え?そこまで言われるようなほどのことした? 質問しておいて、本人の意図しない回答だったにしてもなんらかのレスを返すのが一般常識ってことなんでしょ。 >>836
了解しました。以後気をつけます(`・ω・´) >>834
あー、ごめん
君の相手は俺の能力では無理
他の人に聞いて >>838
なんだよ、じゃあ最初から出て来んなよ
(意味:ありがとうございました) >>ID:koz9K3VS
最初質問を読んだときはただ頭が弱いだけかと思ったが
どうやらそれに加えて人間のクズでもあるようだな
相手しなくてよかったな Arduinoのビット数を可変にしたいです。
ArduinoIDEだとF_CPUが定義されてしまうことまでわかったのですが、
F_CPUを定義しないで書き込める方法があったら教えてください。
よろしくお願いいたします。 bit数ってのはマイコンのアーキテクチャで決まってる(Arduinoに乗ってるAVRなら8bit)
そしてF_CPUはクロック周波数であって、今載ってるマイコンのクロック周波数(UNOやNanoなら16MHz)ソフトウェアに教えているだけでbit数とは全く関係ない
マイコンのクロック周波数は普通は決め打ちしておくもの
そもそも基板に搭載されている水晶発振子で物理的にクロックが決まっているので・・・
(UNOやNanoに載っているATmega328Pは分周器を持ってるから半分にしたり1/8にしたりはできるが、それもヒューズビットというプログラムとは違う所の書き換えが必要)
F_CPUは「クロックを設定している」のではなくて『ボードに載ってるマイコンのクロックを教えている』のでハードウェアを何も変更してないのに間違った値にすれば動作がおかしくなるよ >>843
あなたの言う「ビット数」、「可変」ってどういうもの?
壮大な勘違いにならないよう、もうちょっと パソコンみたいにオーバークロックしたいみたいな感じ? >>847
自由にクロックを変えられれば動作スピードとか電力とかいろいろ調整できるんじゃないかと思ったのです。 PCで使われるCPUみたいなことは出来ないかな
動作クロックっていうのは水晶発信器などのクロックジェネレータって部品で
作られた信号の周波数で、これが8MHzだったり16MHzだったりするけど、
基本的に固定値なので周波数を上げ下げできない
発信器の動作クロックは下げられないけど、そのままでは早すぎるって場合には
分周って処理でクロックを間引いたりする
逆に上げたいとき(PCのオーバークロックもこの一種)には、ていばいき(逓倍器)を
使って発信器の周波数を2倍とか3倍とかにして使用する
で、Arduinoは逓倍器を積んでいないので、取り出すデジタル信号の周波数を
下げること出来てもそのままで上げることは出来ないよ serial通信速度もクロック依存、簡単ではないな 省電力なら元々省電力を目的とした機器を選ぶようだと思う 横からだけどatmega328pは4MHzで動かすと1.8ボルトで動くようだが、そうなるとarduinoIDEの範囲外?ボード設定に触れたネット情報がうまく探せなかった
ニッ水二本で動くなんてすごいなあと思ったので試してみたい ATmega328PがいいならMiniCore使えば?
https://github.com/MCUdude/MiniCore
ヒューズビットの設定とかわからん!でもICSPつないでブートローダ書き込みコマンドから内蔵RCで1MHz〜で設定できるでしょ
まぁ1.8Vで使いたいならATmega328Pなんてロートルじゃなくて最新のAVR128DB32とかのほうがいいと思うけどね
まだベータバージョンだけどArduinoCoreもあるし(DxCore)
https://github.com/SpenceKonde/DxCore
AVRDAシリーズは1.8V〜5Vまでの全てのVCC電圧で〜24MHzまで動作保障だよ とりあえず動かすだけなら昇圧させればエネループ1本で5V100mAぐらいまでならいけるんじゃねーの? 思考実験
Arduino自身のI/Oで、チャージポンプ昇圧して
自分の電源をまかなう、なんていうソフトできるんかな? ATmega328Pをを電池2本で動かすとして・・・
内蔵8MHzのクロックを利用するとしてヒューズのCKDIV8は有効にしておく
これでPOR時はクロックプリスケーラが効いてて1MHzだからどんな電圧でも動作する
起動後はタイマーを使ったPWMでDCDCコンバータを駆動(昇圧チョッパーなりチャージポンプ+リニアレギュレータなり)
(バッテリーからの電源にはダイオードを順方向で入れておくこと)昇圧後の電圧は分圧しておいてADCかACで1.1Vの内部基準電圧でモニタ
必要な電圧にまで上昇したらクロックプリスケーラを解除と同時にDCDCコンバータ用のPWMに使ってるタイマーを8分周に変更してメインプログラムへ
で出来るんじゃないかな >>855
こういうのがあったのか、ありがとう
arduino 4mhzで検索してもなかなか出てこなかったので
セラロックつけなくちゃと思っていたけれど内蔵RC発振でも使えるのか
部屋の照明のリモコンを増やしたかったんです。なので少ない電池で動かしたい >>856
待機電力が問題になるかなと思ったけど、待機時はどこも導通してなくてスイッチオンで昇圧回路から起動してブートローダーなしのマイコンも起動すればリモコンとしていけるのかな >>858
すんません、、、
ナバホ語かピダハン語を聞いているような
難しさで理解できませんでした
ガンダムに例えて解説してくれませんかw >>859
内蔵RCは精度が悪くシリアルで文字化けする場合がある
固体毎にOSCCALで調整すると改善するが、
-10℃〜40℃など温度変化の激しい場所では調整し切れない
基本クロック精度が悪いと、タイマーを使うディレイも狂って
周波数カウンタ、IRリモコンなどの用途で問題が発生する場合がある >>862
arduinoを一台arduinoISPとして,atmega328pに直接?書き込んでいるのでシリアル通信できない問題は影響なさそうです
簡易オシロスコープで確認したところ赤外線の38khz も少しずれていたんだけどアイリスオーヤマの LED 照明は認識してくれました
季節による温度変化で駄目になるかもしれないな
低電圧動作を目的に4メガヘルツで動かすならセラロックが必須であれば精度も上がるのかなと思っていました
内蔵 RC 発振でも4メガヘルツで動くようなので挑戦してみます
いろいろありがとう! >>862
そうなんだけど、>>855 のAVR128DB32だと、温度範囲は書いて無いが、ちゃんとキャリブレやってるから、UARTでも大丈夫って書いてあるな
https://github.com/SpenceKonde/DxCore
なんか面白そう >>863
16MHzのクリスタルがついてるとしたら外部水晶用の内部発振回路を全振幅発振器から低電力発信器に切り替えて
かつプリスケーラを4分周に設定すれば何もハードウェア的な改造しなくても水晶の精度で4MHzで動くぞ 追記
内部発振回路を全振幅から低電力に切り替えるのは全振幅発信機がVCC=2.7V〜しか動作が保障されてないため
切り替えはヒューズビットでどうぞ 内部発振回路に種類があったのは知らなかった
どうもありがとう調べてみます >>870
仕様上は7V〜12Vだけど、レギュレータICの発熱考えると、7Vに近い電圧がいい
自分は9Vのアダプタ使ってる 安価な温湿度センサーであるところのDHT11で、気温と湿度を測りたいんですが、何度やってもnanになっちゃって困っています。
以前に使ったときは問題なく使用できたので、プログラムは間違ってないと思います。
VDDは5Vで動かしているのですが、シリアルプロッタで波形を観測したところ、一定の電圧(4V程度)を出力し続けているようです。
DHT11はデジタルのシリアル出力だったはずなので、この時点でおかしいと思うのですが、このような現象に心当たりはないでしょうか
Arduinoを変えたり、DHT11も複数試してみました。
回路が間違えてんじゃないかって思うのですが、データシート通りなのと、以前動いたのが気がかりです。
また、足りないところがあれば、補足するので教えて下さい。 >>872
使用してるライブラリの名前とか配線状況を見れる写真とか動かないコードが有れば回答しやすい
>VDDは5Vで動かしているのですが、シリアルプロッタで波形を観測したところ、一定の電圧(4V程度)を出力し続けているようです。
>DHT11はデジタルのシリアル出力だったはずなので、この時点でおかしいと思うのですが、このような現象に心当たりはないでしょうか
うちのDHT11のSIGNAL(2番)をテスターで測ったら4.95Vだった(VDDは5.05V) ちょっとおかしいですね
これは外部のプルアップを使わずマイコンの内蔵プルアップを使用してでの電圧です
配線の不良も疑ってみては? Arduinoのdigital outを別の機器に繋ぎたいです
その機器は独自の電源を持っています
Arduinoと供に使う何とかCAPのようなArduinoから給電する機器ではありません
その機器のdigital inの回路がその機器の5V電源にプルアップしています
このような接続形態の機器にArduinoのdigital outを繋げますか?
なお流れる電流は0.5mAです
Arduinoのdigital入出力のピン1本とGNDのピンをその機器に繋ぐだけで良いのでしょうか? >>874
問題無い
というか殆どの装置は入力保護でプルダウンかプルアップしてると思う
自作装置もそうするほうが良い >>875
ありがとうございました
でも理解できない事があります
Arduinoで外付けのLEDをLチカさせる時にArduinoのGNDピンと13番ピンの間に抵抗器とLEDを入れます
Arduinoの5V端子、13番ピン、GNDピンの3つを使うような記事を見た事がありません
これは13番ピンとGNDピンの間が解放か短絡か2択のリレーみたいなスイッチになっておらずArduinoの内部でGNDと13番ピンの間が5V電源に繋がっているという事ですよね?
Arduino側でArduinoの5V電源にプルアップ、別の機器側でもその機器の5V電源にプルアップでは不味くないですか? これを読んでも良くわからないので質問させて頂きました
ソースとしてもシンクとしても使えると書いてありますがOUTPUTに指定するピンに対しソース、シンクのどちらにするのかスケッチで指定する方法が書かれていません
outputに使うピンのソース、シンクどちらにするかのスケッチでの指定は無いと思えば良いですか?
http://www.musashinodenpa.com/arduino/ref/index.php?f=2&pos=83
【OUTPUTに設定されたピン】
ATmegaのピンはソース(正の電流源)としても、シンク(負の電流源)としても機能し、 あなたが想像する回路図を描いてミソ
Aruduinoの電源と相手機器の電源が互いのプルアップ抵抗でつながるのってまずいのでは?ってこと? それなら
HIGH出力でソース
LOW出力でシンクです >>877
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);//Source
digitalWrite(pin, LOW);//Sink DUEのDAC0, DAC1にアナログ信号を出力するにあたり、
analogWrite(DAC0, value);
の代わりにポートレジスタを直接叩くようなことは出来ますでしょうか?
出来るとしたらどのようにすればいいか教えていただけるとありがたいです。
デジタル出力だと、例えばdigitalWrite(5, HIGH); の代わりに
PIOC->PIO_SODR |= (1<<25);
にするみたいなやつです。 すでに出力設定とか全部してあって値だけ変えるって話ならDAC0かDAC1のDACC_CDR ごめん違ったDACCのDACC_CDRで良いわ
ビット位置で0と1だわこれ >>882-883
ありがとうございます。
チャンネルの選択方法がまだいまいちわからず、
DAC1に出力することしか出来ていないのですが、
とりあえず25倍ぐらい速くなりました。 >>884の続きです。下記の手順で両チャンネンルに出力できました。
1chあたり0.8Msa/sと、ほぼハードスペック(1Msa/s)通りになりました。
analogWrite()をあらためて測ったところ、0.13Msa/sぐらいは出ているで、
昨日の25倍というのは気のせいで、6〜7倍ぐらいのようでした。
アドバイスありがとうございました。
analogWrite(DAC0, 0);
analogWrite(DAC1, 0);
でとりあえず初期化。
書き込みモードの設定
DACC->DACC_MR |= bit(4)|bit(20); // Word transfer mode(bit4), Tag mode(bit20)
書き込み
DACC->DACC_CDR = x | (y<<16)| bit(28); // CDR[15:12] is CH for CDR[11:0], CDR[31:28] is CH for CDR[27:16] Arduino Nanoで入力ピンの割り込み処理を行わせるプログラムを以下のように書いているのですが、割り込みの初期化時に必ず1回割り込みが発生してしまいます。
pinMode(2, INPUT_PULLUP);
attachInterrupt(0, func, CHANGE);
どうも、割り込み判定の初期値がLOWになっているようで、INPUT_PULLUPのようにHIGHを初期状態にした上で
割り込み判定をCHANGEやRISINGにすると、それをLOW→HIGHと判定してしまうようです。
(FALLINGでは発生しませんし、
pinModeのあとにdelayを入れても変わりませんので安定の問題でもないようです)
割り込み判定の初期値をHIGHにすることはできないでしょうか? プルアップならFallingで割り込みでいいんじゃないの AVRの割り込みは割り込みが無効の間も判定は常に行っていて有効になった瞬間に実行される
(じゃないと割り込み停止中に割り込み条件が満たされたことが検知不可能になるため)
それが嫌なら有効にする直前に自分で割り込みフラグを消せ
EIFR = 0x03;
で消せる(Nano、Unoの外部割込みの場合) >>888
それとこれとは話が別
ChangeにしてるってことはLowにしばらく引いた後Highに戻すときも拾いたいってことでしょ
Lowに引くときだけ割り込みたいわけじゃないのだろう じゃあ普通に割り込み条件整ってるんでしょ
割り込み用のピンになに繋いでるのかな >>889
EFIRは割り込みのマスクレジスタなんですね。
attachInterrupt前にEFIR=0x03することで回避できました。
AVRでの割り込み動作についても理解しました。
ありがとうございました。 >>891
ピンに何も繋がず、INPUT_PULLUPでHIGHに固定した状態で、attachInterupt(CHANGEまたはRISING)した時点で割り込みが発生していました。
INPUT_PULLUPした瞬間にピンはHIGHになっていることは確認しています。 >>891
上でも書いたけど割り込みは無効の間も「割り込みフラグレジスタ」に記録される
無効状態でも割り込み条件を1回でも満たしていれ次に有効にした瞬間に割り込みが実行される >>892
マスクレジスタはEIMSK
EIFRはフラグレジスタ >>889
昨日割り込みについて質問した者です。
その延長で教えて欲しいことがあるのですが、
割り込み判定を"CHANGE"にした場合に、立ち上がりなのか立ち下がりなのかを正確に取得する方法ってあるのでしょうか?
割り込み直後にピンの状態を取得しても、ものすごく短いパスルのような場合は割り込み時とは異なる状態が取得されてしまいました。
あらかじめ過去の状態を変数に保管しておいて、という方法ならその反対に変わったと判断できますか、これも処理が追いつかないと正確ではなくなりそうです。
トリガー情報が呼び出された関数の引数で受けられたりしたらベストなのですがそのようなものは無いですよね? >>897
Low用とHigh用で2ピン使ってはどうかな
だけど そもそもCPUの処理速度が追いついてない様なので
意味がないかもね 1ピンでやるならカウンターをインクリメントしていって
0ビット目を調べるっていうのもあるね
ただどっちにしろ速度が間に合ってないっぽいけど >>897
タイマーを外部クロック入力にして割り込み直後に前回値と比較すれば
Hi/Low/取りこぼしerrのステータス返す事ができるよ
1/2クロックまで、16MHzなら8MHzまで
それ以上のものすごく短いパスルはどうあがいても無理 Cで書いたら割り込みはISRマクロで定義することになって、NAKED付けない限りr0とr1と割り込みルーチン内で使ってるレジスタのPUSHが入るし
そもそも該当の信号が同期化されて割り込みベクタに飛んでRJMP命令が実行される時点で4クロック分の時間を消費してるわけで・・・
Arduinoで書いてるなら使うレジスタを全部把握してISRにNAKEDつけて退避なしで組むとかほぼ不可能だと思うし
16MHzでやるには辛い仕様なんじゃないの。実際どういう目的で使ってどういう信号が来てるのか書いてみてよ どうあがいても無理と書いたけどあれは嘘だ
外部クロック注入前に74HC4040等で文周すれば80Mhzくらいまでいける
「ごく短いパルス」というのがふんわりしすぎていて仕様を満たしているかわからん 外部部品OKなら外付けで何でもできるだろw
パルスカウント用に高速のマイコンつけりゃいいだけだし >>897
割り込みトリガをトグルするとかどうかな
始めRisingでトリガして呼ばれたらFallingに変える
Fallingで呼ばれたらRisingに変える 外部割り込みピンでもピン変化割り込みは使える、かつ同時にフラグが立ったときは割り込みベクタ番号の若い方、つまり外部割込みが優先して実行されるから
両方有効にして外部割込みはRISINGのみにする、外部割込み直後にピン変化割り込みのフラグを解除する行を追加
これで擬似的にRISINGは外部割込み、FALLINGはピン変化割り込みのISRになる・・・かな
まぁどっちにしろ信号の早さに対してマイコンのクロックが足りてないっぽいのでどんな手段をとろうが取りこぼしが起きるだろうけど ノイズに付き合う必要も無いので短すぎるパルスは切り捨てる判断も必要 返信が遅くなりすみません。いろいろとアドバイスありがとうございました。
今回の(CHANGEでのRISING/FALLING判定)は具体的な利用のものではなく、前回の延長としてそういったことはできないか、という意図でした。なので非現実的なことを聞いてしまったかもしれずすみません。
CHANGEでの割り込みで、関数の最初にHIGH/LOWを見てRISINGかFALLINGか判定した上で、それぞれカウントするという簡単なコードで試した際、タクトスイッチのチャタリングのような細かい周期の割り込みでは正確に拾えなかったことから質問させていただいた次第です。
(RISINGとFALLINGのカウントは常に1しか差が出ないはずがそうではなかったため)
電子工作は初心者で、ソフトウェア寄りな人間なので確実な方法を求めてしまいました。
ソフトウェアでの限界はある程度はあきらめることや、周辺回路でサポートすることも必要ということですね。いろいろと勉強になります。 人間の手では50ms以上の速度でタクトスイッチを押すことは高橋名人でも不可能なので
50ms未満の変化はソフトウェア的に無視するよう書くべき >>909
16連射ならデューティ50%としてON(OFF)時間は31.25msecだから高橋名人なら可能なんじゃね
実際には16連射より速かったそうだし makeして書き込めと言われたのですが、makeとは何でしょうか?
ArduinoIDEで出来かすか? makeとはソース(スケッチなど)をコンパイルリンクして実行ファイル(機械語HEXファイルなど)を作成すること
ArduinoのスケッチならArduinoIDEで可能、素のAVRのソースならAtmel Studioなどに読み込んでコンパイルリンク、Makefileが付いてるならgccとかで一気にできるんじゃない? >>909
連射は難しいけど、単発で1回押すだけなら20msぐらい余裕だよ。
意図的に短いパルス出そうとして頑張れば10msぐらいでもいける。 >>908
http://codepad.org/Ov2EsaBz
どの位のパルス幅からうまく読み取れないか試したら
だいたい4.58μsより短いパルス幅だと正しく判定出来なかった $ make love
make: *** ターゲット 'love' を make するルールがありません. 中止. Arduinoで二酸化炭素センサMH-Z14Aを使おうとしてます。ネット上のソースコードであれこれ試してみてますが、二酸化炭素の値が「リアルタイム」で得られてないっぽいです。センサーに息を吹きかけると、その影響が出るのが20〜30秒後くらいになってしまいます。二酸化炭素の値をリアルタイム(数秒以内)に得たいです。
これって、センサの仕様上しょうがないことなんでしょうか?
データシートをみても、20秒のラグなどの情報は見当たらないし、ネット上の記事にも、このラグについて書いてありません。。どなたか、こういう、arduinoでのガスセンサの使用など詳しい方いらっしゃったら、教えてもらえるとありがたいです。 ちゃんと電源入れっぱなしにして5分後くらいにやった? >>919
ありがとうございます。何度も見直していたところ、コードの一部にミスを見つけました。
無事、正常に動きました。 「ネット上のソースコード」の話な
いかがでしたでしょうか系 不手際があってスケッチを保存してたフォルダーごとぶっ飛んだ。
電子工作・Arduinoを初めてからの2年間の膨大なスケッチが水泡に帰した・・・
皆さんもバックアップはマメにね。(T_T) ローカルだとバージョン管理めんどうじゃない?
github使ってるわ どうせコピペばっかなんだからバックアップも版管理もいらねーだろwww >>927
何か自分で使った周辺ICとのインターフェース部分をリファクタリングしてライブラリを作るのにはまってしまって・・・ >>926
飛んだデータの量にも依るけど、それ悲惨すぎ
今どきPC使ってて、ディスク・イメージの定期バックアップも取って無いの?
専用アプリは色々あるし、データはもちろん、OSが飛んでも、最後のバックアップ時の状態に復元できるのに Windows標準のバックアップ機能がクソ以外の何者でもないというのが問題なんじゃない?
自分の環境じゃエラーばっか出てまともに動いた試しがない、あれじゃまともにバックアップする気にならん。
Macじゃ標準の機能が極めて簡単に使えて、部分リカバリも全体の復元もちゃんと可能。 バックアップツールは復元できるかどうかそのときになってみないとわからないから信用できない。
データやメールの入っているフォルダをXCOPYコマンドで定期的にコピーするのが簡単で確実。
フォルダがたくさんあってもバッチにしておけばいいし。 >>931
リカバリーメディア作ったときに、正常起動可能か試せばいい
自分は本体と同じ予備SSDも買ってるので、それを2カ月に1回くらいの頻度でクローン化し、それに入れ替えて継続使用してる
これで、元のSSDを挿せば、最低限、数カ月前の状態には瞬時に戻せるようにしてる
さらにWindows10のメジャーアップデート毎にも、復元を確認してるし、自動バックアップは毎早朝にスケジューリングし、終わるとスマホに(イメージの整合性もチェック)報告メールをさせてる
備えあれば憂い無し >>931
因みにデータのコピーは、外付けHDDとLAN上の別PC2台に1日数回やってる 現状だとローカルバックアップよりクラウドに必要なデータバックアップの方がいいよ
自動化だって簡単だし、天災にも強い >>934
ホントそうだけど、
インストールしてるアプリが多過ぎ、特に機械・電気電子関連CADやシミュレータ、そしてデータ(シミュレーション結果の動画とか)も多くて。。。 液晶へのフォント描画で0〜Zは問題無いのにa〜が1コードずれてて必死に原因探してたら、フォントデータの
〜0x00}, // [
〜0x00}, // \
〜0x00}, // ]
の行末\で]の行がコメント化されてたのが原因だった…すんげー間抜け 最近のOSはデータをアチコチにばら撒き過ぎなんじゃーヽ(`Д´#)ノ Arduino Nano 33シリーズてまだ技適的にアウト? >>685
で投稿した者です。
前回の質問したパワーパックの回路や筐体は組んで完成したのですが
https://pwm.sigris-rabo.work/?page_id=199
上記URLのプログラムを
Arduino Pro Mini上位互換マイコンにAE-ATMEGA328-MINIに
書き込めたのですが、電源ONしてもLCDディスプレイに何も表示されません。
助言をお願いできますでしょうか? 回路の配線は合っていますか
電源投入後、電源ラインがつながる箇所の電圧は確認しましたか
プログラムが書き込めたことを何をもって確認しましたか
ご自身でどこまで調べましたか >>939
実配線図と回路図が異なってるので、確認するべきポイントがいくつかあります
1.LCDのVCCやGNDは接続されてるか?
2.LCDのVO端子(コントラスト調整端子にはコントラスト調整用の半固定抵抗等が接続されてるか?
3.LCDの説明書にあるバックライト点灯用の抵抗の取付は出来てるか? >>940
・回路の配線は何度か確認し、合ってはいます。
・テスターで3端子レギュレータの出力確認はしました。
・プログラムはIDE上で、問題なく書き込めました。
>>941
@接続はされています。
A・Bは後で調べてみます。
以上になります。 遅くなり申し訳ありません
先程2・3の方も確認し、バックライト点灯用の抵抗調整をしたら
LCDモニタに表示することができました。
助言ありがとうございます ここはArduino正規品のみですかね?
互換品の質問もおkですか? Arduino関連の質問ならおk
Arduino互換機の話題なら別スレが有る ESP32で読み取ったSDカード内のmp3ファイルをA2DPで送信したいと思い、A2DP関連ならArduino全般に当てはまるかと思ったのですが...スレチですかね?
ESP32の質問可なスレがパッと見つからなかったのでもしよろしければ誘導お願いしますm(_ _)m >>949
ESP8266やESP32はWiFiモジュールとしてだけではなく、コスパの良いマイコンとして使えるから人気有る
Arduinoで開発できるので、簡単にマイコン+WiFi(Bluetooth)を使った作品が作れる
手軽なボード状の物でESP8266はAliで200-300円,ESP32で400-500円位
ESP8266は32bitCPU SingleCore 160Mhz + WiFi
ESP32は32bitCPU DualCore 240Mhz + WiFi,Bluetooth
処理早くフラッシュ大容量でコスパ良いのでWiFi使わなくてもお釣りくるのよ >>950
へえArduinoなしで単体で動くのか、安いし買ってみよう そう、メモリを気にせずガンガン使える。
でも、ディープスリープからの復帰はリセットされるから、Loopの初めから始まる。
電池駆動で長期間動かしたい時とかArduino(ATMega・ATtiny)とか使うこと多いかな。 お、それじゃあ俺は、Obnizを推すわ
かなりクセがあるけど、用途がハマればおもしろい Arduinoに後からNW/bluetooth機能足すなら、最初からESP32使った方がコンパクトだし何より安いよね。ESP32(技適あり)で400円ぐらいだし。
DeepSleepの消費電力もものすごく省エネだし。 >>948
遅くなってすみません!ありがとうございます
スレチ失礼しました >>953
M5Stack Basic?これはなに?ESP32が入った完成品?
自分でスケッチ書いて、そのままヤフオクで売れそう Arduino同士のシリアル通信の事なんだけど、UARTを使った単純な通信にするか、I2Cやspiにするか迷ってる。衝突回避のほかにI2Cやspiを使うメリットってある? 通信距離も何を選択するかの要素となる
トランシーバが必要になるけど、UARTもRS485なら複数相手の通信が可能 質問です。
DAC からの出力をピーク電圧の半分だけ下げて交流の形にしたいのですがどうすればいいでしょうか?
またその際、Zero などの 3.3V 系と普通の Arduino の 5V 系での違いや気をつけた方がいい点などがあれば知りたいです。
宜しくお願いします。 >>963
ちょっと言ってる意味が理解できてないカモだけど
こんな感じにしたいって事?
https://i.imgur.com/xkpHQxF.png >>964
御回答ありがとうございます。
そうです、そんな感じです!
コンデンサと抵抗でいいんでしょうか? >>965
正確には上記の回路だとうまく動かないと思います(DACの出力が弱い為)
ArduinoのDACの出力をオペアンプでバッファしてからコンデンサと抵抗で交流に変換するのが無難だと思います
また、必要に応じて交流に変換した後もオペアンプでバッファしてください(ただマイナス電源を用意するのが面倒なので無いほうが楽)
https://i.imgur.com/o4wxFwY.png
抵抗とコンデンサの定数はいい加減なので、必要に応じて計算してください >>966
助かりました。ありがとうございます!
この原理って何か呼び名がありますでしょうか?
ググって詳しく調べたいのですが、「コンデンサ 抵抗 負」とかでは上手くそれらしい結果が出てきませんでした。 >>967
名称は詳しくなのですが
「ACカップリングコンデンサ」や「CRハイパスフィルター・RCハイパスフィルター」と呼ばれてると思います >>968
なるほど、ハイパスフィルターになってしまうんですね。
出力の形をそのまま維持できる方法はないのでしょうか? >>963の質問の意味をまだ理解できないオレは修行が足りないのだろうか・・・ >>969
マイナス電源も用意するなら、オペアンプの信号をオフセットすれば出来る
マイナス電源無しの方法は複雑すぎて俺には出来ない・・・
https://i.imgur.com/MmZ8MAl.png
用途がわかれば別のアドバイスも出来るかもしれない
今更ですが、5V系のArduinoだとDAC付きって何があったっけ?
UNOやMEGAはDAC無いので・・・ >>970
すみません、自分の知識不足故にお伝えする能力が足りてないのだと自覚しております。
>>971
5Vのだとないんでしたっけ?幸い今試そうとしてるのは Zero なんですが。
やりたいことは単純にスピーカーに繋げて音を鳴らしたいのですが、
そのままでも人間の耳には聴こえるかもしれないけれど、
何かそのあと処理する時にいろいろ良くない的な事が書いてあったので、0Vを中心にしたいなと思いました。 >>972
5Vでも探せば有りそうだけど、有名な機種だとDAC無いのが殆どだったので
>>964の様な構造は市販のオーディオアンプでもごく普通に使用してる方法なので>>971の様に複雑にする必要はないと思います
アンプ付きスピーカーを接続するなら、抵抗+コンデンサ+バッファ(省略できる可能性有り)で十分だと思います
(そもそもSP側(アンプ)にカップリングコンデンサ付いてる可能性が高い!)
アンプ無のスピーカーなら使うアンプICにより、バッファ無で回路作れると思います
https://akizukidenshi.com/download/ds/njr/njm386bd.pdf
よく使われてるアナログアンプの推奨回路でもACカップリングコンデンサが使われてますよ〜 ACカップリングコンデンサーを入れるとハイパスフィルターになるが
作ろうとしている装置がどういうスペックかを明確にすれば不具合を回避する方法はある
例えば生成する信号の最低周波数が10Hzなら、1Hzくらいがカットオフのハイパスフィルターを使えば
ハイパスフィルターとしては無いも同然という事になる >>973
まだスピーカーは調達してないので、参考にさせて頂きます!
(というか全然理解してないのでまずアンプ有りのスピーカーで確認しつつ、アンプ無しのスピーカーでも鳴るようにして理解を深めたいと思います)
>>974
人間の可聴領域より低いところに調整できれば事実上無視できそうですね。
こちらもいろいろ試行錯誤してみたいと思います。
知識不足からまだ釈然としてない部分は多いのですが、教えて頂いた情報を元に更に調べたり試行錯誤してみたいと思います。
皆様ありがとうございました。 こーいっちゃ何だがただのオーディオアンプ
ま、変な沼にはハマらないようにね・・・ククク >>975
ダイソー300円のアンプ付きスピーカーを実験用に使ってます
買った直後に右用と左用を分離して、1個のアンプ付きスピーカーと1個のアンプ無スピーカーとして使ってます 俺は386で十分だから沼の心配は無いw
でもポップノイズが気になるんだよなぁ〜 >>976
「このハードディスクは音質がいい!」
今の時代なら「このSSDは音質がいい!」とかになるんでしょうかw
>>977
賢いですね!真似させて貰おうかな。
>>978
私の CPU は 486SX 16MHz です!
関係ないんですが自分が二つ買った Zero の箱を見たら
ABX00003 の 03068 と 03069 ってラベルが貼られてました。
これシリアルナンバーだとしたら純正品の Arduino ってそんな数しか売れてないの?って心配になりますね。 天下のSONYがこのSDカードに入れたデータは音質があがるSDカードを売ってるような時代だからな >>980
音源データ入れたUSBメモリーも、
外装の色によって、音質が変わるんじゃなかったっけ?www
赤色は情熱的な、とかなんとか ad9833波形ジェネレータがマイナス出力するのにも使えそうやな >>981
赤は酸化鉄で磁性体だから音が悪いんだったはず
青もコバルトで強磁性体で(ry
一番音がいいのは結局カーボンブラックだと柴崎先生が言ってたw 車が近づいたらライトを光らせたいです。
5m〜位から反応させたいんですが高いレーザーセンサー買うしかないですかね。 どんな状況かによる
別のセンサーが使えるかもしれんからもっと具体的に >>971
DACというよりPWMかな。ローパス入れないとまともなアナログにならんと思われ。 >>987
PWMじゃないDACが付いてる機種もあるよ。
ZEROとかDUEとか。
ArduinoではないけどArduino IDEで開発できるボードだと
Teensy 3.5とか3.6も。 >>971
5V系だと、Teensy 3.5がdigital5V耐性でDACが2chあり。 NANOで1ミリ秒の割り込みを書いたんですが、期待通り動かないので教えてください。
スケッチ:https://pastebin.pl/view/81033221
結果:https://pastebin.pl/view/899b8269
if ((millis16()-ms1)>=1000){ で前回値より1000大きければの条件通過してるのに
millis16()-ms1が913になっています。これは毎回同じ値です。
millis16()内のcli(),sei()を有効にすればこれは解決するのですが、
カウンタ変数にvolatile付けているのになぜこうなるのか釈然としません。
詳しい方解説をお願いします。 volatileを付けたからといって、ms=milliscntの処理中で割り込みが入らないわけではないよ
cli, seiが嫌ならmilliscntを複数回読んで2度同じ値だったら採用するとかする 詳しく見てないけどloop内でmillis16()呼び出すの1回だけにしちくり〜 レスありがとうございます
割り込みが入って処理が遅れるのは構わないのですが
なぜ1013ではなく913になってしまうのか、そこがわからないのです。 >>993
ステトコードなので、if文の前後でmillis16()の変化を観測しています。
4箇所でデータ採取していますね デバッガ無いのつらいの
アセンブリ読むしかないかもな ifの評価に使ってる値が残ってないのがわかりにくくしてるような。あとシリアル後に変数更新したら文字列の長さ分ずれると思う。 >>986
50mくらいの道をバックして自宅ガレージに停めてるんですが、暗くて壁が見えづらいので家5m前に車が来たらライトが点くようにしたいと考えています
>>990
結構しますね…市販のライト改造したほうが安上がりな予感 超音波センサーがいいんでない?
それでは次スレでノシ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 111日 6時間 25分 37秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。