Arduino初心者熱烈大歓迎質問スレ part10
Serial.begin(19200); Serial.println("---SURETATEOTSU!!---");
ルンバとか作れますか?
もう時代はインテルだけどな arduino公式協力だから互換性も高いし Intel、Arduino互換のマイコン開発ボード「Galileo」 400MHz駆動で低消費電力の Pentium互換SoC「Quark」を搭載
Arduino Dueも大して相手にされてないのにGalileoに人気出るかな? Arduinoの人気は性能とは別のところにある気がするが。
小型軽量低消費電力 フィルム基板 とかのほうに行ってほしいな。
10 :
774ワット発電中さん :2013/10/09(水) 11:44:13.22 ID:Gvatz7+w
PCとarduinoをxbeeのATモードで双方向無線通信させたのですが、時々親機から子機への通信に遅延が発生してしまいます。 親機と子機のxbeeのファームウェアを入れ替えて試したのですが、結果は同じでした。 プログラムある文字を受信するとLEDを光らせるという簡単なものです。 Baudは9600に設定しました。 どうやったらこの遅延を解消できるでしょうか
Atmega168と328って何が違うのでしょう
途中送信してしまった 16/32なので16ビットと32ビットなのかなとは思ったのですが IDEで使う限りあんまりかんけいなさげな? 大幅にまちがってますか?
>>10 まっ、とりあえずUSB上を眺めてみるこった。
>>10 2.4GHz帯が混線してんでね?
>>11 ROMの容量が違うだけ
ATmega8<88<168<328みたいな感じで容量が増えていく
末尾が8だったらコアは同じと考えていいよ
>>10 pc側で送信文字列がバッファリングされてるのでは?
電子レンジ使うと接続が切れる…
2.4GHz帯だと電子レンジ強すぎだからな
>>14 なるほど容量の違いだったのですね、ありがとうございました。
19 :
774ワット発電中さん :2013/10/11(金) 10:29:19.96 ID:0boaVEQu
10です返信ありがとうございます
>>13 ちょっとよく分かりません
>>14 親機から子機の場合のみなのでおそらく混線じゃないと思います
>>15 xbeeがスリープ状態のとき一時的にデータをバッファリングするらしいのでsleepmodeの設定を見直してみます。
>>19 XBeeって結構エラーで止まってはリトライで救ってるから、
しょっちゅう遅延するよ。
遅れが問題になるような使い方をしては駄目。
やっぱbluetoothLEなんだよなぁ
講義中レッツノートでエロ動画見てるキチガイがいてびびった
すいません全力で誤爆です
14だけど思い出したことがある XBeeをブロードキャストモードで1:N通信してると親機から子機への通信に遅延が発生してこれは解決できなかった 仕方が無いので1:1通信モードを使ったよ 宛先を指定して通信ってヤツ
>>22-23 分かります。無線のパケットを傍受してファイル化する方法ですね?
授業でエロ動画を見せる先生もいるご時勢、お相子じゃないですか。 ね?、電脳死せんせい
27 :
774ワット発電中さん :2013/10/13(日) 04:30:52.67 ID:Avukduud
arduino最近買ってAndroidとつないで遊んでるが、 ケースを作ろうにも二本しかネジが入る穴が無くてイラっとするな…
29 :
774ワット発電中さん :2013/10/13(日) 04:55:55.42 ID:Avukduud
USBと電源コネクタの隣にある二つの穴はパーツに干渉してM3ネジが入らないんだ…
プラのスペーサー入れて、部品に当たるところを削ってみたら?
後でなんとかしようと思いつつプラネジの頭を少しニッパーで切ったのを入れてそのままだ
それで十分じゃね
こんな軽いの4点で固定する必要ねーだろw
>>34 用途次第だろ。ロケットに積むとかならGも考慮せんといかんだろうし。
振動で・・・
>>36 がっちり止めると筐体の歪で基板も傷む。
ネジ止めとロッキングカードスペーサーを混ぜたほうが良くない?
38 :
774ワット発電中さん :2013/10/13(日) 21:54:38.40 ID:1Lirgg/V
>>31 これ便利そう
通販できるとこ探してみよう
情報ありがとう
ゴムやらシリコンのワッシャを入れるのが定石だと思ってたが、最初から柔い素材のがあるならそれに越したことはないか 入手性とコストが少々問題だが
質問です uno leonardoを入手して、スケッチのblinkをコンパイルして本体に転送したところ だんだんLEDの点滅間隔がずれていきます。 プログラムソーズでは同じタイマー数のカウントを取っている筈なのですが、これは何故なのでしょうか? ちょっと気になったので秋月のAE-ATMEGAも組み立てて、同じblinkのスケッチ入れてみたのですが、 やっぱり皆点滅間隔がずれていきます。
電源がヤバイとか
うーん、USBの直引きです電源 今も見てるけどわかんねー><
水晶にも誤差はあるぞ
なんかがタイマー邪魔してるか 同じポートを誰かが使ってるとしか 目で見て水晶精度が分かったらすごい。
Serial.print しまくってないか?
USBて十分に不安定な電源だと思うのは私だけか
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } ソースこれです。 同じソースコードで機種ごとにコンパイル→転送 それぞれ適当にリセット押しながら点滅のタイミングを揃えて、 15分も放置しないうちに点滅感覚がバラバラになる、という状況なのです Uno rev2 Leonard 秋月の168/328ボード(クロック16Mhz) です。
悪く見て ±50ppm の水晶だとして最大で 100ppm の差 900秒×(100/1000000) = 0.09秒 普通に分かる程度には差が出るな
気になって調べてみた
±100ppm〜200ppm 精度不要
±50ppm ちょっと精度いいやつ
±10ppm 高精度
だから最悪時は
>>48 の計算よりも差が広がる
UNOって水晶どころかセラミック振動子じゃなかったっけ?
>>50 正解。
しかし、この場合の精度は、製造の過程で生じる個体差ではないの?
セラロックとはいえ、同じ個体でそれだけ大きな誤差に遭遇したとがない。
調べてみたら、内部発振だと最大誤差プラマイ10%なのね そんなにズレたらやばいな
あー同時に走らせて二台の点滅がだんだんずれてくるって事か
54 :
51 :2013/10/14(月) 17:49:04.60 ID:Ckn603Pi
55 :
774ワット発電中さん :2013/10/14(月) 19:21:52.48 ID:h8HTK41U
じゃあ、CDSセンサ使ってお互いの端末のLEDの点滅を同期したらどうよ? メインを1台にして、他の個体はそのメインLEDの光をセンサ探知して タイムカウントじゃあなくて、センサの抵抗値で制御 それでも若干の誤差はでるだろうけど
なるほど。 無線で同期だな。
片方の発振で同期したらいいんだよ
なんでずれるの?って質問だからもう解決なのでは
CdSてw
60 :
774ワット発電中さん :2013/10/14(月) 21:34:28.14 ID:h8HTK41U
>>59 ? 駄目なの?
CdSって30円くらいだろ 安いじゃん
抵抗値をシリアルで見て、センサの感度の個体誤差を数値で確認できるから
同期補正もすごく簡単だろ
無線だと、電子レンジとか
他機器のノイズで遅延があるってスレ上のほうであったよ?
ま、センサー接続コードが長いとカッコ悪いのはあるけど
カドミウムが問題視されてね、もう製造されていないんだよ
にほんごよめますか?
>>63 まだうってるものをつかったとしてなにかもんだいがありますか?
絶版が見えてる素子はあんまり使う気がしない
>>65 Arduino初心者熱烈大歓迎質問スレではあまり関係のないことでは?
なら引っ張るなよ
68 :
40 :2013/10/14(月) 22:21:05.49 ID:T56Bu03V
皆様レス意見アドバイスありがとう御座います。
>>53 まさにおっしゃる通りなのでございます。
このシリーズはもう、こういうものという感じで割り切って使う、のが普通なのかもしれません。
なるほど確かにどれか一台をマスターにして トリガ発生による同期をさせて見ますと、
これはもう見事に同期しました。当たり前と言えばあたりまえなのですが。
単純にLEDチカチカさせたarduinoを並べて見て、点滅感覚が徐々にずれるというワケなんですが、
uno、leonard、秋月のボードではそれぞれ機種そのものが違う訳ですので、実行オブジェクトもじっさいは機種ごとに違うのかもしれませんし、それなら速度も違うのかな?
バイナリ比較してないので後で確認してみます。
とりあえずなんとなく解決した感じです
長文失礼いたしました。
さっき秋月で買ってきたlcdでデバッグようにlcdシールドを作って試してみましたが、三台とも普通に動作しました。
とくに壊れてるというわけではなさそうです
今まで気にしたことなかったが、載っかってる水晶はusb用なのか
70 :
51 :2013/10/14(月) 23:43:11.53 ID:Ckn603Pi
71 :
51 :2013/10/14(月) 23:45:50.88 ID:Ckn603Pi
>>68 このシリーズ云々ではなく、工業製品全般で同じ結果だよ。同期を取らない以上は。
全く話が通じてなくてワロタ
>>68 秋月ボードのCPUとのブートローダがUNOと同じなら、できあがる実行モジュールは同じ。
秋月ボードでも、ボード選択は「UNO」じゃなかった?
leonardはCPUが違うのでモジュールは違うけど、違いを加味した上でコンパイルされるのがarduino。
時間に関しては、クロックの精度の方がよほど差が大きい。1秒の判定は、何クロックサイクル分なのかを考えてコンパイルされるから、クロックの精度が直に利いてくる。
既出の様に、もし±10%ならプログラムは1秒のつもりでも、実際には0.9秒〜1.1秒となるよ。
と、わかるのかな?
>>69 インタフェース用なので、精度が求められるみたい。
でも、本体はセラロック。まぁ、そういう処理系。
時計組んで、差をみてるサイトとかあるよ。
ある程度正確な時間処理は、RTC使うのがセオリーなんじゃないのかな?
目的に合わせて適切な手段を用いるのは、これ当たり前のこと。 ところが最近では最適な手段はさけて、なぜかとんちんかんなことをやる傾向。
>>75 そんなのはわかった大人から見たら、昔から同じこと。
arduinoでどんなもの作った? なんとなく買ってみたけどどんなもの作れるかよくわからないからどんなもの作ったか知りたい
コントローラを使用してロボットのアクチュエータ(モータやRCサーボ)への出力信号を制御
xbeeと組み合わせて電動カーテンと、webから制御できる学習リモコンシステムつくってる。 しかし、赤外線LEDは初めてだったから普通に十数mAでドライブさせりゃ いいと思ってたけど、数百流さないと全然光が届かないのね
ゲームのコントローラ
>>79 そう・・・
20年前のパソコン雑誌でやっていた、パソコン使った万能リモコンの
製作記事でも説明されていたりするくらい定番なことなんだけどね。
赤外線LEDの変調周波数の秘密
>>79 どうせ38kHzとかで点滅させるんだから、
1AぐらいいってもOK
電子楽器のコントローラー
>>24 子機のファームウェアをそのように書き換えてみたら出来ました!
助かりました
89 :
774ワット発電中さん :2013/10/17(木) 05:56:21.61 ID:qKaJykb2
Arduino Pro Mini 328 5V 16MHzを使用しています。 最大150mA出力と書いてありましたが、これはこのボードから出力できるMAX電流が150mAということですよね? サーボモータを動かして遊んでいたのですが電流測定したところ200mA近く流れていました。 やばかったかな。
モーターはモーターシールドを使いましょう
何も知らずにNゲージを直接PWM制御してた時期もありました
>>90 入門書にUNOでサーボモータ動かす解説があったので大丈夫だと思ってました。
小型化したかったので何も考えないでpro miniで使っちまいました。
Nゲージを直接PWMかぁ・・・メルクリン方式とかとか
ArduinoってAVRマイコン単体にどんな機能が追加されるものなの?
>>95 マイコン単体に無いものは追加できません。
>>95 ぶっちゃけArduinoの本体ってIDEと言語の方だから
せやな
>>95 プログラム開発の簡単さにパラメーター全振り
101 :
95 :2013/10/18(金) 20:44:03.59 ID:23UwxKKS
あれ?でもArduinoのボード上には16MHzの発振なんちゃらとか載ってるよね? そういう部品がある分AVRマイコン単体よりもできることが増えてるってことではないの?
102 :
774ワット発電中さん :2013/10/18(金) 20:49:52.28 ID:XzNPNVjE
発振なんちゃらはUSB通信用だって話じゃなかったっけ 機能拡張というよりもプログラム一行追加するだけでサーボ動いたりAndroidでプログラミングできることに感動したわ
単体で内蔵clockにすればデジタルピン22本使えるんで 出来ることは減るかもだけど
Leonardo特有命令で質問です press()命令でテンキーの数字を押したように見せたいのですが リファレンスの記述が見つかりません どんなふうに記述すればテンキーの数字を押した事にできるでしょうか? ご存じなかた教えてください
>>105 0xE1からの定義でテンキー入力になりました!
ありがとうございました!
まったく私の勉強不足でした、次からはもっと調べてみます。
107 :
95 :2013/10/19(土) 07:26:25.09 ID:2fDHpS/F
しつこくてゴメン ということは、Arduinoとしてスケッチを流し込んだ後なら 載っているAVRマイコンを取り外して単体で基板に乗せても同じように動作するってことでおk?
おおざっぱにいえばそう
もちろん水晶とかも必要だよ
内蔵RCにヒューズ設定しとけば水晶も要らんよ
>>111 >8kBは欲しい気がする
「AtmelのCPU「ATtiny85」、8Kバイトのフラッシュメモリ、512バイトのSRAM、512バイトのEEPROMを搭載」と
あるけど、ブートローダーの分だけ使えるフラッシュの容量が減るから足りないって言いたいの?
>>112 あーごめん勘違いだった。
8ピン50円、100円ぐらいのが1k、2kぐらいだったので
そういうのAttiyかと思ってしまった
水晶つけてブートローダー書き込まないと、後からブートローダーを上書きできないとか、なんで?
ATtiny85のDIPのを買って見ようかなと思った
117 :
774ワット発電中さん :2013/10/21(月) 00:06:16.44 ID:DucFPdwd
GALILEOはmouserのpre-orderで約7千円か
uno用(外部発振16mhz分周8?)にmills関数を使って書いたLED点滅スケッチを、内部発信8mhz(分周1)に書き込むと点滅速度が半分になる・・・で合ってますか? 修正するにはmills部分をチマチマ書き直すしか無いでしょうか?
hardware/arduino/avr/boards.txt に各ボードの設定があるので、Uno の uno.build.f_cpu=16000000L となってるところを uno.build.f_cpu=8000000L に書き換えれば良い。
ちなみに、レゾネータの誤差が気に入らないときも、そこで修正できる。 温度校正は出来ないけど。
123 :
774ワット発電中さん :2013/10/24(木) 04:19:30.45 ID:PxSi/7nG
Windows上のスクリプトからArduinoへデータを渡すことは出来ますか? 数文字の文字列を渡して、それに応じた動作をArduinoにさせたいのですが 具体的にどうやってデータを渡すのかピンときません。 Arduinoはまだ持っていません。
有線でも無線でも使って通信したら?
125 :
774ワット発電中さん :2013/10/24(木) 04:47:48.57 ID:PxSi/7nG
多分USB経由で送れるのでしょうけど、スクリプト言語から先 どうやって通信すればいいのかが分からないのです。
スクリプトってなんだか知らんけど 要はCOMポートに送ればよいんじゃね?
そのスクリプト言語とやらを秘匿する理由はなんだろう。 学校の課題?
スイッチサイエンスでボカロシールドがいきなり売り切れか
>>130 あれは初音ミクとかのデータなの?ちょっと気になってはいたんだよね
>>126-129 UWSCを使っています。スクリプトは自分で作りました。
やりたいことは、Windowsの画面に画像や文字列が表示されたら
それらに応じて(独立した機器の)操作パネルを操作する。
この誰にでも出来る簡単なお仕事が性に合わないので自動化したいのです。
正直に言えば、きっとWindowsからは仮想シリアルポートに見えるのだろうから
TeraTermマクロにデータを渡して処理するか、なんて考えはあったのですが、
もうちょっとコンビニエンスな方法、例えばDLLがあってスクリプトから
データを渡せばあとは上手いことやってくれるような、そんな仕組みが
あるんじゃないかと期待していました。
Pythonのところは、あ〜〜英語読めないんですよ。せめてアラビア語なら……とか
お茶を濁そうと思ったら、そのものズバリかいてありますね。
余談ですが、パーフェクトPythonを図書館から借りていて、買うかどうか
値踏み中であります。
皆さんありがとう。また壁にぶつかったら来ます。
わたしJKだから、また優しく教えてね。
通信よりも、 > Windowsの画面に画像や文字列が表示されたら を検出する方が、はるかに難しいと思うのだけれど? 仮想シリアルポートに見えることまで判っているなら、COMxポートを オープンすればいいだけですが、なぜTeraTermマクロが? そもそも基礎を知らない? > この誰にでも出来る簡単なお仕事 あぁ、よく人売り派遣営業とか、クラウドワークスあたりで小学生の小遣い レベルの予算で、仕事やってくれる人を探しているような連中が、決まって 吐くセリフですね。 通信したり、メール送ったり、ブラウザを操作するくらいのことは、Excelや AccessのVBAでもできますよ。 JKだったら、いっそ機関車トーマスみたいなヤツにくぱぁして頼めば?
135 :
774ワット発電中さん :2013/10/25(金) 16:58:45.47 ID:HQRQlu0r
mux shieldの使い方がわかりません。 誰か教えてください。
>>136 レスありがとうございます。
サンプルコードがあるのはわかっているのですが、
基板との接続(回路図)がイマイチわからなくて困っています。
>>137 USBじゃないの?
「Windowsのあるアプリの挙動を監視して特定の動作をしたらCOMポートにコマンド(文字列)を出力」
がしたいならC#でタスクトレイアプリが簡単だと思う
>>138 えーと、今自分がやりたいこと等をまとめると
【今わかっていること】
・M0の0ピンとANALOG INの0ピンが繋がっていること
・5VピンとGNDピンが共有して使えるということ
【これからやりたいこと】
・CdSセルを使って光の明暗を計測したい。
その際にmux shieldの計48個の入力ピンを、可能な限り使いたい。
(48個の入力ピン全てにCdSセルを接続して、計測したい)
【上記をやる際に、今困っていること】
・入力ピン1〜15への接続はどうしたら良いのか?
・その場合のスケッチはどうなるのか?
以上です。よく伝わっていないところがあったらすみません。
なにそれイメージセンサでも作るつもり?
そのまま上に重ねればいいんじゃない? スケッチ見る限り2,3,4,5,14,15,16が使われてそう
可能な限りはいいんだけど、それでなにがしたいのかわかんねーんじゃ論外。 秘密主義ですか?
なんで論外なのよ
目的あっての手段だと思うんだ。 目的ぼかされてるんじゃ何言ってもこっちの答えのピントはズレる。 だから論外と感じたのでそのように書いたんだけど、マズかった?
ピントは絞れないよねぇ
ピン無しのボカロシールドなら、今買えるな シールドも要らないんだけどな
Arduinoでsamkmというソフトみたいに2台のPCでキーボードを同期させる物をつくりたいのですが、 可能でしょうか?
可能
usbキーボード対応のarduinoとusbホストシールドでまずはpc一台に入力からはじめたらいいですか?
>>148 picはやめたの?
842 名前:774ワット発電中さん[sage] 投稿日:2013/10/24(木) 07:08:11.87 ID:wjODg0aw
質問なんですが、PICを使ってUSBキーボードまたはPS2キーボードを2台以上のPCで
同じ入力するデバイスって作成するのは難しいでしょうか?
ライターを持ってないので、安く出来そうなのはこちかなと
usbホストシールド的なのがあるのってarduinoだけですよね?
GR-SAKURAならそもそもUSBホストになるが
>>154 ARDUINO LEONARDOみたいに簡単にキーボードにみえるようにできるんです?
ARDUINO LEONARDOだと101キーボドだっていうのをみてたら Report DescriptorのLOGICAL_MAXIMUMが0x26のと0x25のとあるんですけど、0x26が3バイト 0x25が2バイトのときで違うんです?
158 :
774ワット発電中さん :2013/10/31(木) 10:04:48.96 ID:soSenkr0
arduinoとMP3シールド使ってSDカードに音入れて楽器作ろうとトライしてるんだけど、 2つの音を同時出力とか出来ないのかな?音重ねることはむりなのかしら? VS1033とかの音楽ICやPC繋げてPCから出力以外の、スタンドアロンで考えてるんだけども...
159 :
774ワット発電中さん :2013/10/31(木) 12:48:48.77 ID:batJI4bS
ど初心者の質問ですがー。 arduinoをnexus7とつないでarduinodroidでスケッチ を書き込みたいのですが、通信エラーみたいなこと が表示されて出来ません>_< ちなみにシリアル通信はできていてcdsなんかの数値は 表示されています。 あちこちググってはみたのですがよくわかりません。 どなたかお教えくださいませ。 (・・;)
160 :
774ワット発電中さん :2013/10/31(木) 12:53:29.92 ID:batJI4bS
ど初心者の質問ですがー。 arduinoをnexus7とつないでarduinodroidでスケッチ を書き込みたいのですが、通信エラーみたいなこと が表示されて出来ません>_< ちなみにシリアル通信はできていてcdsなんかの数値は 表示されています。 あちこちググってはみたのですがよくわかりません。 どなたかお教えくださいませ。 (・・;)
>>158 mp3はミックスダウンされた最終的な作品を圧縮するためのフォーマットなので
楽器の音源には向いていない
arduinoを使うなら、センサーの入力に応じて効果音が鳴るみたいな
メディアアートへの応用の方が向いていると思う
楽器にこだわるなら、WAV形式の音源波形と高性能のCPUが必要
なんでWAVなのに高性能なCPUが必要なのか。 こだわるならDACやアンプだろうに。
今日これから始めるんですが、 IDEは1.0.5と1.5.4のどっちを 使った方が幸せになれますか?
>>158 arduino+MP3シールド を2セット使えばいいんじゃなかろうか。
>>158 そのような用途なら Raspberry Piが便利そう。
SDカードスロット、音声出力は拡張無しで付いている
起動時間と消費電力が戦場で使えるもんじゃないからなぁ
目的オブジェクトを造るという事なら 品質を問わず目的を遂行できるオブジェクトを造ればいいんじゃね? 品質を問うという前提ならそれなりのハコが必要。 ただ、最初に目的達成のためのオブジェクトは造っておいた方がいいとは思う。
169 :
774ワット発電中さん :2013/11/01(金) 00:41:29.78 ID:NZkH441G
PC+Arduino+XBeeとXBee+PCでファイルの送受信をしてみたいのですがサンプルプログラムのようなものは無いでしょうか? 送受信するのはテキストファイルでも画像ファイルでもいいです。 将来的にPC→Arduinoを通して何らかの処理→相手のPC みたいなことをやってみたいと考えています そのためArduinoに書き込んだ命令でPCのファイルを受け取り、相手のPCにファイルを送信 って形にしたいです
Raspberry Piの音声出力が実用になると思ってる時点でもうね、笑うしかないね、そのすばらしき聴力に
>Raspberry Piの音声出力が実用になると思ってる時点でもうね、笑うしかないね、そのすばらしき聴力に 頭の悪い人はあれやこれやの実装方法が思いつかないから結論が早い
>>169 xbeeのatモードでシリアル通信ができるのでそれから始めたらどうかな?
まずはpc to pcをxbeeで無線化してハイパーターミナルで確認するしてみたら。
158です。raspberry pi初めて知りました。簡単に出来るのなら、ちょっとやってみようかな...。やってみたい事としては、lilypadをズボンに縫って膝を叩いたりすると キックやスネアのおととかが鳴るドラムパンツみたいなのを作ろうとしてたんですけども、 音が重なったり同時に音が鳴ったりってのは ちょっと難しいみたいですねぇ..
100円ぐらいの石を複数の方が1つ1つは単純で値段も安い気がする。
シンプルな1ユニット単音を複数作った方が安くて楽そうじゃね?
>>172 某サイトを見ながらArduino IDEのサンプルプログラム:Communication→ASCIITableをArduinoに書き込みました
ちゃんと無線先のPCでプログラムが実行されたので無線通信自体は成功したみたいです
続いて、PC1のフォルダAに入っている画像データをArduinoで引き出し、PC2のフォルダBに出力する といったことをしたいのですが・・・
調べてみるとArduinoのメモリが画像データに比べて圧倒的に少ないので、画像をそのまま送るのは難しいとわかりました
C言語を少し勉強した程度の知識しかないので、どういったプログラムを書けばデータを取得し送信することができるのかご教示お願いします
SDカードシールドを使えばいいんじゃないかな
画像データをまるごとArduinoのメモリ読み出す必要はないので問題はない
こんなときこそsdカードとeyefiの組合わせなんじゃないだろうか。
>>181 その発想なかった
ちょっとマニアックに PQI Air Cardにするとか。
中にARMがはいっていてlinuxでWebサーバ、ftpサーバ、telnetサーバがデフォルトで動作しており、microSDHCカードのルートディレクトリにautorun.shというシェルスクリプト入れておくと色々自動実行出来ます。
http://hitoriblog.com/?p=12627
両方買ったけどぶっちゃけどっちも使えない代物だったぜ
184 :
774ワット発電中さん :2013/11/01(金) 21:32:22.52 ID:Viu7xfuy
ここで質問するのかが正しいのかもわからないくらい初心者なのですが Arduino MicroにFlip使ってhexファイルを書き込もうと思ったんですが まずATmega32u4ドライバをインストール出来ないのですがFlipを使うことは出来ないんでしょうか?
>>181 ,
>>182 その手の無線LAN搭載SDカードはほとんどSPIモードが動作しないからArduinoでは簡単に扱えない。
東芝のFlashAirが動くぐらい。
2台同時PCを操作したくって、Leonardo買ったんだけど、 PS3コントローラはもっとメモリあるのじゃないとダメなのねw キーボードで我慢しよう・・・。
RTC買ってきたよ! これで萌え萌えボイスアラーム時計が作れるよ!
あっとパーツ確認してたらMP3シールドがねぇっ! 明日買ってこよ・・・
>>184 ArduinoMicroにはFlipは使用できません。
Mega32u4は通常Flip用のファームウェアが書き込まれて出荷されてますが
Arduinoのブートローダに書き換えられている為Flipは使えなくなってます。
プログラマでFlip用のファームを書き込めば使用可能です、Atmelは正式なファームを
公開していませんが探せばサードパーティのものなど見つかりますので自己責任で。
191 :
774ワット発電中さん :2013/11/03(日) 00:29:34.38 ID:0b+D+iK7
中華製買ってみた。何ですごくフラックス臭いんだろう? ゲーセンで取った 液晶ゲームも同じ臭いがするの。 でも、安いので買っちゃう。。。(Arduinoと書かれてるのは買わない)
193 :
774ワット発電中さん :2013/11/03(日) 01:33:59.19 ID:0b+D+iK7
>>192 DXの$11.5の。フラックス臭い。banggoodはArduinoって書いちゃってる$8.89もあるけど、
一応そこは貫いてるので手を出さない。流行の偽装と同じで、余計なこと書かなければ
買うのに。
ゲーセンの液晶ゲームは、GAME POKE。同じ臭い。
そのうち、腐食してきそうなんだよね。
気になるならフロンぶっかけて洗浄
arduino.ccのanalogReadのページに、読むのに100マイクロ秒かかるって書いてあるけど、それってArduino DueとかTreでも同じ?
キーボードスプリッタへの道は厳しい・・・。
マスターと動作を完全コピーするスレーブを作ってそれらを接続、制御したいPCとUSBで繋ぐだけじゃないの?
USBポートにPS/2キーボード繋ぐアダプタ2個買ってきて、PS/2信号を自前で制御すれば あとは割とカンタンだと思う。 >842 名前:774ワット発電中さん[sage] 投稿日:2013/10/24(木) 07:08:11.87 ID:wjODg0aw >質問なんですが、PICを使ってUSBキーボードまたはPS2キーボードを2台以上のPCで >同じ入力するデバイスって作成するのは難しいでしょうか? PC側がPS/2ポートでいいならアダプタも要らんな。
そもそも、C++が0からなので・・・w
PS/2入力のライブラリーはあったけど、出力はどっかにあるの? 自力でやろうにも、双方向でのやりとりが面倒そうで投げた
どっかにあるのって、自力でやろうとしてないじゃん・・・
いつもの割り込み処理の人かしらとか思った
>>169 >>178 です。皆さん返信ありがとうございます。
シリアル通信で画像を転送させたいのですが、プログラムが書けず困っています。
画像データの容量が300KB、Arduino unoのSRAMが256Bなので、とてつもない回数に分割しなければ転送ができそうにありません。
単純にIFでループさせるしかないのでしょうか?
サンプルプログラムを載せていただける方、よろしくお願いします><
マイコン無知勢なんですが Arduino Unoでサーボ動くようにプログラム組んだら,それをピン配置だけ修正してTrinketに送っても,まんま動作するって認識でヨロシ?
>>207 ポート叩いたりレジスタ直に書き換えるようなソースじゃなければ動くはず。
Arduino IDEの仕様がよくわからないのですが、 ULONG_MAXを使うにはlimits.hのインクルードが必要?
>ULONG_MAXを使うにはlimits.hのインクルードが必要? 確認したらすぐわかることを何故他人に訊くのだろう?
インクルードのルールがよくわからなくて。 無闇にインクルードしていいのか疑問なんです。
じゃあ君がすることは[xxxが必要?」ではなくて インクルードが何かを学ぶことだな
>>205 ArduinoでPC1側の画像を引き抜いて、ArduinoでPC2側に送るってことだよな?
Arduinoにのみ命令を書き込んでPCでは一切操作しないってことか
PS/2なんてそんなに難しくないだろ。 PICでLEDの点滅した次に作ったのはPS/2キーボード/マウスに 見せかけるアダプタだったけどな。 ハンドアセンブルして、ROMライタで16進入力して書き込んだっけ・・(遠い目
>>205 俺だったらSDカードに画像を置くかな
ある程度の量読み込んでバッファしてシリアルで転送って感じ
300KBならそんな大したデータ量でもないだろう
>>205 SDカードを使わずにだと画像をバイナリデータで取得するって形になるんだと思うよ
プログラムは自信ないから他の人に任せた
>>212 私が阿呆なせいで言いたいことは全く伝わらなかったけど、あなたの書き込みから答えは見つかったよ。
ありがとう。
>>213 それってsambaクライアントとかいうものじゃ
>>214 ハンドアセンブルって...
猛者すぎるw
大学の授業の一貫と、MSDOSの頃に他人プログラム書き換えるときしか使ったことないや
まあPICのマシン語ならまだましかな 昔はROMも少なかったし
I2cでHIDコードをそのまま送る方法がわからんちん・・・。
>>219 小学生の頃にMSXを使ってたときに
M80とかのアセンブラとか買えなくて
(買う買えない以前にFDDが無かった)
学習ノートにアセンブラ書いて
ニーモニック表を見ながらマシン語に変換し
BASICでそのマシン語書き込んでたよ
BASICから利用する場合はCALLって関数で呼ぶんだよね
小学校の間はそんなことばかりしてました
なのでZ80のマシン語を見ると
CDがCALLでC9がRETだなとかわかるのです
>>222 >BASICから利用する場合はCALLって関数で呼ぶんだよね
USR だろう。
N,N88-BASIC はUSR と CALL 両方あり(?) SHARP (MZ) は DEF USR FM-BASIC は EXEC (?) みたいな感じ
225 :
205 :2013/11/08(金) 15:13:19.37 ID:SagCaKfX
>>215 ワイヤレスSDシールドを搭載し、マイクロSDカードを挿し込んでみました。
これで画像をそのままSDカードに保存できるようになったんですよね?
有線接続中のPCからファイル名(〜.jpg , 〜.bmp)を指定して画像を取得といった考えで間違いないでしょうか?
市販されるかな?
名刺にアンテナ印刷してチップはりつけるのか
盗聴が捗るな
いやいや電源が無きゃうごかねーよ
あとマイクとかICとかどうする気だよ
米粒の出番か
現在入手可能なarduino互換で最小なサイズのものって どんなものがありやすか? シールドは考慮せずに(するとサイズが決まっちゃうんで)
>>235 正確には、ブートローダ書き込んで、内部発振にしたやつだな。
>>236 これ、いいですね
まだ配布続いてるのかな^^;
そういう需要もあるのか 小さくて激安なArduino互換ボード 確かに今のArduinoは高いかも 問題は安定して供給できるかかな?
arduinodroid入れて、電車とかで開発している人いる? 俺はしてみたいと思うのだが、やっぱりブレッドボード持ち込むのははずいかな?
一般人:時限爆弾?!
blinkのテスト完了! androidの電力で動くね。 これで、この爆弾、時限爆弾じゃないですよ〜って、きょどれそうです。 あとは、USB typeBケーブルがもう少し可愛い太さなら良いのだが...。
243 :
774ワット発電中さん :2013/11/11(月) 23:59:05.45 ID:axVIsecv
ケースにいれたarduinoでLチカぐらいなら出来そうだが、 専門書広げたりネットで情報あさりながらプログラムする人間なので手が足りなくなるな… 布団でプログラムできるのは便利
Emuduino使え
Arduino初心者です! 直径55mmの筒の中にArduinoをしこんで、玩具を作ろうと思っています。 スイッチを押せば音声ファイルが鳴ったりする程度のギミックです (5つのスイッチで5つの音声ファイルを予定) 音声ファイルありきならWave shieldを使おうと思ったのですが、55mmの筒にそれが収まるか どうか不安になりまして.... 何か良い方法はないでしょうか? (よくわからないのですが、Lilypad mp3というのにmp3ファイルを入れて使おうかと現段階では考えています)
ショボい音でいいならarduinoだけでもいける。
>246 ちなみに音声ファイルは自分の声や楽器を録音したもの(それぞれ10秒程度)です... PCMAUDIOは3秒が限界と聞いたものでして
もしarduino用の何らかのシールドを考えてるんだとしたら 幅サイズが危険かも。 arduino自体が結構ギリな作りなんだけど シールドって別にサイズ規格があるわけじゃないんで それより若干大きめのものがある。 現に今手元にある某モーターシールドは若干55mmよりでかい。 あと部品高さもある。 亀の子にしたらまず入らない。 lilypadじたいが50mm程らしいのでlilypad mp3が 同サイズなら納まりそうだけど外寸サイズ一緒なのかな? それなら入りそうな気がする。 つか、わざわざマイコンボード使わんでも 1音声1回路1スイッチで作るってのは?
>>248 あぁ、自分で書いてなんだけどarduino板でarduino
使わんって趣旨無視発言やね。訂正撤回。
自作互換機なら間違いでもないよ
画像検索でググれば実装時のイメージがでるんで ggrが、一番早いかも
ArduinoIDEで作って書き込んだAVRを抜き取って 単品で使うってのはどうだろうか 好きなサイズに切ったユニバーサル基板にマイコンとmicroSDカード、 あとはスイッチサイエンスで売ってる小さめのVS1033基板をセットで使えば納まる筈
質問すいません。 自作arduinoをやってみたのですが、 avrdude: stk500_getsync(): not in sync: resp=0x00 というエラーが出て書き込みができなくなりました。 ぐぐってもこれといった解決策は出てこず、数少ない方法を試してみてもダメでした。 USBシリアル変換アダプターを使って書き込んでいて、一回目は普通に何事も無く書き込めたのですが、 二回目でこのエラーが出て、なにか設定が変わってしまったのかとUSB送受信サイズを変更して試している日々を送っています。 USBシリアル変換アダプターはUSBマイクロBメスのものを使っているので、 ここでなにか不具合が発生したのでしょうか?
とんだと思われ
>>253 ブートローダに上書きして飛んだかも?
ブートローダ書き直せ
>>253 TXとRXのピン使ってない?digitalReadとかdigitalReadに
>>253 シリアルモニタが動くなら、変換器側のrxとtxを線で繋いでから文字を送信してみよう。
もし文字が返ってこなかったら変換器がおかしい。返ってくればArduinoがおかしい。
>>254 飛んでしまったんですかね…。ちょっとした事で治ったりした人も居たみたいですけど…。
>>255 ブートローダーを入れなおしてみてもダメでした
>>256 参考にしたサイトではTxとRxも使っていたので今も使用しているのですが、いけませんでしたか?
DTRを1番、Txを2番、Rxを3番、Vccを7番、GNDを8番のピンにつないでいます
>>257 シリアルモニタを使うにはICにプログラムを書き込まないと使えないと思うのですが、
別なやり方があるんですか?
200円くらいのものでトラブル抱えるのも何だし エイヤっと足へし折っちゃえば? なまじ見た目無事に見るから踏ん切りがつかないと思うけどさ。
arduinoのtx,rxは書き込み時に競合したというおぼろげな記憶 tx,rxにつないでるのを外せるならやってみればいいんでない? そんな手間がかかるものでないし
>>259 ATMega328p-puは何個かまとめて買っていたので、
他のICでも試しましたが、どれもダメでした。
なのでUSBシリアル変換アダプター関係か、
ブートローダ関係で間違ってしまったのだと可能性を絞り、
一度は成功しているのでブートローダーは間違っていないと考えました。
なので通信サイズをちまちま変えて試していたのですが耐え切れなくなり皆さんに聞いてみました。
別のUSBコネクタを買えば解決するのかどうかもわからなからないので、アドバイスお願いします
>>260 試してみました。
txとrxを両方外すのと、片方ずつ外すのを試しましたが、
どれも同じエラーメッセージが出ました
pc側の問題ってこと無いっすかね? ボーレート下げてみるとか・・・いま9600位っすか?
>>253 書き込む瞬間にリセットボタン(もちろんPCのじゃなくてArduinoのな)を押しましょう。
usb-シリアルとarduinoの間の結線はテスタで確認した? 一回書いた後にはずれちゃったとかも有り得るよ
まさか競合なりなんなりの理由で COM:がずれてるってことないよね
>>264 ブレッドボードでやっていて、リセットスイッチを作っていなかったので、
追加して試してみました。が、ダメでした。
エラーメッセージでぐぐったらこれで解決する人がいるみたいですが、また違う原因なのでしょうか・・・。
>>265 ブレッドボードでつないでいるので、短絡や開放が起きていたら目で見てわかると思うんですけど、
ブレッドボード内部の方まで調べたほうがいいですか?
>>258 あるよ。
変換器が出した信号が線を通してそのまま変換器に戻ってPC画面の上に表示される。
同じことは純正UnoからICを抜いてデジタル0と1の端子を線で結んでもできる。
私が持ってるUnoの一台はこれができず、それと同じエラーをはいて書き込めない。
もう一台はこれができて、書き込みができる。
目で見てokは当てにならないからなぁ ダメもとでテスタ当ててみれば? arduinoの端子とusb-シリアルの端子の間の導通チェックだけならすぐでしょ 懸念点を一つ一つ丁寧に取り除いて行かないと先に進めないよ エラーメッセージを見た感じだとarduinoと同期取れないって感じだからいくらでも原因が考えられるし
純正arduinoがあるならそっちに書き込めるか試してみるのもいい PC側の問題か回路側の問題か切り分けできる
純正Arduinoには普段通りに書き込めました。 ので純正Arduino UNOからICをはずして、 自分で買ってきたICを入れて書き込めるか試してみたら書き込めました。 これでPC側でも無いことと、ブートローダーも大丈夫だと判明しました。 ありがとうございます 今度は変換器でのシリアルモニタを試してみます そろそろ落ちますので、報告はまた今度になると思います
ってかUNOあればシリアル変換器なくても単品ICにスケッチも書き込める。 念のため
>>248 回答ありがとうございます!
やっぱりもとよりサイズがきついようですね・・・
Lily pad mp3をちょっと試してみることにします、
(音声ファイルが何個入れることができるか不安ではありますが)
274 :
205 :2013/11/14(木) 14:08:59.57 ID:sC654vMw
ttp://arms22.blog91.fc2.com/blog-entry-391.html このサイトを参考にしてカメラでの撮影を試みているのですが、画像の撮影が完了しません。
1.Processingでプログラムを実行
2.何らかのキーを押すとデータの受信を開始
3.Read 〜 bytes ... と表示され転送されていることがわかる
4.いつまで経っても転送が終了しない(何分経ってもRead 〜 64 bytes ...が延々と流れる)
転送が終わったのかと思いキーを押してみても反応がありません。
コンパイルでエラーが出たため、NewSoftSerialをSoftwareSerialに変えて動かしていることが原因なのでしょうか?
Ardiunoは、Flash ROMにブートプログラムを書いておき、それを実行しながら 自身のFlash ROMに実行プログラム(モトローラS形式)をシリアルIFで受信して 書き込むことが出来るのですか? 従来はROM書き込みモードと実行モードは電源オン時に定まりますので、モニタを走らせながらメインプログラムを書き込んで実行ということが出来ません。
x86, 68kなど従来型CPUは、ROM, RAM共にチップ外部バス上に接続し、固定的ブートローダをROMに置き、外部RAM内にプログラムを読み込ませ実行、必要によりHDDを使って仮想メモリ方式でRAMにプログラムをロードして実行。 このタイプもROMプログラムを自身のプログラムで書き込み実行する機能はありません。
方式1 Flash ROMをMPU内部に独立して2バンク配置。1バンクはモニタとブートローダを記憶し、実行は常にこのバンクから行う。 方式2 Flash ROMをMPU内部に1バンク配置。同ROMにはブートローダ、モニタに加え、メインプログラムをリンクして、モトローラS形式で書き込み後、MPU reset解除でモニタ管理下でメインプログラムを実行する。
H8でリリースされたモニタは、モニタを内部ROMに書き込み実行すると、わずか数kByte RAM内にデバッグ対象プログラムをロードできるだけで大きなプログラムのデバッグには実用にならないものでした。無論業務用ICEが市販されていますが高価で自宅の趣味には使えません。
Ardiunoは、このデバックと大きなROMエリアへのプログラム書き込みと実行をどのような方式で実現しているのでしょうか?
うわあなんだかすごいことになっているなあ
「従来は〜出来ません。」みたいな間違った思い込みが根深い人には、一々間違いを 指摘してやる気にもならんな。
いや、簡単なことだろww データシート嫁でww
253です。解決しました! 結論から言うと、 単にリセットピンでプルアップしてなかったのが原因でした。 今度は、なぜ一回目は成功したのかという問題が出て来ましたが、 直ったのでゆっくり考えていきます。 様々なアドバイスありがとうございました!
>>283 ダメでしょう
fa130 5v
でぐぐってみそ
>>285 やっぱりそうだよね。
>>283 に載せたようなモーターをPWM制御するサンプルみたいなのは何個か出てくるけど、
どれもモーターの定格については触れてない。
ただ、実際に回路を組んでモーターに印加される電圧を測定してみたところ最大でも2.9Vぐらいなんだよね。
ttp://d.hatena.ne.jp/nisuseteuryalus2/20101217/1292539369 ここに書いてあるようなことが起こってるんだろうか。
さらに降圧してからモーターに印加したいんだけど、モータードライバの出力側に更に三端子レギュレーターを設置してもいいんかな?
三端子レギュレーターって高速のスイッチングなどには対応できる?
安直だけど自分にはそれぐらいしかアイディアがなくて。
>>286 書き込みがかぶった。
上記の通り実測3V弱なんだよね。
でも、デジタルテスターしかないから本当に最大3Vかどうかわからないんだ。
仮に3V弱であるならば、ミニ四駆でも使われてる電圧だからさほど危険性はないのかもしれないけど、
発熱させたくないからもう少し下げたいな。
デューティー比を低くすれば電圧下げたのと同じことじゃないの?
>>289 いつもそれ思うんだけど電圧も電流も
モーターに流れ込むのは最大値であって
電流も電圧も下がるわけじゃないんでないの?
波形見るとON or OFFの矩形波だと思うんだが。
電圧下げたのと同じってのはモーターの回転が
遅くなるっていう事象の話だと思うんだけど。
pwmとモータの間に平滑回路挟むならわかるけど
そうでないなら電圧・電流下げるのとは全く
違う話だと思うが俺なんか間違ってるかな?
つまり事象的にはモータ回転数は落ちて電圧下げたのと
イコールに見えるけどその実モータにとってはとんでもない
微細感覚での負荷を受け続けてると認識してたんだけど。
このへん詳しくわかる人に俺も解説願いたい。
回路が焼き切れるような電圧ならぶっ壊れるけどさ モーターは発熱で壊れるんだから、PWM制御で定格と同じくらいに設定してあげれば問題ないんじゃないの
マイコンの暴走やプログラムのバグでPWM出力がおかしくなっちゃった場合のことを考えると安全とはいえない
PWMの制御自体は
>>290 に書いてることだと理解してる。
単位時間当たりの平均をとれば
>>289 と同じことだと思うけど、
実際は瞬間的にとは言え定格をはるかに上回った電圧が印加されてるから、
モーターにとってはやさしくないと思ってる。
>>292 hello worldみたいにそれ自体に意味はないけど、マネ事をしながら回路の事を少しでも理解できたらと思ってやってることだから
基本的にバグとかによる安全面は気にしてないかな。
ただ、それぞれのパーツの仕様に合うように電圧を操作したりするのが自分の中で今の課題。
とりあえずモータードライバの出力を
ttp://www.marutsu.co.jp/user/mame/163.htm を参考に1.5V付近まで降圧しようと思ってるんだけど、不適切な回路なんだろうか?
精度とかは気にしてないんで、PWM制御によってモーターが定格付近で速度操作をできることを目的としたい。
>>1 データシート 400頁以上あります。
このCPUはブートローダを0.5kByteほどFlash ROM領域に設けているのが
重要なポイントと予想していますが、
この初心者スレはデータシートを読んで理解しないと何の質問もできないので
しょうか?
初心者がするような質問ではないのと、答えが書いてあるデータシートが目の前にあるのに読むのが面倒くさいという理由からの質問なので、答えてくれる人は少ないでしょう
データシート未読初心者お断りってテンプレ追加な
今日から電車にブレッドボードを持ち込んでarduinoDroidをやってみた。 隣の女性の視線が痛かったが続けてみたよ。 電源はandroidのバスパワーを使わずに別電源の用意が必要かも知れない。 書き込みミスが多かったな...。
>>297 ちょいと窓から手を伸ばして1500V貰えばいいじゃないか
>>299 窓が開かないんで扉の隅からパンタグラフまで、電力を奪いにいくプッチロボから作らないとならんな...。
それを作るときの電力が問題だ
>>293 モータにかかる電圧を1V程度下げたいなら整流用ダイオードがいいよ
逆転の必要がないならドライバICよりパワーFETの方がいいよ
>>303 一本あたり0.6Vぐらい降圧するってやつだよね?
1S1588ならストックしてるけど電流量足りないんで、当分実験はできないなぁ。
理想は狙った電圧でモーターをPWM制御なんだけど、
出力電圧可変型3端子レギュレータ(NJM317)で実現するのは不適切なのかな?
現状手持ちの部品で組めるのはそれぐらいしかなくて。
>>304 LM317の使用例に交流入出力の安定化電源があるから数100Hzくらいなら動くと思う
モーターに正確な電圧なんて無意味だとしか思えんけど何事も経験だ
>>306 少しは複雑に考えてください。
データシートに書かれている制限事項。
モーター用の電源Vsは、速度制御信号の Vref以上ないといけない。
Vrefは5Vなのでモーター用電源は5V以上必要。
>>305 正確というより上限を守りたいんだよね。
オシロとかあれば制御時にどれだけの電圧がモーターに出力されてるかわかるんだろうけど、
デジタルテスターではよくわからないんだよね。
一応実測3V弱を示すものの、高速のスイッチングを補完した値だとしたら瞬間とはいえそれ以上の電圧が印加されてることになるからさ。
レギュレーター入れてやれば知らないうちに予想以上の電圧がかかってましたということを避けられるかなと。
>>306 そう、電源電圧を別個にすればいいと最初は思ってたんだ。
だからモータードライバの制御はarduinoの5Vでやって、モーター用電源は電池1本か2本でと。
で、実際にやってみたら動かなくて、よくよく調べてみたら、
モーター駆動用電源はロジック要電源よりも高くなければいけないらしい。
なので今回の場合はモーター用電源も5V以上を使用せざるを得ない状況なのよ。
とりあえずモータードライバとモーターの間にレギュレーターいれて明日実験してみるよ。
みんなありがとう。
>>307 手持ちのレギュレータ云々より
>>306 の方がよっぽど複雑に見えるけど。
出力電源が信用できないんだったら
置き換えれば?って言ってくれてんのに
複雑に考えてくださいって・・・
つかもうarduino関係ないじゃん。
最初から関係なかった気もするけど。
arduinoでpwm作ってってはなしならわかるけど
ドライバ叩くだけだったらpicでもなんでもいいわけだし
更に内容がpwmですらなくなってる。
>>309 関係ない質問に付きあわせて申し訳なかった。
でも、わかってると思うけど
>>307 は質問主である俺じゃないからね?
>>302 拝見した限り、技術もマナーも問題があるので
ここで聞くより自分で調べるのが、遥かに良いですよ。
ここは糞スレ認定です。
今度はちゃんとPWMについて教えて欲しいんだけど、delayとPWM制御って共存できないという理解で合ってる? delayで処理を止めれる間ってモータードライバに出力してるPWM制御のパルスって停止するんだよね? 例えば、約1秒毎にモーターのデューティ比を変えたいと考えたら、 delay(1000)で一秒周期にして周回ごとに制御を切り替えようとしても無理だよね? これってソフトウエアだけでどうやって解決したらいいかな?
Arduinoについてはあまり知らないけど、PWMってマイコンの設定で出力されているんじゃないの? PWMの設定をしたらソフトウェア上でdelayかけても出力されっぱなしなような気がするんだけど
ヒント 割込み
論より証拠ということで簡単にやってみた
8bitタイマカウンタレジスタに設定して出力してるんですね
カウンタ値がある値になると割込みがかかってトグル出力するようになってる
スケッチ
/////////////////////////
int oPWM = 3; // 490Hz
int oTGL = 4;
void setup(){
pinMode(oTGL,OUTPUT);
analogWrite(oPWM, 100);
}
void loop(){
digitalWrite(oTGL,HIGH);
delay(2);
digitalWrite(oTGL,LOW);
delay(2);
}
/////////////////////////
波形(見づらい)
http://up.null-x.me/poverty/img/poverty105669.jpg
>>313 なるほど、処理自体は遅延させていても、その間のanalogWriteは更新されないだけで有効になってるってことか。
>>314 割り込みとか詳しいわけじゃないんだけど、調べたら割り込みの概念みたいなのは無いってのを見かけたからさ。
だから無理なのかなと思ってたんだよね。
>>315 ありがとう!
わざわざ実験までしてもらったみたいで申し訳ない。
改めてarduino便利だと感じるよ。
317 :
774ワット発電中さん :2013/11/16(土) 19:21:00.31 ID:ZlHOqJnQ
初めまして。Arduinoで単三電池2本(1.5V + 1.5V)の電池残量を確認したいのですが どうやればいいのでしょうか?webでなかなか情報がなく困っています。 アナログインと電池、間に抵抗を繋げて値を確認するみたいなんですが...
電圧を測ればいいです
inoとunoが時々ゴッチャになるんですが、いい覚え方ないですか?
平仮名で書いて覚える
あるで〜の
書店に"arduinoをはじめよう"を買いに行った。 メモを見せてこの本ありますか? って聞くと少々お待ちくださいとかいうて その店員さん、店長っぽい人に 「アンドロイド始めようって本探しているみたいなんでけど」 と。 すかさず「違う、アルドゥイーノっす。スマホ関係ないです」 とツッコミを入れたんだが連れてかれた場所は スマホ入門書コーナー。 このクソ店員共の、終始俺がアンドロイドを読み間違えてると 思っていやがるな感がすごかった。 やっぱ田舎の店はあかんなぁ。
ISBNもメモっていかないと
>>322 Arduinoをはじめようが置いてありそうな本屋があるだけでもええやないか
久々にPIC使ったが初期設定がやはりめんどい。 PSOCの様にコードジェネレータがある程度あると楽なのだが...。 arduinoはその部分はかなり使いやすいな
一般的じゃないんだしアンドロイドと間違えてると思われても仕方ない罠 筆談しろよ
一般に認知されるには正式なカタカナ表記が必要だな。
つーか一般人はandroidが何かすら怪しいから。
R•田中一郎くんの事ですね
arduinoの起動直後の挙動がイマイチわからないので教えて欲しい。
簡単なこの回路を再現してみたんだけど、
ttp://kousaku-kousaku.blogspot.jp/2008/06/arduino-dcta7291p.html 起動直後1秒弱PWM制御が効かない時間がある。
例えば、このスケッチだと可変抵抗を中心ぐらいにすると回転は止まるんだけど、
その状態でリセットすると1秒ぐらいフルパワーでモーターが回って、その後本来のPWM制御値に落ち着いてるみたい。
スケッチを見ても遅延とかかけてるわけではないから、起動直後はarduinoの3番ピンがHIGHの状態で張り付いてるんじゃないかと思う。
setup関数にloop関数の静止部分で使われてる数行をコピペしても変化はないし、
ソフト側ではどうもできないのかと手を拱いています。
アドバイスいただけませんでしょうか。
ブートローダーいじれ
>>330 初心者でも使えるように配慮したブートローダーが最初に動くんだからしょうがない
ピンの番号変えるとか5番6番をプルダウンしておくとか
>>332 そもそもブートローダーが何やってるかを知りたくて調べてみたんだけど
ネット上にはそういった情報はみつからんね・・・。
>ピンの番号変えるとか5番6番をプルダウンしておくとか
これってPWMで使用してるピンをarduinoの3番から他のPWM端子に変えればいいってこと?
>>330 デジタル1番ピンの線、移動。
D0、D1は通信に使うから、開けておくのが吉。
1000msくらいディレイしてみるとかどうよ
>>334 ありがとう!
arduinoの1,2番のピンを4,5番ピンに移動させたら治った。
リファレンスにない関数とかってソースコード読んで、どいう数値送るか調べるしかないですよね?
>>337 互換性が無くなるのでリファレンスに無い関数を呼んだらダメでしょ。
そこまで する人はarduino環境いらなく無い? デバッグ機能が無いし
>>339 arduinoパーション間、AVRチップ間、他CPUのarduino-API互換機
。
では、リファレンスに載っているものは違いを明示したり同じ動きになるように工夫されている。
下位関数は、廃止されたり仕様変更される可能性が高いし、
arduinoのボード指定でクラスライブラリーは入れ替わるからUNOで動いてもMEGAで動くとは限らない
キーボードスルーさせるのにArduino Leonardoでキー変換とかしないなら、 直接キーコードのまま送っちゃったほうが楽なのかなと・・・。
自分で使うだけなら好きにすればいいよ
簡単なことでも難しいですね・・・。
>>340 >arduinoのボード指定でクラスライブラリーは入れ替わるからUNOで動いてもMEGAで動くとは限らない
個人に制限を課す理由とも思えませんが?
他人が書いたソースが何してるのかわからないのは、 まだ勉強不足ってことでいいんですよね?w
>>345 他人が書いたソースが糞過ぎてわけわからん可能性もあるよ
>>346 同じ名前になってる関数追ってけば大体わかるもんなんですよね?
>>348 関数って自分でわかりやすい名前でつくってあったりするから、名前っていっちゃいました。
>>344 制限するとかじゃなくて、そこまでするならarduinoで有る必要がないからAVR Studioとか使ったら?
>>350 AVRのレジスタ弄ってるスケッチとか独自ライブラリとか良く見掛けるけど、そいうのも
arduinoで有る必要がないからAVR Studioとか使うべきなの?
arduinoってシールドが使えて、IC単体とかでユニバーサル基盤とか基盤起こしたりしないでいいってのも利点な気もする。
業務じゃなく個人でやるなら好きにしろとしか その代わり自己流を突き進めば突き進むほどググっても情報が見つかり辛くなるしにちゃんやその他掲示板でも他の人と話が合わなくなるよ 全部自分で調べて自分で作る能力が必要
USB Host Shield 2.0 for Arduinoの関数って自分でどいう動作するのか確かめないとですよね・・・。
>>351 自分で作るなら好きにしたらよい。
非公開API使うとarduinoのバーションが上がっただけで動かなくなるかもしれないし原因を見つけるが大変だよって心配なだけです。
>>355 > 非公開API使うとarduinoのバーションが上がっただけで動かなくなるかもしれないし原因を
> 見つけるが大変だよって心配なだけです。
それは「互換性が無くなるのでリファレンスに無い関数を呼んだらダメ」ってのとは違う話ですね。
そんな事にファビるなよ
Arduino Playground で拾えるライブラリだけにしとけば?
pmwの高速化ぐらいは標準で用意してくれていいのよ
I2cで1バイトずつ送ったのを、受信するのってWire.readひとつに付きで1バイトでいいんですかね・・・
秋月のUSBシリアル通信デバイスを使って、自作のarduino互換機を動かすと正常に動く。 でも、PCの電源を改造して作った電源装置で電源供給をすると一秒毎ぐらいにリセットがかかってしまってるみたいで初期状態に戻ってしまう。 ブレッドボードでarduino unoだと動いたんだけど、プリント基板作って互換機ごと埋め込んだらこうなった。 デバッグしてる段階だから、スケッチもハード構成も単純で、スイッチ押したら状態が遷移してその状態ごとに状態を示すLEDが一つずつ光る程度のもの。 電源装置で電源供給する際はシリアル通信に使うgnd、acc、rst、rxd、txdの端子部のgnd、accの全く同じ位置から供給してる。 同じ場所の電圧を測るとシリアル通信デバイスで5.02v、電源装置だと5.10vで、動作に影響が出るような差ではないと思うんだけど。 朝の電車の中とかでもずっと思い返して原因を考えていたんだけど、わからない。 帰ったら改めて確認はするけど、シリアル通信する機械で動作確認はできてるから接触不良やパターン間違いはないはず。 不思議現象すぎて想像がつかない。
書き忘れた。 使ってるのはATMEGA328P-PUです。
何らかの理由で電源電圧が下がってるとか電流量が足りてないとか パスコン入れてみるよろし
電流が足りない可能性が大
れすありがとう。 一応コンデンサ追加することも考えたんだけど、まさかLEDとarduino程度で電圧降下するのかと思って選択肢から除外してた。 でもそのシリアル通信機を繋いでるPCのUSBから電源取り出しても同じ現象が起こるんだよね。 書いてて思ったが、モーターまだ付けてないけどモータードライバICは乗ってるからそこが電力食ってるのかもしれん。 パスコンの選定とか勉強してくる。
PC電源は、最小負荷電流以上流さないと不安定になるよ。 ゼロでいいやつもあるけど、
そうなのか。 確かに改造した電源ではそれしか繋いでないから、理想通りの動きをしてるとしたら200mAも流れてないかも。 でも、起動中のPCのUSB端子から電源とっても同じ現象は起きたから…どうなんだろう。 まぁでも市販品のunoでは想定通りの動きをしたからコンデンサの有無かもしれん。 とりあえず帰ったらvccとgndに0.1uF突っ込んでみるよ。
>>367 一緒に47μの電解コンデンサーもパラにしとこう。結構いいおまじないになるよ。
ありがとう。 確か家に転がってたから0.1でダメだったらつけてみるよ。 自分はunoの回路図の真似をして考えもなしに0.1uつけようと思ったんだけど、 その辺のおまじない的選定って定石みたいなのがあるの? 本当は周波数とか考慮しなければいけない見たいだけど、単純にたくさんパラで繋いでやればパスコンとしての性能は上がる気がするけど。
さっき帰宅して試してみたところパスコンの追加で何とかなった。 最初0.1のセラミック・コンデンサ追加したんだけど状況は変わらなくて半ばあきらめながら47uの電解コンデンサ追加したら動くようになった。 unoのパスコンって0.1uだけじゃないんだね。
まずマイコンの電源端子直近にセラコンは必須だし、 電源からケーブルが伸びるような用途なら電解コンも必須。
モータのとこにもね
Arduino UNO R3に、Arduino Motor Shield R3を接続すれば ネットに転がってるサンプルプログラムを入れたらすぐにモーター回りますか? 今のドライバが上手く動かないので、純正を使おうと思っているのです
>>373 原因がわからないのでは
絶対に回りますなんて保証誰もできない気がしますけど。
>>373 >Arduino UNO R3に、Arduino Motor Shield R3を接続すれば
>ネットに転がってるサンプルプログラムを入れたらすぐにモーター回りますか?
回りません。モーター回すには最低限電源は必要。
>今のドライバが上手く動かないので、純正を使おうと思っているのです
電源は繋いでますか?
基地外はスルー
>>375 言葉足らずでした。電源は繋げた状態です。
今のドライバは電源をつなげても動かないので、動くドライバが必要なんです。
壊れたか、プログラムが変か、SPIできてないか…LEDもついてない組み込み系なので
原因が不明です。
モーター駆動の電源を、アルデノボードから引いていませんか?
「今のドライバ」の品番を提示できますか?
モータを繋げないでドライバの出力端子にテスタを当ててみたら? プログラム通りに電圧が来てる→電流が足りない or モータが壊れてる 電圧コネー→ドライバ or arduinoのプログラムがおかしい
>>377 >壊れたか、プログラムが変か、SPIできてないか
後ろ2つについては確認できるだろ。
382 :
294 :2013/11/23(土) 16:32:21.59 ID:oi7YOTk+
>>1 自分で調べて解決しました。
400頁を越すようなデータシート読むことはしていません。
そのような他人を愚弄するようなレスでしかも全く有用でない
助言をすることがスレの主催者たちがいることを遺憾に感じました。
親切なギブアンドテイクの考え方に立った情報交換、コミュニケーション力
を身につけて下さい。
毎週「私は馬鹿です」って書き込むのが義務なの?
>>382 なぜ自分だけ情報が貰えないのか、考えたことはあるかな?
去廼NO買ったときはステッカーが封入されてたけど 先週追加購入したときは入ってませんでした。 あれってなんかのキャンペーン中だったんすか?
去年 UNO がなんかおかしな表示に^^;
もしかしてatok?
>>387 いや、アンドロタブ上でのぐぐる日本語入力っす
自分で調べりゃ解決することを自分では苦労せずに他人まかせにしたわけか。
調べはしてみたけどキャンペーンで検索かけると 値下げの記述ばかり。 シールではシールドばかりヒットしてやはり見つからず ステッカーでもやはり見つかりませんでした。 別に他人任せにするつもりはなけど そんな言い方されるほどひどい質問した とは思ってなかったのですが・・・ 失礼いたしました。
自作ケースにシール貼ろうかなと思ったがシールが行方不明、 いい加減部屋を掃除せねば
ワイヤレスSDシールドのpwrが強く光っていないということはarduino側から上手く電源供給できていないってことでいいのかな?
394 :
774ワット発電中さん :2013/11/24(日) 15:30:22.24 ID:GiHkaQTP
>>392 だけど詳細に書きます
UNO R3にワイヤレスSDシールド乗せてxbee wifi(PCB)使ってるんだけど
電源供給のためにUSB繋げるとSDシールドのpwr項のLEDが強く光ったり弱く光ったりする
強く光ってるのが正常で、この時はちゃんとxbee wifiは使えてる(x-ctuでも認識する)
弱く光っているときはx-ctuで認識されず使えていないのでワイヤレスSDシールドの故障を疑ってる
あるいはコンデンサ追加しろ、という話をネット上で見かけるけどUNO+SDシールドだけでも必要なのか
分からないので何かご存知の方がいれば教えて頂ければな、と
395 :
392 :2013/11/24(日) 15:34:02.01 ID:GiHkaQTP
書き忘れ pwr項のLEDが弱く光っている時はSDシールドかxbee wifi本体のどちらかからジーっという音がする
変な音がするというのは どっかが壊れかけてるか手遅れのサイン 返品交換オススメ
xbee wifiは電流バカ食いするから、定格2Aの電源で駆動する必要がある。 USB給電はダメ。
398 :
774ワット発電中さん :2013/11/24(日) 19:00:16.68 ID:4/Td7uaR
trinket買ったけどmac book airだとusbで認識してくれない。 ハブ噛ませてるのに。
>>397 調べるといっぱいあるのね xbee wifiの消費電流問題はかなり深刻なんだね
とりあえずコンデンサかまして動くかどうかで問題の切り分けしてみる
1つのキーボードを2つのPCにキーボードに入力したいって言ってた者なんだけど、 人のコードいじってHIDコード受信のとこをI2cに入れ替えて動いたんですが、 受信側で void receiveEvent (int howMany) { for (uint8_t i = 0; i < howMany; i++) { bufwire [i] = Wire.read (); } // end of for loo wiretocode(bufwire); <<a } // end of receiveEvent でまず受信して関数に渡して 元のキーボード受信が*bufっなってたから同じように関数の型に*で指定したんだけども、 void wiretocode(uint8_t *buf_wire) { for ( int i=0; i<8; i++) { reportHost[i] = buf_wire[i]; } } これで元のと同じように動いてるんですけど サイトみて調べてると<<aの所の括弧の名前のまえに&付けてるのが多いけど 付けたらコンパイル通らないのでつけてないんだけどこれで問題ないのかな? いまいち理解できない・・・
配列はその名前単体で先頭アドレスを意味するから&を付けるのは間違い Arduino言語の基盤はC/C++だから、もやもやするならK&Rでも読んで Cの勉強するのがオススメ
ちなみにbufwireと&bufwire[0]は同じ意味なんだけどそれを見たのかな どのみちそういう疑問が出てきたならArduinoから一旦離れて 最低限C言語は一通りやっとくべき
いまさらK&Rはないでしょw リファレンスはH&SのCリファレンスマニュアルで、入門書はK&R以外ならなんでもいい。
ありがとう。 やっぱり基本からやらないとですね・・・ ネット検索していたら、 参照渡しってのが渡した先の引数名にアスタリスク入ってて本のと同じ感じになるな? ってやってみたんですけど、&が特に無くても動くのでなんでかなって そいうのってみなさん本とか読んだりして覚えたんです?
>配列はその名前単体で先頭アドレスを意味するから&を付けるのは間違い というのは嘘。&を付けても間違いではない。 K&R時代からのプログラムの互換性のために許容されている。
>>405 呼び出し側で&を付けるなら、呼び出される側は、*がもうひとつ必要だし、そこで使うときも
(*buf_wire)[i]などとする必要がある。
呼び出された側で領域を確保しなおすなど、ボインタ変数を書きかえる必要があれば、そうする。
アセンブラだと変数でも配列でもラベルでしかないのに 変数にアドレス入れたものが配列になることが未だに理解できない
清武 鈴木 大黒 豊田 松居
412 :
774ワット発電中さん :2013/11/27(水) 21:38:47.95 ID:5ne4q4QG
age
現在、firmataを用いてprocessingとarduinoを繋げて赤外線学習リモコンを作ろうとしています。 arduino単体での学習リモコンの資料はいくつか見つけたのですが、prcessingと連携させた際の資料がなく困っています どこか参考になるサイト等がありましたら教えてください。
本買え。いくつも出てる
いや、別々に調べてマージしてくれよ。 ドンピシャなもの見つけて使うだけか?
416 :
774ワット発電中さん :2013/11/29(金) 08:51:45.94 ID:/NSWAXh/
福岡 大分 立川 横田 代々木
MIDIを受信して、例えば10chのC1の音が鳴ったらD2に、D1の音が鳴ったらD3にと出力するものを作りたいのですがMIDIライブラリの使い方がわかりません。 検索してもMIDI出力する使い方ばかり出るのでどこか参考になるサイトなどお教え下さい。
419 :
774ワット発電中さん :2013/11/29(金) 18:41:34.01 ID:siSiX57j
Amazonで500円位のUSBMidiアダプタからMidiを受け取ったら上手く動かない時があったよ 安物だと規格に則ったデータが出力されてないらしい 自分のプログラムが悪いのかと思ってハマったわ
>>415 そのとおり。
最近の偏差値最低ランク頭では、
「参考になる」っていうのは「コピーできる」っていう意味だからね。
「調べる」=「ググる」
「勉強する」=「丸暗記する」
その他色々・・・
努力や精神論は犬にでも食わせてしまえ0
423 :
774ワット発電中さん :2013/11/30(土) 16:05:56.25 ID:mX9RaD/m
そうして犬にも劣るようになる
それはない
丸暗記できるは、プログラミングする人には、極めて重要な能力たな。十分な能力だ。
426 :
95 :2013/11/30(土) 23:28:31.38 ID:J1BPWtrI
オシロいいな
>>428 緑オシロ、音声周波数帯なら使える。キットだけどね。
亀塚 大西 原宿 矢野 前野
ArduinoってpulseIn同時に二つ使えないんですかね? 2.4GHzの受信機からの信号を、pulseIn(5,HIGH,7000)とpulseIn(6,HIGH,7000)にしてそれぞれをint型の変数に代入して、Serial.printlnで読んでるんですが片方0とかに固定されてしまう…
ラジコン用の2.4GHzレシーバから2つ生やしてるけど使えてるぞ どっかミスってんじゃね?
>>431 pulseIn()を一回呼んだら検出するかタイムアウトまで戻ってこないから
パルスが重なっていたりラジコンのプロポみたいに立ち上がりと立ち下りが同時だとムリ
AVR自体がキャプチャ1個しか持っていないからチョット工夫してすでに立ち上がっていたら別の方法で測る
arduinoの互換機作って、秋月のFT232RL経由で書き込みやシリアルモニタチングをしてるんだけど、 USBシリアル変換の部分って簡単に作れないんだろうか? 互換機に組み込みたいんだけど、なかなか情報が出てこなくて。 USBを直接させるmegabordなるものもあるらしいけど、 ATMEGAのピンアサインがarduinoのピンアサインと異なるらしいし。
>>433 なるほど。それかpulseIn以外にパルス幅測定する方法ってありますか?
>>434 お手本がそこにあるのにそれ以上簡単にって
どういうのを求めてる?
>>435 millis()使ってパルス幅を求めるスケッチを自分で作ったら良いと思うよ。
microの方がよくね? いずれにしても精度良くないらしいけど
>>434 それは何、えっとコスト下げたいとかそういった目的で?
>>435 データシートのアナログ入力と16bitタイマカウンタ捕獲入力部のところを見て自分でライブラリ作ってください
>>436 お手本って、FT232RLと同じものを作れってこと?
それともmegabordをってこと?
調べてたらCDC232ってのを自作してる人がいるんだけど、
arduinoを動かすギリギリの電力しかダメみたいで。
FT232RLと同等ぐらいの電力があればなぁと。
megabordを使用して焼いたATMEGAってarduinoと互換性ないよね?
あんまり情報がみつからなくて・・・。
>>439 そりゃ安く作れればそれに越したことは無いけど、
一番の目的はいちいちFT232RLを接続すること無く実機のようにUSB刺せたら煩わしくないなぁと。
実機以外にUSB直接させるようなarduino互換機が欲しくてさ。
ごめん、megabordじゃなくてmetaboardか。
FT232モジュール差したままにすればいいんでねーの? 必要ならガムテでぐるぐるまきにしてさ。
>>443 一枚の基板に収めてみたいという興味じゃダメ?
FT232一個しか持ってないし・・・。
>>441 そうそう。なんでわざわざ外すの?
USBすぐ挿せる事がが優先ならはずさなきゃいい。
で、数がいるなら秋月のモジュールをもとにいらない部分オミットして
実装しちゃえばいいじゃない。
>>445 わざわざ外すというより、arduinoであれば情報もmetaに比べたら豊富にあるし、
スケッチをそのまま使用できるじゃん?
入出力ピンの設定とか。
>>434 FT232RL USBシリアル変換モジュールの説明書に回路図も載ってるのにそれ以上何の情報が足らないの?
やっぱそれしかないか。 しかもそのIC単体で700円ってことは秋月のFT232RL搭載した基板ってかなりお得なんだね。 そのICの足のピッチでエッチングできるか試してみるわ。
あ、共立だと700えんだけど、秋月だと300円か。
arduinoモドキのjapaninoてやつは安い違うICでやってるし arduino互換機として使うだけならFTDIにこだわる必要ないよ FTDIのはそのままAVRライタにもなるってのが売りだから
451 :
774ワット発電中さん :2013/12/03(火) 12:23:33.49 ID:/eizGN2Z
横浜 橋倉 大前 亀屋 宮根
壁についてる電灯のON/OFFスイッチをarduinoで制御したいのですが、 サーボで無理やりやっている例しか見つからず困っています。 手動でもarduino経由でもON/OFFを切り替えたいので、壁のスイッチをプッシュプッシュで ONとOFFが切り替わるようなスイッチへ交換してしまおうかとも考えています。 そのようなスイッチなら、arduinoにつなげたリレーでプッシュ動作を代行できるでしょうか?
>>452 壁のスイッチを交換て電気工事士の資格持ってるの?
通達だかなんかが出て、スイッチ交換程度なら資格不要となったのでは。
はじめるに当たって、何を買ったらいい? LCD1602使った汎用タコメーター作ってみたい。
まず壁のスイッチをリモコン制御タイプに交換するのがラクなんじゃない
バレなきゃ犯罪じゃないんですよ
電気工事士は持ってないけど、コンセントの交換したことあるよ 簡単に交換できるようになってんのな
スイッチなんかは被覆剥いて挿し込むだけだな まぁ事故って発覚したら自己責任で済まないのがアレだけど
うちはリモコンで明るさコントロールできる天井灯をH8から赤外線LEDつかってコントロールしてたわ。
462 :
452 :2013/12/03(火) 21:06:05.54 ID:7Z359/nV
壁のスイッチを代わりに押してくれるスイッチロボを作るんか
464 :
454 :2013/12/03(火) 21:28:12.56 ID:cYJr4Qty
そうそう、その軽微な範囲なら法律的にはOK。 でも、ちゃんと認定された製品に限ります。リレーに自分で配線した物とかは当然ダメ
ネットワークでオンオフ出来る電源タップを使うとかは? 個人的にはソレノイドでスイッチ押すマシンとかが好きだな
467 :
452 :2013/12/03(火) 21:58:48.91 ID:7Z359/nV
>>463 ,465
サーボを使う例はいくつかありますが、もっと良い方法がないか考察中です。
>>466 法律を守ってやろうとしたらこれが最適解みたいです。が、残念ながらとても高価ですね。
スイッチ交換の工事費もけっこう持って行かれそう。
壁のスイッチをサーボでぽちぽちする 別に買ってきたスイッチをarduinoに繋ぐ arduinoに繋がったスイッチをぽちぽちするとサーボが壁のスイッチをぽちぽちするプログラムを組む これだ!
さっき書いたんだけど部屋の天井灯をリモコン付の奴にしてリモコン信号をArduinoで再現して操作するのじゃだめなの? リモコン式天井灯なんて安いの一杯あるでしょ? 最新式のLEDとか付けちゃってるというならもうすでにリモコン化されてるだろうから、 Aruduinoで赤外線受信の仕掛けを組んでその信号パターンで操作するとか
Arduinoにシリアル送信すると、ボールが落ちたりドミノ倒したりした後に、最終的にリモコンのボタン押す的な装置を
>>431 です。
pulseIn(5,HIGH,7000)をpulseIn(5,HIGH,15000)にしたら両方読み込めました。
ありがとうございました。
>>470 間に猫のしっぽを踏むとかの運要素も欲しいな
そこでピタゴラスイッチ
>>474 マイクロってのを初めて知ったw
小さそうでいいな。
何ということだ、フリスクのケースをすぐにでも一回り小さくしなければ!
>>477 最近FRISK大きくなってカンカンケース入り
のが出ましたよw
>>475 早速注文してみました。
ブレッドボード向けの製品だったんすねー。
卓上がスッキリしそうw
結局移転か
安くて小さいなら、中華にたくさんあるけどねぇ。
raspberry pi 出てから、方向性がブレブレだな。しかし。
tiny85可愛いよtiny85
485 :
774ワット発電中さん :2013/12/07(土) 10:10:21.60 ID:CG1puSEU
横浜港 徳州 住友 公金 明治
Arduino mega2560をUSBに刺すだけでえらく熱くなるんだけど、壊れてる?Driver入れても不明なUSBデバイスとしか出なくて。やらかしたかな。
壊れてるんはどっちだろうな(;´∀`)
megaのどこが熱くなるの? 気になる。
PCに刺してもIDEでcomポートが認識出来なくて、あれって思っていたら、Arduino側のUSBコネクタが熱くなっているのに気づいて、ビビって抜いたんだけど。 Arduino初めてなので、もう少しググって調べてみます。
486です。 USBケーブルを変えたら、すんなり動いてくれました。入門キットの付属品なので、それなりのモノだったのかな。 どっちが壊れてるのか、と指摘してもらって助かりました。ありがとう。
一定時間おきにjpegカメラモジュールで写真を撮影して、そのデータをxbeeかなんかで無線でpcに送りたいんだけど、それって処理能力と通信量的に可能? その処理するためにはunoとdueどっちが良いのかな?どっちでもきつい?
>それって処理能力と通信量的に可能? 可能 >その処理するためにはunoとdueどっちが良いのかな? 安いほうでいいだろう
盗撮画像うぷ(゚∀゚)
>>492 おおお!早速ありがとうございます!
可能とは!
結構簡単に出来るもの?
それと、dueとunoだと同じ画像サイズだったら結構転送時間に差が出る?
江藤 福山 福永 有村 小坂
498 :
774ワット発電中さん :2013/12/10(火) 22:10:52.29 ID:PhgvDWBh
監視と盗撮って同じようなもんだろ?
監視:ちゃんと見てるからな!へんな事するなよ! 盗撮:誰も見てないから安心してね ちがうじゃん
盗撮は見るの前提だしなぁ
なんか、盗撮の方に話が逸れてしまってるとこ申し訳ないんだけど、dueじゃなくてunoでも全く問題ないかな...?
その辺判断できない奴には何使ったところで無理だろ
初心者熱烈歓迎スレなのに冷たい... ちゃんとした所から経費で落とさなきゃいけないから、取りあえず買ってみて試すってのが出来ないのよね なんだかあんまりネットにも情報無い感じだったし、教えてもらえればなあと思ったんどけど
UNO 2500 + XBee 4000 + XBee シールド 1200 + カメラ 5000(?) ケーシングなども考えると 仕事用ならWIFIカメラの方が合ってるかもしれん
>>503 ・ちゃんとした所から経費が出る
・取りあえず買ってみて試すってのが出来ない
信頼と実績のあるとこに外注する以外ないだろ
経費で落ちるなら両方買って試せばいいやん、アホらしい
うちは、メーカーの下請けソフト屋だけど予備実験的な部材や急ぎの物は、うちの会社に買わしよる。 もちろん請求してお金はくれるが稟議を通すための予備実験には予算がないみたいね。
>>503 まだ仕様が明確に決まってないなら、Dueを買っちゃえば?
というかカメラモジュールの解像度とか、何fpsで処理させたいとかわからなきゃ答えるの難しい気が
出来ることならdueにしたいなあと思ってるんだけど、dueだとシールドがあんま無いよなあとも思ってるんだけど、そこらへんはどうなんですかね? なんども申し訳ないけど、これで最後の質問!
とりあえずXBeeシールドが対応してるか調べたら? 使うシールドってそれくらいじゃないかと思うんだけど と言うか聞いてることがフワフワしすぎてなんとも答えにくいんだけど 仕様を明確になってる? カメラだったら、解像度は?撮像スピードは?マイコンとの通信方式は?とか 無線(XBee?)だったら、何mまで飛ばす必要がある?何bpsの通信速度がいる?とか マイコンだったら、必要なRAM容量は?画像処理は必要?とか その他、必要なセンサや機能はないか?開発期間と予算は?流用できるノウハウはあるか? それらの要求仕様をまとまってるなら 「このカメラとXBeeで何fpsでこうこうこういう処理をさせたいんだけど可能?」 ってなって答えやすい質問になるんだけども 経費で落とすってんなら遊びじゃなくて仕事だからそれくらいやってないとさすがにまずい やってるんならすまんけど
そこいらへんやりたいならラズビアンかBBBの方が楽そう
仕事を左右するクリティカルな事柄をよりによって2chで聞いちゃうとか意味がわかんね ココで嘘情報つかまされたら会社になんつって弁明するつもりなの? 「2chで騙されたサーセン」で許される社風なの?
そんなん 知合いの営業に聞こうが本屋で立ち読みした知識だろうが買って読んだ本だろうが おんなじだろ。 上司に聞いてその通りに作ったケースですら。 「上司に騙されたサーセン」で通るとでも?
言質を取れるかどうかの違いがあるので一緒では無い ソースが何であれ裏を取らないのはNG
そんなもん自己責任なんやから自分のせいに決まってるやろ この程度で問題になる責任なんて気にせんでええわ
>>511 指摘ありがとう。言うとおりだよね。
まだ構想段階で0から始めようとしてるから仕様書のレベルではないんだよね。
シールドがそろってないからdue購入を躊躇ってる。ライブラリとシールド豊富なのがArduinoのメリットだと思ってるので。
することは、カメラで1分置きとかで写真撮って、Xbeeでパソコンに送信。カメラの解像度は通信状況によって調整するつもり。画像処理は今のところ考えてない。経験則で、arduinoだけだとキツいだろうなと思ってる。とりあえずしたいのは写真撮って送るだけ。
それにおいて、dueとunoで差が出るものなのかな?っていう感じです。
いつまで悩んでんだよ鬱陶しい奴だな わかんねぇんならデカイ方買っとけ
いやだって聞きたいことがあんまり聞けてなかったからさ。しつこかったならすまんかった。 でもそういう返事するくらいなら教えてくれよ〜
だからデカイ方だっつってんじゃん
>>517 クロックが早いdueの方が有利だと思う
3.3vはなんとかなるでしょ
盗撮や監視用でそのそのものズバリなものがあるしな 既製品にはない工夫をarduinoでしたいとかなら分かるけど
>>517 仕様書のレベルになってないのにどちらが最適かなんてエスパーにしかわからんよ
二つの違いが知りたいなら公式のスペック見ればいいじゃない
>>517 俺だったらラズパイにwebカメラを繋ぐ
Arduino+シリアルカメラモジュール
とか
Arduino+USBホスト+webカメラ
でも不可能ではないだろうけど状況によってカメラを変えるってのが引っかかるな
どっちかでも両方でもいいからとにかく買って、 うまくいったら経費で請求、駄目だった分は 自分のオモチャにすればいいんじゃね? いつまでに納品か知らんが、モノが決まったからといって さくさく完成させられそうな雰囲気じゃねえしw
どうみてもできそうなモノでできそうなコトを書いているようにしか見えないから
俺も
>>525 に賛成だな。
現時点の進捗速度を考えると、アルソックに、頼む方が遥かに安上がりかもしれん。 人件費的に
ああ、仕事の出来無そうな奴(※本人はデキると勘違いしている)って どこにでも居るんだな。って思った。
なぜ僕は煽られてるのでしょう... 抽象的な質問なので、抽象的に周辺をざっくり教えてもらえればなと思ったけど、なんかそんな感じの聞き方が良くなさそうなのでとりあえず自分でやってみるわ。 大学で電子工作の方法って習わなかったからさあ、難しいねえ。理論ばっかだったからさ。 意見くれた方々ありがとうございましたー!
電子工学科卒業したのに何の回路も作れない知人を思い出した。
でもそういうやつに限って案外良いところに就職してたりするんだよね、おかしな国です
そして、あなたも、 電子工作して遊べる羨ましい会社だな。材料まで経費とは
>>531 いや別に自分で回路作れなくてもいいんだけどさ、せっかくの機会と設備環境が無駄になるじゃん。
ちなみにそいつは3ヶ月で無職のパチンカスになったよ
>>533 そうだね。
俺も勉強して回答する側に回りたいなー。
みなさんありがとうございました!
ネットに情報がないと自分がやってる行為が意味のある事なのか不安になるよね 病気です
>>533 なんという昔の俺。
当時AKI-80で4号機パチスロの機種別の設定判別機を作って
高田馬場近辺で売りさばいてたら怖い人に目を付けられて大変な事になったのを思い出した。
徹夜して30個くらい作っても一瞬で売れたっけ。
今Arduinoならスイッチと振動モーターの付いたシールドさえあれば一瞬で作れるなぁとふと思った。
もうパチは打ってないけどなー
とりあえず買い物してきたら疲れたので寝ます。
>>537 >4号機パチスロの機種別の設定判別機
どういう原理で判別すんの?
簡単に説明すると、4号機は 設定毎に子役の高確率発生タイミングが変わる。 ぶっちゃけ子役は内部テーブル高確率モードに移行しないと8枚以上の子役払い出しはほぼ起きないので どのタイミングで子役が払い出されたか、つまり高確率モードに移行したかを こちらがわの予測テーブルと突き合わせて、4回のサンプリングで3回成功したらこちらが仮定した設定以上なのか それとも設定未満なのかが判別できる ビッグボーナス終了後に確率テーブルはリセットされるので メダル3枚ずつ掛けて行って、払い出された枚数を 4枚チェリー 2毎チェリー リプレイ(3枚役とカウント) 8枚子役 15枚子役 それぞれ積算ししていくと、メダル投入枚数/払い出し枚数の比率で、 設定1/2/3/4/5/6で子役の高確率モードに移行するタイミングが違うの で、当時はaki-80だったんだけど、これに各設定の内部テーブルを書き込んでおいて、 ビッグボーナス後の各ゲームごとに ハズレ/もしくは8枚以上の子役発生を スイッチ5つ対応させて押していく。 で、判別プレイ(そのタイミング)に達したとき、マイコン側から振動モーターかなんかで、ユーザーに そのタイミングが来たことを教えてやる、で、その時ユーザーはある程度狙って(目押しして)子役を揃えてみる。 まー出玉収束予想を手動で積算してグラフにしていくイメージかな。 ビッグボーナス後にこの設定判別方法3回で(ようはビッグボーナス3回)、9割以上設定を判別できる。 高設定と判明したら閉店まで座ればまず負けない。 今の機種はどんな仕掛けでうごいてるか知らないのでよくわかんない。 説明書いたら思った以上にながくなってしまったネ 改めて寝ます。おやすみなさい。
内部タイマーかarduino自体をリセットする命令文って有るのですか? 引数にmillsを使ってLEDの点滅プログラムを作りましたが、一連の動作が終わったら最初から繰り返したい場合はどんな方法がありますか?
一連の動作を関数化してloop関数の中で呼べば良い
loop関数の役割をもう一度調べてみ? オススメは公式リファレンス
一定時間の間隔で繰り返したいだけで別にリセットしたいわけじゃないんだろうな 「引数にmillsを使って」「一連」「最初」の意味するところが判らないから答えようがないけど
>>530 アナログ回路設計やってた修士持ちだけど自分がやってた専門回路以外
殆ど作れないよ
簡単なフィルタとオペアンプの設計ぐらいなら出来るけど
>>540 です
皆様早速返答感謝です
具体的に下記のようなスケッチで6灯のLEDを20秒ほど点滅制御したいのですが、millsでタイミングを制御しているのでリセット押すかタイマーをリセットしないとループ出来ないのです・・・
unsigned longは使わなくても良いかもですが、高速で点滅しているように見せたいのと、他の組み方したほうが良いとかありましたらご教示お願いします
void setup(){
pinMode(9, OUTPUT);
}
void loop(){
unsigned long millis() ;
int E3 ;
unsigned long T = millis()+500 ; //MP3プレーヤーと同期調整用待ち時間
if (millis()%40>4){
if (T < 1500){
E3 = 0 ;
}
if(T < 3000){
E3 = map(T,1500,3000,0,255) ;
※
中略
※
}
else if (T > 19500){
E3 = map(T,18000,19500,255,0) ;
}
analogWrite(9,E3) ;
}
else {
analogWrite(9, 0);
}
}
}
>>545 処理の最初に
unsigned long startMillis = millis();
とかやって、
unsigned long T = millis() - startMillis + 500 ; //MP3プレーヤーと同期調整用待ち時間
if ((millis() - startMillis) % 40 > 4){
とかすりゃいいんでないの?
1.5sかけて点灯→保持15.5s→1.5sかけて消灯→保持1.5s てことかな? delay() とか使わずに、キッカリ20sサイクルで動かしたいと
何かと同期させるとか時間が決まってるなら難しくせずに 状態変数を持たせてスケジュール通りにやればいいんじゃ typedef unsigned long ul; ul Told; unsigned char status; setup() { status = 0; Told = millis() ; } loop() { ul T = millis(); if (status == 0) { // 同期待ち if ((ul)(T - Told) >= 500UL) { status = 1; Told = T; } // 同期完了 } else if (status == 1) { // 1番目の状態 if ((ul)(T - Told) >= 1500UL) { 同期から1500ms経過後の処理; status = 2; Told = T; } } else if (status == 2) { // 2番目の状態 if ((ul)(T - Told) >= 3000UL) { さらに3000ms経過後の処理; status = 3; Told = T; } } else if (status == 3) { // 3番目の状態 if ((ul)(T - Told) >= 19500UL) { さらに19500ms経過後の処理; status = 4; Told = T; } } else { 終わりの処理; }}
それとmillisが返す値は誤差でずれてくるし 電源入ってからなんぼとかやるとブートローダーの都合でも前後するから 信号だとか光だとか音だとか同期方法が別にあればそれ使った方がいいよ 20秒ならどうでもいい話だろうけど
> if ((ul)(T - Told) >= 500UL) { status = 1; Told = T; } // 同期完了 これにも問題があって T - Toldの差が500よりも多かったらそのぶんずれるから 最後の Told = T; は Told + 500; とすべきかもしれない ゲームとかの処理ではこうやって遅れを補正したりするけど millis自体の精度を期待してはいけにあ
皆様、即レス感謝です〜
>>546 その方法だと3回目以降は繰り返ざずに止まっちゃいませんか?
>>547 キリの良い数字にしてるだけで20sに拘りはなく、時間的にはアバウトで良いのですが・・・
>>548 typedefてのは知らなかったので調べましたが、まだイマイチ理解できてませぬ
処理の最後にmillsから(20秒x処理回数分)をマイナスした値を記憶させて最初から処理・・・みたいな事は出来るのでしょうか?
上記20秒サイクルの点滅を少なくとも数時間程度は延々繰り返したいのですが・・・
あと、同期の件は最初だけなのでそれほど気にしていませぬ。
>>548 T もToldも ul と定義してるのに 、あとから(ul) のキャストしてるのはなんで?
>>552 あれを見てこの人はヒトのことを信用しない人だなと思った。
>>539 なんか変な説明だな。
4号機時代の小役(子役じゃないよ)カウンターは、1BETにつき減算値分マイナス、払い出し1枚につき+256が多かった。
で、設定変更やBIG終了後に小役カウンターを0に設定し、その後のBET数と払い出し枚数で0以上なら小役低確率、
マイナスなら小役高確率で小役の抽選をする。
例えば減算値が100なら、3BETで1プレイ目の小役カウンタは-300なので小役高確率。
そこで4枚払い出されれば、2プレイ目は-300+256*4-300=424なので小役低確率になる。
減算値は例えば設定1-4で100、設定5で103、設定6で106ならば、プレイを続けていくと
設定の違いにより小役が低確/高確に分かれるプレイが生じる。そこでの小役確率で判別するってこと。
あと、リプレイはカウントしないよ(払い出し3枚の役ではない!)。
小役カウンタの目的は、通常時の払い出し率のコントロールのため。
減算値が100なら、100/256=39.0625%に小役による払い出し率を設定している。
また、小役は目押ししないと取りこぼすが、取りこぼした場合でも払い出し率を一定に保つように働く。
AT機以降は小役カウンタなんて無くなってしまったが。
よく雑誌に載ってる必勝法()ってやつか ほぼ勝てる、9割形勝てるって言って負けた時も運が悪かっただけって打ち続けて ゲームを楽しんでいただけているようで何よりです パチ機の隅っこの方の仕事たまに来るけど一番条件いいし稼いでるんだろうなー
、っもうなんのすれだかw
>>540 arduino自体をリセットする命令文
これって可能?
wdt使えば?
wdt使うにはライブラリだけじゃなくてfuse書き換えも必要ですよね?
ヒューズはwdt関係レジスタの初期値を固定にするだけで 必須じゃないyp
wdt試してみましたが、8S以上は待てないようでダメポっす 取り敢えずも〜1個arduino使って、そいつに20秒毎にリセットさせるバカ仕様で行きますorz
リセットピンを他のピンと直結させて リセットがかかるようなプログラムを組むとか
>>545 unsigned long T = millis() ;
を
unsigned long T = millis()%20000 ;
で解決出来ました・・・
目的と手段が整理して考えられないっつうか、我ながら倫理的思考て奴が全く身についてない様で恥入ります
ま〜それでも出来た時は嬉しいっすよ
>>562 ちょっと試しましたが無理でした・・・
プルアップ/ダウンとpinModeのIN/OUTPUT、HIGH/LOWそれぞれの関係がまだよく分かりません
>>561 20秒経ったらWDT(待ち時間最小)を使ってリセットをかけるだけ
>>564 それで理解出来ました
ど〜もwdt_reset();を書く場所が悪かった様です
多謝!
xbee wifiでHTTPgetすると文字化けするのは何故?
エンコードはなに?
シリアル通信は、 ハードもソフトも同じ速度にしないといけないんですか。 ソフト2400で、ある機器につないでるんですが、 ハードも2400じゃないとPCと通信できません。
こういうこと? SoftSerial HardSerial [PC]←→[Arduino]←→[ある機器]
あれ? 逆か? HardSerial SoftSerial [PC]←→[Arduino]←→[ある機器]
PCからデータをArduinoを介して送ってるんだとして、PCからArduinoへの送信速度が Arduinoからある機器より早い設定で、PCからArduinoにデータをドンドン送ると Arduinoからある機器に送るのが追いつかなくなるんで、Arduinoの受信バッファが いっぱいになってそのうち取りこぼしが発生するとかそういうんではないの?
>>570 それです。
>>571 ある機器というのが無線受信機でして、
そいつは2400固定なんです。
受信機から受け取るデータをarduinoを介して、PCへ送っているのですが、
ハードも合わせて、2400にするときちんと受け取れるのですが、
9600に上げると文字化けしてしまいます。
非同期通信なので、いけると思ったのですが、
今は、ハードも2400で我慢して使っています。
同じバッファを使用していたとしたら、
どちらも2400で使ったときも、おかしくなりますよね。
タイマを共有でもしているのでしょうか。
ぐぐってフォーラムまで見てきたけど解決しないので教えてください。 stk500_recv()エラーで書き込めません。抜き差し、ボード、ポートの確認全てやりましたがだめです。 リセットスイッチ押しても基盤上のLEDが消えないのは関係ありますかね? 書き込み時にRXは点滅しますがTXのほうはつきません。 linux、winで試しましたがだめでした。UNOです。
面倒だから交換しろks
avrdudeのバグとか 別のバージョンのIDEを試してみるよろし
おかしくなる直前のスケッチが問題
>>572 波形はみたの?
ズレが大きくなっているんじゃない?
>>573 俺もよく似た現象になったんだけど
以下を試したら解決したな
Arduinoボードの種類をUnoから別のに変えて失敗させてから再度、Unoに戻す
・IDEの設定がUNOになってるか再確認 ・まず、シールドその他つけてるものを全部外して試す ・windowsとlinuxが同じマシンなら、別のマシンで試す ・マイコンチップが逆ざしになってないか確認する ・(交換してるなら)マイコンを元のチップに戻す ・埃を払う ・ノーミソをリフレッシュするため紅茶を一杯。
マイコン単体で書込できるかを確認すれば ボード自体の不具合と切り分けができるんじゃないだろうか
ハブ自体が一つのUSBデバイスだからハブに対応したライブラリを使う
USBハブ内蔵デバイスは内部的にはハブに機器がぶら下がってる ハブ越しにアクセスせにゃならんのよ USBホストシールド2.0はusbハブに対応してたような usbhub.hとusbhub.cppはある? あるならそれが使うよろし
>>573 うちも何度かそんなことがあった(UNOで)。
なぜかヒューズビットが書き換わっていたみたいなので
AVRISP mkIIとAtmelStudioで再設定した。
MsTimer2のサンプルをもとに10秒間LED点灯させて1秒間消灯させようとスケッチ書いてのですが、まったくもって動きません。 ↓じゃ話になりませんか? #include <MsTimer2.h> void swon() { digitalWrite(13, HIGH); } void swoff() { digitalWrite(13, LOW); } void setup() { pinMode(13, OUTPUT); MsTimer2::set(10000, swon); // 10000ms間オン MsTimer2::set(1000, swoff); // 1000ms間オフ MsTimer2::start(); } void loop() { // loopは空 }
最初の MsTimer2::set(10000, swon); が MsTimer2::set(1000, swoff); で上書きされてswoffイベントしか起こらないんじゃないの?
「消灯して1秒後に再び点灯する関数」をMsTimer2に10秒で登録すればできそう。
>>588 そういう動きをするのですか。
うーん、理解が足らんので、ぐぐって色々なスケッチ読んでみます。
592 :
たかたか :2013/12/30(月) 22:17:58.46 ID:j6v43lLq
初めまして。超初心者です。 avrdude-GUIにより、Arduino互換マイコンになった事を確認後に、FT232RLでATmega328にブートローダを書込したいのですが、avrdude: usbdev_open(): did not find any USB device "usb"とエラーのメッセージが出てしまいます。 同じメッセージでは、使用途中から生じた過去ログがありましたが、私には難しくて判りません。 お手数をおかけしますが、どなたかご教授よろしくお願いいたします。 ちなみに、arduino-1.0.5を立ち上げて「マイコンボード」→「ArduinoDuemilanove w/ ATmega328」、「書き込み装置」→「AVRISP mkII」を選択しました。
594 :
たかたか :2013/12/31(火) 03:55:49.03 ID:/7Wd5N7l
>>594 参照されたサイトを確認して書いてある手順を実行してブートローダ書き込み完了と
LEDを接続しての動作確認も出来ました。 (Windows8/32bit環境を使用しました)
このサイトの記述でavrdude-GUIの(7)のFuse項目名が間違ってますがこれは大丈夫ですよね。
さてエラーの内容はUSBデバイスが見つからないと言ってます。
多分FT232RLのドライバが適切に導入されていないと思われます。
(3)でUSBポートを指定しますがちゃんとデバイスマネージャで確認して設定できてますか?
書き込みができないとおっしゃってますがFuseは読めていますか?
エラーは(1)〜(12)のどこで出ていますか?
>>573 先日ATmega328Pを買ってきて換装しました。遅くなりましたが、一応直ったことを報告しておきます。
597 :
774ワット発電中さん :2013/12/31(火) 13:12:00.45 ID:ITAzNMFs
598 :
774ワット発電中さん :2014/01/01(水) 18:04:39.43 ID:6tNvYegK
質問ですが、Arduino互換の、Da vinci 32Uの割り込みピンは何番ですか?調べたんですが、いまいちわからなくて... 初心者です。
600 :
774ワット発電中さん :2014/01/01(水) 19:08:46.78 ID:6tNvYegK
>>599 資料ありがとうございます。
「INT」というやつが割り込みピンでしたっけ?
ははは
602 :
774ワット発電中さん :2014/01/02(木) 08:26:38.46 ID:3VEZodmD
>>600 attachiinterrupt 0 - > PD0
attachiinterrupt 1 - > PD1
attachiinterrupt 2 - > PD2
attachiinterrupt 3 - > PD3
attachiinterrupt 4 - > PE6
603 :
774ワット発電中さん :2014/01/02(木) 15:48:54.24 ID:aHO84+4g
604 :
たかたか :2014/01/02(木) 22:08:04.25 ID:JRpaHUj+
>>595 あけましておめでとうございます。本年もよろしくお願いします。
ご指摘を頂いたFT232RLのドライバを再度読み込ませたあと、ブートローダ書き込みできました。
ありがとうございました!
605 :
774ワット発電中さん :2014/01/03(金) 00:11:09.29 ID:qyi6P2uC
自律ロボットを作りたいと思っているんですが、(自律、といっても、ボールを見つけてそれを指定の位置に運ぶというようなもの)マイコンはArduinoでも大丈夫なもんでしょうか?ラズパイと迷ってるんですが、どっちを使えばいいですか?どっちも初心者です。
シンプルなセンサーを使うならarduinoでいける カメラを使って画像認識とかならラズパイがいい
>>605 まずOpenCVとUSBカメラ使ってボールを見つけるプログラム作ってみるべき
蟻がやっていることだからまず蟻さんの気持ちを理解するんだ
>>605 基本問題ない。
つか、問題ない範囲で作って問題が出たら考えれば良い話。
本当は作る前に問題がないように選定するもんだけど
そこまで及んでないっしょ?
画像認識のとこは別のArduino使って、検索開始と結果のトリガ配信だけ メインのボードとやりとりという姑息手段もありかもしれない。
>>605 ボールを探して運ぶロボカップジュニアサッカーでもArduinoは大人気です。
なるほどなるほど みなさんありがとうございました! できれば画像認識なしでやってみたいのでArduinoで検討します。
Arduino初心者です
arduino ethernet r3 を使いGmailにアクセスく、
http://www.e-risingstar.com/wordpress/?p=272 このサイトのプログラムを使ったのですが、
byte server[] = { 74,125,129,109 }; // Gmail POP3 server address
if (client.connect(server, 995)) //POP3 port 995
とアカウント、パスワード入力して使っえ見たのですが、
connecting...
connected
disconnecting.
としか出てきません。
どうしたら、データを読み出せるのでしょうか?
ご教授のほどお願いたします。
>>612 gmailアカウントの設定でpop使えるようにしてある?
612です もし、gmail、hotmailなどや自前のサーバー以外のメールサーバーにアクセスできる方 ソースコードを見せてもらえませんか?
612です 問題が解決しました。 お騒がせてしすみませんでした。
20灯位のLEDを1個づつ順番に点滅させたいのですが、ポテンションメータで照度を可変にしたい時のでPWM端子を使うつもりです。 で、MEGAでもPWM端子が15個?しか無いのですが何か良い方法ってありますか?
すいません何か中韓人のみたいな文章になってましたorz よろしくおなしゃす
>>618 重い処理をしないなら
ソフトウェアでPWMすればいいよ
xbeeの子機(乾電池駆動)から赤外線近接センサーの数値を親機(Arduino)に送ってるんだが どうもうまくイカない 温度センサーの数値ならうまく送受信できたんだが これはどういうことなの? ちなみにセンサーはシャープの2Y0A21 F 32
624 :
774ワット発電中さん :2014/01/07(火) 05:13:02.28 ID:dspoCEYQ
使用ピンは?
626 :
774ワット発電中さん :2014/01/07(火) 05:29:25.56 ID:vl5O+A7P
2Y0A21 F 32って3.3Vで動作するの?
そこか・・・
関係ないけど1枚目の画像って自作?
>>618 です
遅くなりましたがレス感謝です
ソフトウェアでPWMて方法も有るのですね
灯数多いのでTLC5940のデイジーチェーンでやってみようと思います
助かりましたm(_ _)m
arduino化したATMega328のADCを使って微少電流測定をしたいんですが 水晶振動子起因らしきノイズが結構乗ってきてしまって対策に苦慮してます。 うまい対策方法や参考になるサイトを教えて貰えないでしょうか ちなみにuAオーダーの電流→470Ωのシャント抵抗→x10 AMP → ADC (ref 1.1V) の回路です lpfとかも入れてみたんですがGNDの電位がすに暴れてるみたいで・・・
>>632 マイコン内蔵のADなのでノイズはそんなものです、できればAD外付けオススメ
>632 > →x10 AMP → ADC (ref 1.1V) の回路です x50 AMP → ADC (ref 5V) する。 内蔵1.1Vに比べAVccの5Vが信用できなければ、 内蔵基準1.1V → ADC (ref 5V) して割算。
>>633 ノイズを考えるとやっぱり外付けADCがいいですかね
>>634 とりあえず利得upでやってみることにします
電源が何か知らないけどパスコンがちゃんと入ってないんじゃないかと
>>636 パスコンはいれてます
電源はトランス電源からの5Vレギュレータでやってます
Arduino unoを使ってカメラからの画像取得を試みています。 現在使っているカメラはLS-Y201というものなのですが、解像度が320x240しかありません。 EEPROM?を書き換えると640x480まで解像度を上げられるといったサイトもあったのですが、スイッチサイエンスでは解像度の変更が不可能とありました。 もう少し解像度の高いカメラで撮影をしたいのですが、Arduinoに対応した高解像度のカメラがあれば教えていただけませんか?
ニッチすぎるのか高すぎるのしかないし こうなったらUSBホストで適当なUSBカメラ繋いだ方がいい
対応したカメラってArduinoで何すんの? 使える使えないの境目がよくわかんないね
Arduinoで発展した電子工作をする人はトラ技を定期購読するべきだよ。微小電流測定のことだって 1〜2年に1回は掲載されてる。
そこまでやるなら Raspberry Pi を薦めるがな。
644 :
774ワット発電中さん :2014/01/20(月) 12:40:30.28 ID:57bpsmKv
中華バー 中華タウン 潜伏先中華バー 浮気in中華タウン菊名 大寒
ガリレオボード、arduino互換ポートのトグルスピード230Hzってワロタ arduinoで普通にできる部分で性能負ける部分があったらだめだろう。 PCIeなんてちょっとかじったぐらいの人にはさわれないだろ。 ヒドス
>>645 何をやったらそんなに遅くなるんだろ
プロセス切り替え待ちか
linux上でarduinoエミュレータを動かしてからだっけ
そんなややこしいことになってたのか
すみません、さっき一通りのセットを発注したばかりの新参です 届く前に関連スレを見ていて幾つか疑問に思ったことを質問させてください 1.「スケッチ」ってソースコードのことですか? 2.65536とか、数字を直値(ちょくち)で書いてるソースが多いですが、この処理系用のコンパイラはソース中に定数の演算を記述できないのでしょうか? 例えば、65536などは、0x100*0x100と記述した方が可読性が高いと思います。 お手数とは思いますが、よろしくお願いします。 #届くのが楽しみです!!
>>650 >1.「スケッチ」ってソースコードのことですか?
http://arduino.cc/en/Tutorial/Sketch ←見れ。
>2.65536とか、数字を直値(ちょくち)で書いてるソースが多いですが、この処理系用のコンパイラはソース中に定数の演算を記述できないのでしょうか?
できる。
> 例えば、65536などは、0x100*0x100と記述した方が可読性が高いと思います。
好きにしろ。
俺は65536のほうがいいな
さっそくありがとうございます。読んでみます!
>スケッチ
>
>スケッチArduino のプログラムを使用する名前です。アップロードされ、Arduino ボード上で実行されるコードの単位です。
良く分かりました。面白いネーミングですね、俺が古いのかな
>>652 > 俺は65536のほうがいいな
関連スレを見てたら、事前演算で回避できるバグで議論してたので、もしかして、コンパイラが弾くのかと危惧しました。安心しました。
ループが何億回になってたとか、ああいうのは演算で書けば防げますよね
>>654 > 関連スレを見てたら、事前演算で回避できるバグ
kwsk
int * int → int
Galileoボードのベンチマーク記事のこと言ってるんだろうけど 定数同士の演算は明示的に最適化を切らない限りどう書こうが事前計算されて定数に落とされる
アマゾンの互換品これって?買いでしょうかぁ?初心者です。 サインスマート Arduino(Uno) をはじめよう互換キット 初心者専用Arduino基本チュートリアルプロジェクト付き!十種類選択可!(16プロジェクト、1602 LCD含む!) - サインスマート(SainSmart) ¥ 4,590 18点在庫あり。
661 :
774ワット発電中さん :2014/01/24(金) 14:48:47.97 ID:esNKohpb
dx.comが安いよ
>>660 私も初心者で初 arduino だったのですが買いました。
まだ全部のチュートリアルを試したわけではないのですが、
7セグがチュートリアル上ではアノードコモンになっているのに
現物がカソードコモンだったり
4桁7セグの型番も結線もチュートリアルと全然違っていたりしました
そういうところも楽しめるのあれば、格安なので買いだと思います。
サインスマートの黒いArduino uno俺も使ってるけど問題は無いよ セットはぼったくりだけどな
>>665 それは、動作の問題がないの? 商標権の問題がないの?
動作でしょ 消費者的には動けばいいし
>>666 商品名としてarduinoを使うのはライセンスで禁止しているがarduino互換と言うのは許している
「Arduino互換キット(Uno) をはじめよう」なら分からんでもないが 「Arduino(Uno) をはじめよう互換キット」というのはどうなんだろうか。 この場合の「互換」は「キット」に掛かってると思うのだが。
>>668 それは知ってるけど、黒いあれはどうなのかと。正規品の黒いの見たことないので。
>>670 黒いあれにArduinoと書いてなければ問題はない筈。
>>671 あの売り方で、互換機は売り方の問題でるね。
ユーザオとしてはunoでもuniでもなんでもいい
良貨が駆逐されてしまったら割を食うのはユーザオだけどね
日本語でおk
素直に正規品を買います。(x_x)(>_<) 素人なので!買うお店でお薦め店ありますか?
677 :
774ワット発電中さん :2014/01/25(土) 21:46:52.56 ID:Y9lEkWGQ
正規品って概念があまりないよ そもそも正規品とはイタリアの素人学生が家で内職してハンダつけしたもんでしょ
プロ学生は怖いな
681 :
774ワット発電中さん :2014/01/25(土) 22:56:51.94 ID:Y9lEkWGQ
ありゃ なんか俺適当なこといった?学生アルバイトはarduino出始めのころ? こういうの見ると俺はarduinoやってるつもりでアキズキーノしかやってないけど 1枚は純正持っていたほうがいいのかなという気持ちにさせられるなw しかし、arduinoについては純正ハードなんてもんおまけみたいなもんで AT互換機よろしく互換機じゃんじゃんでてわいわいやるのが本当の arduinoであると90年代のNECのPC98囲い込みぼったくりを経験した 俺は考えたい。チャイニーノ上等!
>>681 100万台のオーダーで世界に出てるのに、学生の内職は無いだろ。
ArduinoってARM系?のマイコンらしいけど、マイコンって一般的にどんなのがあんの?
Ethernetシールドとか、互換の安い奴って変なの仕込まれたりしてないかな。
WoLとか仕組まれてたら面白い
電源無しに起動するシールド達・・・
PoEがほしい
Arduino nano使っています。 アナログ6,7ピンでdigitalReadする方法を教えて下さい。 digitalRead(20)やbit_is_set (PINC,PIND7)では動きませんでした。
>>691 ありがとうございます。
解決しました。
693 :
774ワット発電中さん :2014/02/02(日) 08:23:58.52 ID:uXWN93bY
694 :
774ワット発電中さん :2014/02/03(月) 16:41:08.47 ID:smwHlYMl
チャイニーズポタージュ チャイニーズポタージュ チャイニーズポタージュ チャイニーズポタージュ
695 :
774ワット発電中さん :2014/02/03(月) 23:34:50.48 ID:RODXT/K4
はじめまして。arduino uno互換機で7セグLEDを3つ使用して6桁ダイナミック点灯させようとしていますが、うまくいきません。
7セグLEDは秋月の2桁カソードコモンを使用しています。
http://akizukidenshi.com/catalog/g/gI-00885/ AからGとDPは6桁すべて基板上に配線し、連結しています。
シフトレジスタ(TC74HC595AP)を2つ使い、Arduinoからは3本の線で実装をしたいです。
1つ目のTC74HC595APにはQA〜QHまで7セグLEDのAからG,DPに繋がっています。
2つ目のTC74HC595APにはQA〜QFまで7セグLEDの1〜6桁目のカソードに繋がっています。
1つ目のTC74HC595APの9番ピンは2つ目のTC74HC595APの14番(SI/DS)に繋いでいます。
自分の理解の範囲で書きますと、1〜8bit目でLEDのAからDPまでどこを光らせるかを制御し、
9〜14bit目でどのカソードをLOWにするか、を制御したいです。
現在のソースは下記の通りです。
void setup() {
pinMode(13,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
}
void loop() {
digitalWrite(10,LOW);
shiftOut(11,13,MSBFIRST,0b0000000011111111);
digitalWrite(10,HIGH);
while(1);
}
質問1,値を変えて実行する度にLEDに表示される結果が異なる。
上記ソースでは全LEDを全桁表示させている(つもり)だが、
実行する度に表示される桁が変わる。(全LEDは点く)
TC74HC595APにあるCLR(10番pin)というピンが関係していると予想しているが、どうすればよいのかが分からない。
現在はCLRは5V+に繋いでいる。
質問2,そもそもshiftoutの使い方がこれであっているのかが分からない。
いまのやりたい事(全LEDを全桁表示)がこの書き方で良いのか?
恐れ入りますがご教授のほどよろしくお願いします。
697 :
774ワット発電中さん :2014/02/03(月) 23:49:31.77 ID:RODXT/K4
696さんありがとうございます。 リファレンスは読んであのコードになったのですが、byteorderの理解も怪しいため、正解が分からなくなってお伺いしている次第です。。
> Shifts out a byte of data one bit at a time. > value: the data to shift out. (byte) > shiftOut is currently written to output 1 byte (8 bits) so it requires a two step operation to output values larger than 255.
699 :
774ワット発電中さん :2014/02/04(火) 00:11:25.72 ID:IbzmrnGX
698さんありがとうございます! digitalWrite(10,LOW); shiftOut(11,13,MSBFIRST,0b11000000); shiftOut(11,13,MSBFIRST,0b11111111); digitalWrite(10,HIGH); while(1); so it requires a two step operation to output values larger than 255. 二回(2行)に分けて実行した所、希望する動作になりました。 ありがとうございました!
700 :
774ワット発電中さん :2014/02/04(火) 00:14:06.65 ID:XAI6pWU4
shiftOut関数ばいまんとこ一度には8ビットしか送れんきくさ、 255以上送るには8ビットで2度に分けて送らんばいかんげな。
701 :
774ワット発電中さん :2014/02/04(火) 00:21:31.22 ID:IbzmrnGX
700さんもありがとうございました! ようやくシフトレジスタの使い方が少しづつ分かって気がします。 今後ともよろしくお願いします!
702 :
774ワット発電中さん :2014/02/04(火) 00:22:32.44 ID:XAI6pWU4
ばってんくさ、 shiftOut(11,13,MSBFIRST,0b0000000011111111); でようコンパイラ通ったな。 俺が同じことやった時はコンパイラに8ビットまでじゃぼけと 怒られた。
> ようコンパイラ通ったな。 0b0000000011111111 は 8bit の範囲を超えた値ではない
なんだかよく分からんが、直値で書くのを推奨してるんじゃなかろうが、事実、それを許容している風土なのかね
>>704 直値で書くのを禁止する風土って何ぞ? 具体的に
なんでもconstやdefineで宣言しろといいたいんじゃないかねw どっちで書いたほうがよりわかりやすいかどうかとか考えない人なんじゃね。 goto禁止とかハンガリアン記法を強制されるとか過去にいろいろあったなあ。。。
>>704 「.初心者」と明記されたスレでなに偉そうな事言うとんねん、ボケ!
ハンガリアン語法を見ると血を吐いて死ぬ
>>707 俺はarduinoを買ってさっき箱を開けたばかりの初心者なんだが。
普通は良く使う定数などは、定数定義してまとめたものをincludeするもんだが、
この処理系ではいちいち直直で書く風土なのかね?
>>709 > 普通は良く使う定数などは、定数定義してまとめたものをincludeするもんだが、
コーディング規約なんて企業や開発チーム内でのローカルルールに過ぎんのだが、「普通は〜」って
お前何言ってんの?
意味が分からない?
っていうか、俺の質問に答えてくださいよ先輩
>>712 質問以前にお前が言ってる普通が出鱈目なんだよバーカ
とか書かないと理解できないかな?
なんで? ポート番号やら何やらが使用変更で変わったら、いちいちソースコード該当箇所をチマチマと目視修正する風土なの? って聞いてるんだけど
>>714 「コーディング規約なんて企業や開発チーム内でのローカルルールに過ぎん」が理解できん人?
マジ頭悪い人??
だから一般例を例示したじゃないか。 ターゲット側の仕様変更のたびに、いちいちソースコード書き直す風土なの? ちなみにあんた、そんな視野でやってたらカネ稼げないよ?
見栄えや将来はいいからまず動くもの作れや
たった10行の質問でコーディングスタイルうんぬん言う場所じゃないと思うが
>>716 > ターゲット側の仕様変更のたびに、いちいちソースコード書き直す風土なの?
それを心配するならお前ん所はそういうコーディング規約決めてりゃいいじゃん風土ってアホか。
2ch みたいな掲示板に投稿する短いプログラムでソースコード分割が適切だとでも思ってんの?
>>718 だね、スタイル以前のエンジニアの嗜みだね
おそらくポート番号を直値で書き散らかしたコードが散見されるので、ん?こういう風土なの?って質問ですよ
>>719 君は本当に経験がないんだな
数行の中に直値が散りばめられてしまうのは、その処理系の風土が未熟だからじゃないか
そういう理解でいいのか?と聞いてるんだよ
>>721 > 数行の中に直値が散りばめられてしまうのは、その処理系の風土が未熟だからじゃないか
初心者質問スレでお前何言ってんの?
ポータビリティについての認識が低い人が質問の折でプログラムを投稿してたとして、
それで何かを決め付けられるとでも思ってる?
>>722 arduinoは買ったばかりの正真正銘の初心者だと書いたろう。
だから、異常な風土が気になったんだよ
本来はターゲットのベンダーが定義ファイルを提供し、2chたろうがなんだろうが、数行のコードでも、閲覧者と定義の共有がなされていて当然
だがarduinoってのは、アマチュアに直値で書き散らかすのを不作為に推奨する風土なの?
arduino 標準サンプルコードは定数定義してるし 質問する時の数行のコードで、そんなん端折っても全然問題ないし 処理系の風土ってなんぞ???
>>723 自分の言葉で語りなよ
あと質問に答えてくれ
>>726 > 自分の言葉で語りなよ
「ターゲット側の仕様変更のたびに、いちいちソースコード書き直す風土なの?」ってことは、
例え HelloWorld みたいなプログラムでも、出力メッセージがハードコーディングされてるのは
ご法度なんだよな?
> あと質問に答えてくれ
お前の投稿は質問以前に馬鹿げてると既に回答しとるが?
>>727 なんで質問に質問で返すかな
俺の疑問は普通の人にはわかる程度に説明したんだから、あんたはイエスノーで答えればいいんだよ。
あんたは関数として頼りにならんな、戻り値不定。
>>725 有難うございます。
その他のドーターボードや拡張機器においても、ポート類は定数定義されていますか?
また重複しないためのガイドライン/レギュレーションは、提示され共有されていますか?
>>728 >
>>726 > > 自分の言葉で語りなよ
>
> 「ターゲット側の仕様変更のたびに、いちいちソースコード書き直す風土なの?」ってことは、
> 例え HelloWorld みたいなプログラムでも、出力メッセージがハードコーディングされてるのは
> ご法度なんだよな?
あーあ、やっちゃったね
君、使えない人なんだな、可哀想に。
>>729 > なんで質問に質問で返すかな
「だから、異常な風土が気になったんだよ」が質問だったとは驚いたw
>>730 > あーあ、やっちゃったね
> 君、使えない人なんだな、可哀想に。
「自分の言葉で語りなよ」と言った奴の言葉とは思えんねww
くっさいアホが涌いてる件について
ここは、煽り耐性の無さ杉な人だらけのインターネッツですね 荒らしをスルーも出来ないなんてw
使えないアマチュアは黙ってればいいのに、、、
735 :
774ワット発電中さん :2014/02/04(火) 21:26:10.06 ID:XAI6pWU4
なん喧嘩しようとな?筑豊のおいらからすれば喧嘩は刃物ば持って するもんばい。 上の質問は左から1番目のセグメントをonのするなら0b10000000やし 4番目なら0b00010000ときまっちょうきくさ、そんまま書いたんに違いなかろ。
> 上の質問は左から1番目のセグメントをonのするなら0b10000000やし > 4番目なら0b00010000ときまっちょうきくさ、そんまま書いたんに違いなかろ。 カソードコモンのシンク側なんで論理が逆
質問に質問と自分の言葉がリフレインして謎時空に迷い込んだかとおもったぜ そういったコーディングのルールとかハードウェアの変更とかめんどくさいことをなるべく考えなくていいように、 arduinoっていう共通規格をみんな使ってるものだと思ったが
だからロクに動かない糞コードが量産されるんじゃないの?
クソコードを見分ける力を養うためにそれらは必要なのだ
まあなw
> 許容している風土なのかね 風土w バカジャネ?ww
Arduinoに風土なんてないよ あるのは悪く言えば使い捨てかき捨てやっつけ良くいえばハックなプログラムだけ もともと取り敢えず動くものを楽してでっちあげるための基板なんだからめんどくさいものはノーサンキュー それを異常と思うんであればArduinoではなくほかのものを使うべき
>>707 初心者が陥りやすい教条主義ってやつでしょ。
693です とりあえず電車でGOから読めたのですがdelay()を入れないとよくわからないコードが出ます 今はdelay()で回避しているのですがAボタンだけは時々2度押しのようになります どうやったら安定して読めるようになるかアドバイスいただけませんでしょうか
>>744 よく読めたなぁ
うちは中の2進デコーダーから引き出したよ
>>729 ポートって何?GPIOピンのこと?
それこそ汎用なんだから標準的な定数定義なんて出来る訳ないだろ
>>744 スイッチにはチャタリングというものがあるから読み出しには1/100秒とか間隔空けると良いよ。
それか、連続して何回か同じ値が続いたらその値になったと判断するとか。
>>748 ありがとうございます。チャタリングも気をつけます。
今回はプレステコントローラで読み出し時のデータを処理するのでチャタリングの影響ではなさそうです
デュアルショックでは○&#9747;△□ボタンともOK
電車でGOではBCはOKでAだけが時々ゆっくりの2度押しとなることがあります
中古なのでボタン自体の故障も可能性はありますが
普通に考えてボタンの問題じゃね? 手垢かゴミでも詰まってんだよ多分
751 :
774ワット発電中さん :2014/02/06(木) 11:08:18.23 ID:Za+HJeIs
チャイニーズシリア空気プレン 沖縄海数の子焼きそば チャイニーズ空気プレン 沖縄海数の子焼きそば レディオスペシャル チャイニーズ空気プレン 沖縄海数の子焼きそば チャイニーズ空気プレン 沖縄海数の子焼きそば
>>750 ツーハンドルのものはないので知人のワンハンドルで試してもらいましたが
Aボタンの不具合はないようです。
手垢恐るべしですね。もう少し原因は探ってみますが。
分解して掃除してみた?
754 :
774ワット発電中さん :2014/02/08(土) 08:56:37.87 ID:kHCrtTwn
チャイニーズ光金空気警察プレン 沖縄海学校うどんそば チャイニーズ交通混乱空気警察プレン 沖縄海学校うどんそば チャイニーズ交通混乱空気警察プレン 沖縄海学校うどんそば チャイニーズ交通混乱空気警察プレン 沖縄海学校うどんそば
755 :
774ワット発電中さん :2014/02/09(日) 12:59:56.16 ID:UMKNLODL
WinAVRのヘッダーファイル(avr/io.h)を取り込みたいのですが上手くいきません。 具体的にはコンパイル時、"PORTA"や"DDRA"といったシンボルが定義されていない旨 エラーメッセージが表示されます。 ArduinoのIDEでライブラリの取り込みをしてみても、 ヘッダファイルをスケッチのあるフォルダにコピーしてみても 同様のエラーメッセージでした。 スケッチへコピーしたヘッダファイルは、Cドライブ直下の "WinAVR20100110\avr"をコピーしました。 したいことは、「AVRマイコン活用ブック」7-3NXT用加速度センサの Arduinoへの移植です。 たぶん基礎知識不足から来る、基本設定の見落としだと思っています。 よろしくお願いします。
>>755 MPUのマニュアルを見て(下はATmega168Pの場合)defineでやったらどうだろう?
#define DDRD ( *(volatile unsigned char *)0x2A )
#define PORTD ( *(volatile unsigned char *)0x2B )
いいなぁ。 目的あって調べて聞いて 楽しそうだ。
759 :
755 :2014/02/09(日) 15:17:32.16 ID:UMKNLODL
>>756 ,758
レスありがとうございます。
教えていただいととを今すぐに試せない状況なので
後ほど結果を報告させていただきます。
>>757 スレッドの中に「AVRのポートを叩くならArduinoなど使うな」と言った内容があり凹んでいましたが、元気が出てきました。
ありがとうございます。
関数経由かどうかだけの違いなんだからどーでもいい むしろ両方のいいとこ取りできるのが良さだと思う 俺は自前の関数で8bit単位でIOportいじれるようにしてる
GPIO操作をarduinoのライブラリレベルでやると非常に馬鹿馬鹿しいことになるからねえ
762 :
774ワット発電中さん :2014/02/09(日) 20:21:43.05 ID:Q+S+ADYq
質問です タイマー割り込みを使用して10usの周期割り込みを発生させたいと思っています。 割り込みハンドラではポートをトグル出力しいますが、周波数カウンタで表示させると47.7KHzしか出ていません 割り込みハンドラではポートのトグル出力しかしていないので、次の割り込みに間に合わないとも思えません。 なぜでしょうか? ためしに20usの周期割り込みを発生させると50.0KHzで計算どおりです。 タイマーはクリア・タイマー・オン・コンペア (CTC) モードを使用し、プリスケーラなし、比較レジスタ値160です ちなみにタイマー0でもタイマー1でも結果は同じでした。 最近arduinoを触り始めたばかりなので、トンチンカンな質問だったらすみません
763 :
767 :2014/02/09(日) 20:24:26.30 ID:Q+S+ADYq
x ためしに20usの周期割り込みを発生させると50.0KHzで計算どおりです。 o ためしに20usの周期割り込みを発生させると25.0KHzで計算どおりです。
それがタイマー落ち 次の割り込みまでに割り込みから復帰できない現象 オシロ持ってるなら割り込みでポート上げ下げしてどのくらい余裕あるか確認しる
そうかなあ 周波数カウンタやセラロックの誤差じゃないの 試しに倍速の5usで動かしてみなよ
>>762 >割り込みハンドラではポートのトグル出力しかしていないので、次の割り込みに間に合わないとも思えません。
「思えません」じゃなくて実際ナンボ掛かるか計ってみ?
digitalRead digitalWriteの動作がだいたい5usec必要らしいから 結構きわどいんでないかな それこそ直接port叩いてみれば?
768 :
762 :2014/02/09(日) 22:19:45.92 ID:Q+S+ADYq
レスどうもです 割り込みハンドラ内でどのくらいかかっているか知る術をしらないのですが digitalRead digitalWriteを使っているので直接ポートに書き出す方法を試してみます。 しかし16MHz(クリスタル)で10us周期なら、ハンドラ内で160ステップ進めますよね? そんなに負荷があるんですかdigitalRead digitalWriteって・・
>>768 >割り込みハンドラ内でどのくらいかかっているか知る術をしらないのですが
unsigned long start = millis();
for (unsigned long i = 0; i < 1000000; i++) {
/* 割り込みハンドラ内での処理*/
〜
}
unsigned long time = millis() - start;
とかでも大体わかるだろ。
> /* 割り込みハンドラ内での処理*/ > 〜 ↑は関数化してループの回数だけ呼び出した方がより実際の値に近い数字が求められるな。
>>771 >44サイクルだそうな
void loop() {
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
}
で出力される周波数が120kHzという話と整合性取れてないな。
ピン番号によって変わるんじゃないかな 引数が番号だし
ISR(TIM*_vect) { PINx = (1<<パタパタするポート番号); } 普通にgccで書くとこれだけのことなのにね
最近触ってないからわからん デバッグしてくれ ともかく面倒な処理ならarduinoのライブラリに頼るでもいいけど GPIOみたいな低レベルな箇所はマイコンの作法で書いた方がいいよ
778 :
たかたか :2014/02/10(月) 00:19:37.81 ID:N9e5nnai
超初心者で度々すみません。前回ご教授頂きありがとうございました。おかげさまでブートローダを書込ました後、プログラムを書込ましたが、253さんと同じエラー
avrdude: stk500_getsync(): not in sync: resp=0x00 がでましたが253さんのように自己解決できません。表示はマイコンボードに書込でいます→緑色の帯表示→エラーメッセージとなります。
なお、下記を参考とし、同じく配線しました。
http://www.geocities.jp/y_taka216/ramonino/arduino/002.html PCはwindows7 64bitを使用してます。秋月usb変換モジュール等で互換マイコン化してLチカ確認しました。arduino1.5.5使用、ボード:arduino duemilanove or diecimila、プロセッサ:Atmega328、ポート:COM2を選択してマイコンボードを書込を押してます。
デバイスマネージャーでusb serial converterはCOM2です。
お忙しい中、書込可能になるようどなたか宜しくご指導お願い致します。
リンク先みたら水晶のとこに負荷容量ないんだけどこれでまともに発振すんのかな?
>プログラムの書き込みを開始し、画面下のゲージが半分ぐらいになったら+5Vをマイコン側に挿してください。 ひどいなこれ こんな使い方してたら壊れても仕方ない そのサイトは参考にするな
782 :
たかたか :2014/02/10(月) 03:32:19.84 ID:N9e5nnai
>>781 早速返信ありがとうございます。
ブートローダを再度入れ直すのでしょうか。
その際にリンク先にはATmega168で「lFuseの値をATmega168新品デフォルトの62からE2に変更します。」と記載されてましたが、
ATmega328の場合でもこの頁と同じ数値でよろしいのでしょうか。
何度も伺いすみません。宜しくご指導をお願い致します。
>>782 arduino IDEのフォルダの中にboard.txtがあるのでそれを参照
Duemilanoveだと
atmega328.bootloader.low_fuse=0xFF
atmega328.bootloader.high_fuse=0xDA
atmega328.bootloader.extended_fuse=0x05
ってかいてある
上からそれぞれlFuse hFuse eFuseに対応してる
てか素直に一台 完成品買えや
俺はなんかコレクターみたいにコピー品やらオリジナルやら増えまくってるけど、 最初は自分で作ってみた。奇跡的に上手く行ったけど
wiring_digital.c を見るとdigitalWrite()が遅いわけが分かる まずPWMに使っていないか調べてPWMを無効にする ピン番号からポートアドレスと書き込みデータを用意する SREGを保存して割り込みを禁止 出力ポート書き換え SREG復帰 これだけやって5us、さすがAVRだ
>>786 >wiring_digital.c を見るとdigitalWrite()が遅いわけが分かる
確かにも少し速くできそうな感じではあるな
そこまでやるならArduino以外も使いこなせるんじゃねぇえの?
Arduino の digitalWrite() とかって、入門者とかを考慮して、安全(変な引数とか与えても他に 影響与えたりしない)よう作られてるとなんとなく思っていたのだが、中見たら、ピン番号の 範囲チェックすらやってないんだなあ。ちょっと驚いた。
おまえの目は節穴か
>>790 まさか↓
if (port == NOT_A_PIN) return;
を範囲チェックとは思ってないだろうな?
また風土君け?
793 :
たかたか :2014/02/10(月) 23:36:10.69 ID:N9e5nnai
>>783 さま、
>>784 さま
マイコンの1番ピンと7番ピンを10kΩの抵抗でつないで、Atmega328を代えてブートローダを入れなおしましたところ、マイコンボードへの書込みが完了しました。
ご指導ありがとうございました!
>>791 uint8_t port = digitalPinToPort(pin)
とそのご指摘の奴セットでだよ
にきまっとるだろ
>>793 あれ、じゃあ最初の328Pは逝ってしまったのですか…
でも上手く行って良かったですね!
書きこみミスっただけなら下のやり方で直るかも コマンドプロンプトで avrdude -c diecimila -p m328p -t -B 4800 -P ft0 avrdude> erase avrdude> w efuse 0 0x05 avrdude> w hfuse 0 0xde avrdude> w lfuse 0 0xff avrdude> d efuse avrdude> d hfuse avrdude> d lfuse avrdude> quit これでチップが初期化されるので後は普通にブートローダー書き込めばOK avrdudeはIDEにはいってるやつじゃなくてserjtagのやつを使う
>>794 >とそのご指摘の奴セットでだよ
>にきまっとるだろ
V1.52のコードで↓だけど、
#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
/* 略 */
void digitalWrite(uint8_t pin, uint8_t val)
{
/* 略 */
uint8_t port = digitalPinToPort(pin);
/* 略 */
if (port == NOT_A_PIN) return;
pinの値チェックどこでしてるの?? ノーチェックでいきなりテーブル参照してるよう見えるけど。
>>797 だからそのテーブル参照で変な値がくればNOT_A_PINが返されるだってば
>>798 pin が変な値で digital_pin_to_port_PGM[] の範囲超えたらどうなんの?
800 :
774ワット発電中さん :2014/02/11(火) 12:13:54.90 ID:9EP7QItA
ありがとう一つめの328・・・ 君のことは忘れないよ . + .:. . . + :. . +. . : . + . . . :. . . + Π || (二X二O || .+ . ∧∧ || /⌒ヽ)_||_ _〜( );;;;::\ " "" """""""" ""/; "" """ ""/:;
>>801 なんでARM版のソース貼ってんのか解らんけど、
extern void digitalWrite( uint32_t ulPin, uint32_t ulVal )
{
/* Handle */
if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN )
{
return ;
}
これも ulPin の範囲チェックしないで配列参照してるね。何言いたいんだか解らんよ。
ちびでぃ〜のpro168っていうの買って ハンダ付けしてAVRISP mkIIでブートローダ書こうとしたのですが ArduinoIDEにUSBにデバイスがないとかなんとか言われて書けません しかたないのでAVR Studioで書いたんですが 168diecimila.hexみたいなのでいいんですか?動いてますけど Uno.hexみたいなものもあるんでしょうか promini16MHz.hexとかそれぞれあるならそれにしたいんですけど
>>802 家帰ってからdigitalWriteに0~100まで突っ込んで全IOの出力みてみた
20超える値いれると複数のIOがhighになるなどの変な出力がちょこちょこと・・
異常入力のフィルタリングは出来とらんね
私の勘違いでした スマン
>>804 >私の勘違いでした スマン
素直でよろしい。
803です ArduinoIDEでAVRISPを使うにはlibusbのドライバかなんかがいると書いてありました でも、そもそもAVRISP mkII自体デバイスマネージャーでどこにあるのかもわからず ArduinoIDEのフォルダにあるドライバをどうやって当てるのかもわかりません どうやるのか教えていただけませんか
>>806 AVR studioがインストしてある環境ではAVRISPmkIIはデバイスマネージャでJungoにあります
ArduinoIDEでAVRISPmkIIを使うためにlibusbを使うとAVR studioで使えなくなりますが
いいのですか? (まあデバイスマネージャで都度ドライバ切り替えれば使えはします)
ドライバはlibusb-win32をネットから探しダウンロードし
libusb-win32-bin-*\binフォルダ配下のinf-wizard.exeを使ってインストします。
あとunoのブートローダはoptibootと言います。
>>786 >wiring_digital.c を見るとdigitalWrite()が遅いわけが分かる
本来同時に複数ビット操作できるGPIOを1ビットづつ操作する仕様と割り切った時点で
実行速度については重視してない。
速度重視してコーディングすれば今の1/2くらいにはできると思う。
>>807 arduinoのlibusbでドライバ指定しても動きませんでした
ネットで探してみます
AVRStudioは今は使えなくていいです
optibootなんですね
UnoとDiecimilaの区別もついてませんがそちらで焼いてみます
810 :
808 :2014/02/12(水) 22:51:27.18 ID:y5TNO+Kz
下記のプログラムで digitalWrite() の速度を計ってみた。 通信に使うピン 0,1 を除いた18本を HIGH にして LOW にすることを 10000回繰り返し、 掛かった時間をミリ秒単位で計測して、シリアルモニタに出力する。 手元の Arduino Uno R3 でおよそ 1560〜1562 ミリ秒掛かった。 ループ処理に要した時間は無視するとして、一回の digitalWrite() で約4.3μ秒という計算になる。 static const int NUM_LOOP = 10000; void setup() { Serial.begin(9600); for (uint8_t i = 2; i < NUM_DIGITAL_PINS; i++) { pinMode(i, OUTPUT); } } void loop() { uint32_t start = millis(); for (uint16_t i = 0; i < NUM_LOOP; i++) { for (uint8_t j = 2; j < NUM_DIGITAL_PINS; j++) { digitalWrite(j, HIGH); digitalWrite(j, LOW); } } Serial.println(millis() - start); }
811 :
808 :2014/02/12(水) 23:02:26.95 ID:y5TNO+Kz
C:/Program Files (x86)/arduino-1.5.2/hardware/arduino/avr/cores/arduino/wiring_digital.c の digitalWrite() を下記の内容に書き換えて先のプログラムを実行した結果、863〜865 ミリ秒という 結果となった。ループ処理の時間を無視して、一回の digitalWrite() で約2.4μ秒という計算になる ので、まあ、およそ「今の1/2くらい」は達成できたと考える。 但し、プログラムサイズが 2734バイトから 2970バイトと 236バイトも増加しているので、実用的な コードかは疑問。 void digitalWrite(uint8_t pin, uint8_t val) { if (val == LOW) { switch (pin) { case 0: cbi(PORTD, 0); break; case 1: cbi(PORTD, 1); break; case 2: cbi(PORTD, 2); break; case 3: cbi(TCCR2A, COM2B1); cbi(PORTD, 3); break; case 4: cbi(PORTD, 4); break; case 5: cbi(TCCR0A, COM0B1); cbi(PORTD, 5); break; case 6: cbi(TCCR0A, COM0A1); cbi(PORTD, 6); break; case 7: cbi(PORTD, 7); break; case 8: cbi(PORTB, 0); break; case 9: cbi(TCCR1A, COM1A1); cbi(PORTB, 1); break; case 10: cbi(TCCR1A, COM1B1); cbi(PORTB, 2); break; case 11: cbi(TCCR2A, COM2A1); cbi(PORTB, 3); break; case 12: cbi(PORTB, 4); break; case 13: cbi(PORTB, 5); break; case 14: cbi(PORTC, 0); break; case 15: cbi(PORTC, 1); break; case 16: cbi(PORTC, 2); break; case 17: cbi(PORTC, 3); break; case 18: cbi(PORTC, 4); break; case 19: cbi(PORTC, 5); break; } } else { switch (pin) { case 0: sbi(PORTD, 0); break; case 1: sbi(PORTD, 1); break; case 2: sbi(PORTD, 2); break; case 3: cbi(TCCR2A, COM2B1); sbi(PORTD, 3); break; case 4: sbi(PORTD, 4); break; case 5: cbi(TCCR0A, COM0B1); sbi(PORTD, 5); break; case 6: cbi(TCCR0A, COM0A1); sbi(PORTD, 6); break; case 7: sbi(PORTD, 7); break; case 8: sbi(PORTB, 0); break; case 9: cbi(TCCR1A, COM1A1); sbi(PORTB, 1); break; case 10: cbi(TCCR1A, COM1B1); sbi(PORTB, 2); break; case 11: cbi(TCCR2A, COM2A1); sbi(PORTB, 3); break; case 12: sbi(PORTB, 4); break; case 13: sbi(PORTB, 5); break; case 14: sbi(PORTC, 0); break; case 15: sbi(PORTC, 1); break; case 16: sbi(PORTC, 2); break; case 17: sbi(PORTC, 3); break; case 18: sbi(PORTC, 4); break; case 19: sbi(PORTC, 5); break; } } }
>>807 >ドライバはlibusb-win32をネットから探しダウンロードし
>libusb-win32-bin-*\binフォルダ配下のinf-wizard.exeを使ってインストします。
ダウンロードしてinf-wizard起動してyour.inf保存してインストール押して
インストール成功とかになって、新しいデバイスが見つかって
場所の指定でyour.infのあるマイドキュメント指定して
デバイスの準備ができました。
日付 2009.09.02
バージョン10.1.1.0
になるけどやっぱりUSBが見つからないとか出ます
これ以外に何をすればいいのでしょうか
>>811 分岐が19もあるとswitchで結構掛かるから
そこまでやるならマクロ化して計算量ゼロにした方がいい
> マクロ化して計算量ゼロにした方がいい コードサイズの見積もりもできない馬鹿↑は平気でこういうこと言う
まあまあ落ち着こう コードで示せばいいだけさ
コードサイズなんてメモリの許す限りでかくても何も問題ないでしょ ダウンロードや読み込みの発生するPC用プログラムとは違うんだし 「メモリに入りきらないから」という理由以外で積極的に小さくする意味が分からん
・コードサイズが小さいほうがマイコンボードに書き込む時間が短い ・コードサイズが小さいほうが使用できるマイコンボードの選択肢が広い ・プログラムは版を重ねるごとに肥大化していくものなので、将来の改版を考慮すれば「メモリの許す限りでかくても何も問題ない」とは言えない
unoにくっついてる328Pの内容を別なまっさらの328pにコピーしていのですが、どうやったらよいのでしょうか?
822 :
808 :2014/02/14(金) 23:13:46.97 ID:Sn0GStml
>>813 digitalWrite() をマクロ化
#define digitalWrite(pin, val) \
{ \
switch (pin) { \
case 0: ((val) == LOW) ? cbi(PORTD, 0) : sbi(PORTD, 0); break; \
case 1: ((val) == LOW) ? cbi(PORTD, 1) : sbi(PORTD, 1); break; \
case 2: ((val) == LOW) ? cbi(PORTD, 2) : sbi(PORTD, 2); break; \
case 3: cbi(TCCR2A, COM2B1); ((val) == LOW) ? cbi(PORTD, 3) : sbi(PORTD, 3); break; \
case 4: ((val) == LOW) ? cbi(PORTD, 4) : sbi(PORTD, 4); break; \
case 5: cbi(TCCR0A, COM0B1); ((val) == LOW) ? cbi(PORTD, 5) : sbi(PORTD, 5); break; \
case 6: cbi(TCCR0A, COM0A1); ((val) == LOW) ? cbi(PORTD, 6) : sbi(PORTD, 6); break; \
case 7: ((val) == LOW) ? cbi(PORTD, 7) : sbi(PORTD, 7); break; \
case 8: ((val) == LOW) ? cbi(PORTB, 0) : sbi(PORTB, 0); break; \
case 9: cbi(TCCR1A, COM1A1); ((val) == LOW) ? cbi(PORTB, 1) : sbi(PORTB, 1); break; \
case 10: cbi(TCCR1A, COM1B1); ((val) == LOW) ? cbi(PORTB, 2) : sbi(PORTB, 2); break; \
case 11: cbi(TCCR2A, COM2A1); ((val) == LOW) ? cbi(PORTB, 3) : sbi(PORTB, 3); break; \
case 12: ((val) == LOW) ? cbi(PORTB, 4) : sbi(PORTB, 4); break; \
case 13: ((val) == LOW) ? cbi(PORTB, 5) : sbi(PORTB, 5); break; \
case 14: ((val) == LOW) ? cbi(PORTC, 0) : sbi(PORTC, 0); break; \
case 15: ((val) == LOW) ? cbi(PORTC, 1) : sbi(PORTC, 1); break; \
case 16: ((val) == LOW) ? cbi(PORTC, 2) : sbi(PORTC, 2); break; \
case 17: ((val) == LOW) ? cbi(PORTC, 3) : sbi(PORTC, 3); break; \
case 18: ((val) == LOW) ? cbi(PORTC, 4) : sbi(PORTC, 4); break; \
case 19: ((val) == LOW) ? cbi(PORTC, 5) : sbi(PORTC, 5); break; \
} \
}
としたとして、
>>810 のプログラムのように引数 pin が変数で与えられる限りは、switch() 〜 case の処理が
なくなることはない。
関数呼び出しのオーバーヘッドはなくなるが、digitalWrite() の引数を変数で使用した箇所の分だけコードの
肥大化も引き起こす。
digitalWrite(0, HIGH);
のように引数が定数で与えられた場合にはswitch() 〜 case の処理や三項演算子の部分も最適化で削除され、
実行速度とコードサイズの両方で著しい効果があるが、先のコードの肥大化の問題を考慮するとマクロ化は
賢明な方法ではない。
↑ #include <wiring_private.h> が抜けてた。
#define DIGITAL_WRITE_0(val) ((val) == LOW) ? cbi(PORTD, 0) : sbi(PORTD, 0); #define DIGITAL_WRITE_1(val) ((val) == LOW) ? cbi(PORTD, 1) : sbi(PORTD, 1); とかじゃね?
そもそもピン番号を変数に入れる時点で賢明じゃないし その辺の話は適材適所だからどうでもいい
>>824 あ、そこまでやったなら引数も不要なの判るでしょ
要するにdigitalWrite(0, HIGH)ならDIGITAL_WRITE_0_HIGHとかまで変換する
こうすると変数を入れてもコンパイルも通らないから
バウンダリチェックすら無い関数に入れるより安全かもね
827 :
808 :2014/02/14(金) 23:50:33.47 ID:Sn0GStml
digitalWrite() の引数が定数だとインライン展開され、変数だと関数呼び出しを行う例。 #include <wiring_private.h> #define macroDigitalWrite(pin, val) \ { \ switch (pin) { \ case 0: ((val) == LOW) ? cbi(PORTD, 0) : sbi(PORTD, 0); break; \ case 1: ((val) == LOW) ? cbi(PORTD, 1) : sbi(PORTD, 1); break; \ case 2: ((val) == LOW) ? cbi(PORTD, 2) : sbi(PORTD, 2); break; \ case 3: cbi(TCCR2A, COM2B1); ((val) == LOW) ? cbi(PORTD, 3) : sbi(PORTD, 3); break; \ case 4: ((val) == LOW) ? cbi(PORTD, 4) : sbi(PORTD, 4); break; \ case 5: cbi(TCCR0A, COM0B1); ((val) == LOW) ? cbi(PORTD, 5) : sbi(PORTD, 5); break; \ case 6: cbi(TCCR0A, COM0A1); ((val) == LOW) ? cbi(PORTD, 6) : sbi(PORTD, 6); break; \ case 7: ((val) == LOW) ? cbi(PORTD, 7) : sbi(PORTD, 7); break; \ case 8: ((val) == LOW) ? cbi(PORTB, 0) : sbi(PORTB, 0); break; \ case 9: cbi(TCCR1A, COM1A1); ((val) == LOW) ? cbi(PORTB, 1) : sbi(PORTB, 1); break; \ case 10: cbi(TCCR1A, COM1B1); ((val) == LOW) ? cbi(PORTB, 2) : sbi(PORTB, 2); break; \ case 11: cbi(TCCR2A, COM2A1); ((val) == LOW) ? cbi(PORTB, 3) : sbi(PORTB, 3); break; \ case 12: ((val) == LOW) ? cbi(PORTB, 4) : sbi(PORTB, 4); break; \ case 13: ((val) == LOW) ? cbi(PORTB, 5) : sbi(PORTB, 5); break; \ case 14: ((val) == LOW) ? cbi(PORTC, 0) : sbi(PORTC, 0); break; \ case 15: ((val) == LOW) ? cbi(PORTC, 1) : sbi(PORTC, 1); break; \ case 16: ((val) == LOW) ? cbi(PORTC, 2) : sbi(PORTC, 2); break; \ case 17: ((val) == LOW) ? cbi(PORTC, 3) : sbi(PORTC, 3); break; \ case 18: ((val) == LOW) ? cbi(PORTC, 4) : sbi(PORTC, 4); break; \ case 19: ((val) == LOW) ? cbi(PORTC, 5) : sbi(PORTC, 5); break; \ } \ } inline void digitalWrite(const uint8_t& pin, uint8_t val) __attribute__((always_inline)); inline void digitalWrite(const uint8_t& pin, uint8_t val) { macroDigitalWrite(pin, val); } void digitalWrite(uint8_t& pin, uint8_t val) { macroDigitalWrite(pin, val); } 引数に変数を使った関数呼び出しのオーバーヘッドをコードサイズが肥大しても抑えたいときは macroDigitalWrite() を直接使用することも可能なのでプログラマの裁量次第で最適なコードを 選択できるが、シンプルさが身上の Arduino 向きではないな。
>>824 >>826 わざわざ違う書き方するメリットないでしょ。使いづらいだけじゃん。ピン番号をマクロや定数で指定できないし。
>>825 >そもそもピン番号を変数に入れる時点で賢明じゃないし
なんで??
ナイトライダー的にLED光らすだけでもピン番号変数に入れられないとやってられないと思うけど。
速度を重視するかコードサイズを重視するかは問題出てから修正でいい。 まず保守性第一で書けばいいんだよ。
831 :
774ワット発電中さん :2014/02/16(日) 14:30:38.70 ID:eV4gSSrJ
割込みが発生するとSREGのGIEが自動的にクリアされ、reti命令でセットされるようです。 優先度の高い割込み(H)と優先度の低い割込み(L)があった時 (L)の処理中に(H)が発生した場合、(L)のretiの後に(H)の始まるのですか? また、(H)の処理中に意図的にGIEをセットしたら(H)を中断して(L)の処理が始まるのですか? 初歩的な質問ですみません
>>831 >(L)の処理中に(H)が発生した場合、(L)のretiの後に(H)の始まるのですか?
YES
割り込み要因フラグとGIEは別々に機能する
>また、(H)の処理中に意図的にGIEをセットしたら(H)を中断して(L)の処理が始まるのですか?
YES
ハンドラ処理中なら多重割り込みを許可することになる
834 :
831 :2014/02/16(日) 16:07:36.68 ID:eV4gSSrJ
thanX!
arduino UNOでbootloaderを焼こうと思い
http://make.kosakalab.com/make/electronic-work/burn_bootloader_uno_jp/ の通りにunoのATmega16U2を書き換え、udevに
/etc/udev/rules.d/40-permission.rules
というファイルを追加して
cat /etc/udev/rules.d/40-permission.rules
SUBSYSTEM=="usb_device",SYSFS{idVendor}=="03eb",SYSFS{idProduct}=="2104",MODE="0666"
このような内容に編集し、udevを再起動したのですが、
以下のようなエラーが出ます。
$ avrdude -c avrispmkII -p m328p -P usb -t -F
avrdude: usb_open(): cannot read serial number "error sending control message: Operation not permitted"
avrdude: usb_open(): cannot read product name "error sending control message: Operation not permitted"
avrdude: usbdev_open(): error setting configuration 1: could not set config 1: Operation not permitted
avrdude: usbdev_open(): did not find any USB device "usb"
$ sudo avrdude -c avrispmkII -p m328p -P usb -t -F
avrdude: usb_open(): cannot read serial number "error sending control message: Connection timed out"
avrdude: usb_open(): cannot read product name "error sending control message: Connection timed out"
avrdude: usbdev_open(): error setting configuration 1: could not set config 1: Connection timed out
avrdude: usbdev_open(): did not find any USB device "usb"
自分には手が負えないので協力お願いします。
環境は、
thinkpad x61(後期モデル)
debian wheezy 64bit
avrdudeは、
http://suz-avr.sblo.jp/category/780472-1.html を参考にビルドしたものとarduino IDE付属のモノをとっかえひっかえ使っております。
lsusbは
Bus 004 Device 038: ID 03eb:2104 Atmel Corp. AVR ISP mkII
の様に出力されます。
dmesgは
[16906.064200] usb 4-2: USB disconnect, device number 38
[16907.048147] usb 4-2: new full-speed USB device number 39 using uhci_hcd
[16907.225773] usb 4-2: New USB device found, idVendor=03eb, idProduct=2104
[16907.225782] usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16907.225788] usb 4-2: Product: LUFA AVRISP MkII Clone
[16907.225794] usb 4-2: Manufacturer: Dean Camera
[16907.225799] usb 4-2: SerialNumber: 0000A00128255
のように出力されます。
>>835 udevルールにGROUPを設定する
MODEを777にしてしまう
を試してみてくれ
>>836 レス有難うございます。
udevにGROUP="dialout"を書き足してMODE="777"にしてましたが、
>>835 と同じエラーが出て、書き込めませんでした。
arduinoをavrisp mkIIのクローンにして、ブートローダーを焼くのは難しそうなので、AE-UM232Rを使って当分は書き込もうと思います。
お騒がせしました。
-P usb っているのかねえ avrdudeのビルド環境作ったなら少しはデバッグしてみなよ
>>838 そうですね。ついでに少しやってみようと思います。
スイッチ押すと徐々に明るくなって、もう一回押すと徐々に暗くなるLEDを作ろうと思って 下のようなコード書いても徐々に明るくなって消えてしまうorz int sw=7; //7番ピンにスイッチ int led=11; //11番ピンにLED int b=0; //カウントアップ用変数 int i=0; //カウントダウン用変数 void setup() { pinMode(sw,INPUT); pinMode(led,OUTPUT); } void loop() { if(digitalRead(7)==HIGH){ delay(10); for(b=0;b<255;b++){ analogWrite(led,b); delay(10); } } if(digitalRead(7)==LOW){ delay(10); for(i=255;i>0;i--){ analogWrite(led,i); delay(10); } } } 誰か助けてください
>>840 暗くする前に一度HIGHになるまで待たんと
>>840 スイッチがモーメンタリ(押している間だけ閉になるタイプ)なら
チャタリング取りとエッジ検出と今のオンオフ状態のフラグを反転する処理が必要
>>840 折角sw定義してるんだからdigitalRead()で使え
>>840 それだとSW ONで点いて、SW OFFで消えるような動作じゃない?
arduinoでメール送信・受信してる方おられますけど 暗号化できてないですし、arduinoでのメール関連は実用的でないってことでいいんですかね?
暗号化すりゃいいじゃん
ssl/tlsまわりの情報がないので自分で実装するのは難しいかと思いまして
>自分で実装するのは難しい 個人的な理由から >arduinoでのメール関連は実用的でない 普遍的な結論が導かれるわけないじゃん
>>848 Webでみかけるサンプルや、「メール送ってみた」の記事などでは暗号化されていないようでしたので
暗号化できないならばメールの送受信は実用的ではないと私は思いました
ssl/tlsを私は実装する知識もないのでアナタに馬鹿にされても仕方ありません
いろいろな言語でOpenSSLが利用できる環境が整っているので、それに甘えてました
馬鹿には無理
arduinoでメールが実用的じゃないってアピールしたいだけの書き込みだよね
>>852 まずはArduinoの本を一冊買ってくるべし。
そんな感じのセンサーの使い方書いてあるはず。
データーシートを読めばよい
暗号化したって、どうせエシュロンには解読されてんだろ?無駄無駄
ググってたら分かりやすいサンプルコード発見したからそれ改造して使うわ。サンクスコ
というか簡単すぎワロタ こういうライブラリ(IC2dev.hとかWire.h)ってArduinoでしか使えないのん? もうArduino無しじゃ生きていけないよう・・
>>841-844 ありがとうございます
改良してもダメだったorz
int sw=7; //7番ピンにスイッチ
int led=11; //11番ピンにLED
boolean run = false; //チャタリング対策
int b; //カウントアップ用変数
int i; //カウントダウン用変数
void setup(){
pinMode(sw,INPUT);
pinMode(led,OUTPUT);
digitalWrite(sw,HIGH);
}
void loop(){
if(digitalRead(sw)==LOW){
delay(100);
run=!run;
for(b=0;b<255;b++){
analogWrite(led,run+b);
delay(10);
}
}else{
delay(100);
run=!run;
for(i=255;i>0;i--){
analogWrite(led,run+i);
delay(10);
}
}
}
徐々に明るくなってまた暗くなり徐々に(ry
スイッチ押した状態で明るさのピーク迎えると徐々に暗くなる
チャタリング対策の部分がまずかったですかね
チャタリングじゃない。スイッチが押されて離されるまで待たんとダメ
すみません・・・こんな感じですか・・・? int i;//カウントアップ ダウン用 void setup(){ pinMode(7,INPUT); pinMode(11,OUTPUT); } void loop(){ if(digitalRead(7)==HIGH){ for(i=0;i<256;i++){ analogWrite(11,i); delay(10); } }else{ for(i=0;i<256;i++){ analogWrite(11,255-i); delay(10); } } }
>>861 チャタなんて関係ないよ。
ツッコミどころは色々あるけど、こんなところかな?
int sw=7; //7番ピンにスイッチ
int led=11; //11番ピンにLED
int b; //カウントアップ用変数
int i; //カウントダウン用変数
int sts; //状態
void setup(){
pinMode(sw,INPUT);
pinMode(led,OUTPUT);
sts = 0;
}
void loop(){
delay(10);
if(digitalRead(sw)==HIGH){
if (sts==0) {
for(b=0;b<255;b++){
analogWrite(led,run+b);
delay(10);
}
sts = 1;
} else {
for(i=255;i>0;i--){
analogWrite(led,run+i);
delay(10);
}
sts = 0;
}
}
}
>>862 ありがとうございます、無事動きました
スイッチの状態維持の処理について再度勉強し直します
>>865 一回押すとON もう一回押すとOFFの関数を作ると
後の処理が簡単になる
例えば、
// オルタネートスイッチとして7PINを読む
// チャタリングは無視(読む間隔が10msec以上空いていればとりあえず問題ない)
int altSw7()
{
static int alternate=0;
static int prevSw=0;
int sw;
sw = digitalRead(7)==HIGH ? 0 : 1; //負論理 LOでスイッチプッシュ
alternate ^= (prevSw ^ sw) & sw; // 反転
prevSw = sw;
return alternate==1 ? HIGH : LO;
}
loopは、こんなかんじ
setup()の中にでもi=0;を入れて初期化しておく
void loop(){
if(altSw7()==HIGH) {
if(i<255) {
i++;
analogWrite(11,i);
}
} else {
if(i>0) {
i--;
analogWrite(11,i);
}
}
delay(10);
}
CDSあったから
>>861 をベースに弄ってみた
暗くなったら点灯して、明るくなったら消灯する
int sen;//アナログ0番ピンにCDS
int led=11;//11番ピンにLED
int b=0;//カウントアップ用変数
int i=0;//カウントダウン用変数
int sts=0;//状態
void setup(){
pinMode(led,OUTPUT);
}
void loop(){
sen=analogRead(0)/4;
if((sen<8)&&(sts==0)){
b=0;
while(b<256){
b++;
delay(10);
analogWrite(led,b);
if(b==255){
sts=1;
}
}
analogWrite(led,255);
}else if((sen>7)&&(sts==1)){
i=0;
while(i<256){
i++;
delay(10);
analogWrite(led,255-i);
if(i==256){
sts=0;
}
}
analogWrite(led,0);
}
}
作ったのはいいけど、コードすっきりできんな
>>867 動いてよかったね
質問スレなので あえてダメ出しすると、
ひとところで2.5秒もループしたら他の事を同時にできなくなってしまうし
一瞬CDSを暗くしてもLEDが点灯し終わるまでが次の反応ができない
loop()って一定時間ごとに呼び出されるんじゃなかった?
>>869 loopは即呼び出し続けられる
mainの中身
int main() {
ライブラリー初期化等
:
setup();
for (;;) loop();
}
うっしゃ、割り込みで美しいスケッチ書こうと思ったけど、 Pin11なのでやる気無くなった。 みんな優しいのね。
>>871 IOをポーリングして処理はイベントドリブンでも良いよ
Arduino互換機のDavinciでHIDデバイス作ったんですがHIDドライバ以外にプログラム転送用のドライバも要求されるため 色々なPCで使うのに不便しています ドライバをインストールしなくてもHIDデバイスとしては動くんですが毎回インストール要求されるので気持ち悪いです 何かいい方法はないでしょうか
色々なPCで使わない
bootloader改造してみるとか? どうなるかわからんけど
それはPCの設定の問題のような気がする
879 :
774ワット発電中さん :2014/02/24(月) 08:37:11.13 ID:pePuXX0t
おはようございまっしゅ。 手元に16.128MHzの発振モジュールがあるんですが、これをATMEGA328につけて aruduino動きますかね?
>>879 ,880
boardsの定義の有効桁数もっと大きいから、たいていの場面で使えるんじゃない? ただし、自己解決厳守、ここでの質問禁止ね。
16.384じゃないのか
定数変えてライブラリーやbootを書き換えれる人なら16.128MHzで動く
884 :
774ワット発電中さん :2014/02/24(月) 22:53:29.77 ID:b/fIqVg6
超初心者です。どうロジックを構成して良いのかが分からず、悩んでおります。 7セグLEDを14ケタ並べ、GPSから取得した時刻をYYYYMMDDHHMMSSと言った具合に表示させたいと思っています。 シリアルに接続したGPSから取得した時刻を表示しようとすると、LED点灯の処理がシリアルの受信を待っているのか、 一瞬LEDが光るだけで、ダイナミック点灯になりません。時刻の数字は一瞬ですがGPSから受信したものが表示されています。 #表現が難しいですが、ビクビクッと数字が点いて1秒くらい消灯。これを繰り返す。 GPSからの受信をしないよう処理内容を変えれば任意の数字は綺麗にダイナミック点灯出来ています。 一部割愛していますが、コードは下記の様に書いています。 #include <Time.h> #include <TinyGPS++.h> #include <SoftwareSerial.h> SoftwareSerial SerialGPS = SoftwareSerial(11, 12); TinyGPSPlus gps; void setup() { Serial.begin(9600); SerialGPS.begin(9600); pinMode(10,OUTPUT); pinMode(9,OUTPUT); pinMode(8,OUTPUT); } void loop() { while(SerialGPS.available()){ char c = SerialGPS.read(); if(gps.encode(c)){ setTime(gps.time.hour(),gps.time.minute(),gps.time.second(),gps.date.day(),gps.date.month(),gps.date.year()); dispwatch(); } } } ※dispwatchはLED表示用の関数 恐れ入りますがアドバイスを頂戴出来ればと思います。
>>884 GPS から受信したデータがエンコードできたときだけ dispwatch() 呼んでるけどいいのか?
どうやってダイナミック点灯してるのか知らんけど、タイマー割り込み等使わないなら常時呼び出すべきだと思うが。
void loop() {
while(SerialGPS.available()){
char c = SerialGPS.read();
if(gps.encode(c)){
setTime(gps.time.hour(),gps.time.minute(),gps.time.second(),gps.date.day(),gps.date.month(),gps.date.year());
}
}
dispwatch();
}
886 :
774ワット発電中さん :2014/02/24(月) 23:22:49.24 ID:b/fIqVg6
885さんありがとうございます! dispwatch()をifの外にする事でいくぶん表示が綺麗になりました! しかし、まだシリアル通信をしてると思われる時にビクビクッと LEDが点滅しています。。 タイマー割り込みにtimer1を使い、dispwatch()をsetupで呼んでみたりしましたが、 割り込み秒数を早くすると197001010000の表示になり、遅くすると20140224XXXXXXと一瞬光って消えます。 void setup() { Serial.begin(9600); SerialGPS.begin(9600); pinMode(10,OUTPUT); pinMode(9,OUTPUT); pinMode(8,OUTPUT); Timer1.initialize(10000); Timer1.attachInterrupt(dispwatch); } void loop() { while(SerialGPS.available()){ char c = SerialGPS.read(); if(gps.encode(c)){ setTime(gps.time.hour(),gps.time.minute(),gps.time.second(),gps.date.day(),gps.date.month(),gps.date.year()); } } //dispwatch(); } 割り込みについても使い方がこれで良いのか、わかっておりません。。 引き続きアドバイスをいただければと思います。
>>886 >dispwatch()をifの外にする事でいくぶん表示が綺麗になりました!
ifの外じゃねーよwhileの外だよ。
888 :
774ワット発電中さん :2014/02/24(月) 23:33:16.38 ID:b/fIqVg6
887さん> すいません、、whileの外です。。 コードはそのようになっています。申し訳ありません。。
889 :
774ワット発電中さん :2014/02/25(火) 00:23:49.93 ID:l4+PhUIo
別回路でバッファ作ってバンク切り替え的なこと大学の時にしたな
891 :
879 :2014/02/25(火) 01:15:43.76 ID:aMh6b0Sp
お答えどうもです。物は16.128MHzです。50ppmなんでもったいないなー
Serialを9600より
途中送信してしまった 案1Serialを9600より速くする 案2Serialの受信完了を待って書き換えではなくSerialからデータを受信した時のみ書き換えにする リフレッシュの時間を一定にすれば綺麗に見えるはず
受信途中の中途半端なデータを使わないこと
ディレイを自分で書き換えられるなら問題なし
dispwatch() がくさいと思うけどな。 ある桁が点灯して、そしてすぐ次の桁に移動してるんじゃない? GPSデータとか関係なしに、LED14桁綺麗にカウントアップしたりする? 一桁何ms光らせて、×14で全体が何ms周期の設定なんだろう。
>>889 > シリアルから受信のタイミングで処理が待たされている(?)と予想しています。
Ggps.encode() と setTime() の処理を行ってる際に 7セグLED のダイナミック点灯の処理が止まるのでチラついてる。
> どのようにすればシリアルの処理を待たずに綺麗なダイナミック点灯が出来るのか、アドバイス頂ければと思います。
・7セグLED のダイナミック点灯をタイマー処理(14桁なら1/1000〜1/2000秒程度)で呼び出す。
・タイマー処理と SoftwareSerial が同時に使えるか分からん。使えないようであれば GPS との通信は Serial を使う。
ソフトウェアシリアルなら受信始めたら割り込み禁止だからタイマーとの共存は不可
>>897 GPSの受信とLED点灯を別の仕事にする
GPSデータを別変数に保存して、LED表示はその変数に対して別にカラカラloopで回す
(最後に受信したデータを表示し続けることになる)
更にLEDの表示更新を1秒程度にする。Timerを適当に使えばいい(LEDの表示ループは回り
続けるけど、表示内容更新を1秒にする)
900 :
899 :2014/02/25(火) 15:03:43.30 ID:Pf8Ekm6Q
LCDの方が楽だと思うよ。多分
GPS受信にシリアルを使う以上タイマー割込み使おうが何しようが ダイナミック点灯処理の停止は防げないと思
あとは dispatch の書き方次第でしょ loop 1周の間に全部のLED順番に表示とかやると綺麗にならんと思う タイマー使わない場合、loop 1周する間に、あるLEDを1つ点灯させて(させたままloop完走する) 2週目は1週目で点灯させた奴を消して次の奴を点灯させて みたいにすれば割り込みいらんしまにあうんじゃないかね 少なくとも4桁くらいなら余裕だが桁数多いとわからん (時間かかりすぎるとLEDが「順番に」光るのが目で追える遅さに)
自分でやったときどうしたっけと思って調べたら 7セグのときは人様のライブラリ使ってたw そのソースを見たら、loop 1周につき桁1つ(LED1つではなく桁全部同時点灯)で表示して戻り 次の loop では前の桁消して次の桁表示して戻り、って感じの実装だった そりゃ足いっぱいあるんだから7seg+dotくらいは同時に点灯させたほうが速いわな 適当言ってすみませんでした
そこで一発 スタティック点灯ですよ。部長
ソフトで他のことしてる時点で綺麗なダイナミックにするのは難しいし そういう事をゴリゴリやるのにarduinoは向かない どっちかをハードウェアにするか生AVRで緻密に書き直すか諦める
906 :
774ワット発電中さん :2014/02/25(火) 22:07:19.10 ID:l4+PhUIo
皆様!沢山のアドバイスありがとうございました!
お蔭さまでやりたい事を実装する事が出来ました!
http://iup.2ch-library.com/i/i1138845-1393332987.gif 取り急ぎやった事としてはアドバイス頂いた通りSoftwareSerialをやめ、1番ピンRXにGPSを差し、
ハードウェアシリアル(?)で受信させる事で実装出来ました。
お恥ずかしいのですが、次書き込みで全ソース貼ります。
目を凝らさないと分からないですが、最後の桁が若干ちらつく事があります。
この辺は他のアドバイスにもありましたタイマーなどで対応しようと思っています。
ダイナミック点灯はLED制御用に2つ、カソードコモン制御用に1つのシリパラIC(74hc595ap)を計3つ使ってます。
LCDやスタティック点灯を使わなかったのは、単に今の構成でGPS時計が作りたかったから、です。
皆様のおかげで実装する事が出来ました。大変勉強になりました。ありがとうございました!
907 :
774ワット発電中さん :2014/02/25(火) 22:07:54.47 ID:l4+PhUIo
#include <Time.h> #include <TinyGPS++.h> TinyGPSPlus gps; const int moji[] = { 0b00111111, // 0 0b00000110, // 1 0b01011011, // 2 0b01001111, // 3 0b01100110, // 4 0b01101101, // 5 0b01111101, // 6 0b00100111, // 7 0b01111111, // 8 0b01101111, // 9 }; const int dig[14][2]= { {0b11111110,0b11111111}, //1桁目[0] {0b11111101,0b11111111}, //2桁目[1] {0b11111011,0b11111111}, //3桁目[2] {0b11110111,0b11111111}, //4桁目[3] {0b11101111,0b11111111}, //5桁目[4] {0b11011111,0b11111111}, //6桁目[5] {0b10111111,0b11111111}, //7桁目[6] {0b01111111,0b11111111}, //8桁目[7] {0b11111111,0b11111011}, //9桁目[8] {0b11111111,0b11110111}, //10桁目[9] {0b11111111,0b11101111}, //11桁目[10] {0b11111111,0b11011111}, //12桁目[11] {0b11111111,0b10111111}, //13桁目[12] {0b11111111,0b01111111}, //14桁目[13] }; const int array_size = sizeof(dig) / sizeof(dig[0]); void setup() { Serial.begin(9600); pinMode(10,OUTPUT); pinMode(9,OUTPUT); pinMode(8,OUTPUT); } void loop() { while(Serial.available()){ char c = Serial.read(); if(gps.encode(c)){ setTime(gps.time.hour()+9,gps.time.minute(),gps.time.second(),gps.date.day(),gps.date.month(),gps.date.year()); } } dispwatch(); }
908 :
774ワット発電中さん :2014/02/25(火) 22:08:44.88 ID:l4+PhUIo
void dispwatch () { char s[array_size]; sprintf(s,"%04d%02d%02d%02d%02d%02d",year(),month(),day(),hour(),minute(),second()); for(int i=0;i<array_size;i++){ int t = s[i] - '0'; //ascii to integer int dnum = moji[t]; if(i%2==1) dnum = dnum+0b10000000;//ドットを追加 if(i==1 || i==7 ||i==13) dnum = dnum-0b10000000;//yyyyとddにはドット不要 displed(dig[i][0],dig[i][1],dnum); } } void displed(int fst,int snd,int dig) { digitalWrite(9,LOW); shiftOut(8,10,MSBFIRST,fst); //1段目表示 shiftOut(8,10,MSBFIRST,snd); //2段目表示 shiftOut(8,10,MSBFIRST,dig); //出力文字 digitalWrite(9,HIGH); }
受信割り込みで発生するタイマ処理のブレなんて0.005msくらいのもんだと思うが それでも見えるというのなら普段からチラツキを入れておくって手もアル
> SoftwareSerial SerialGPS=SoftwareSerial(11, 12);
なので
>>901 のいうように送受信中は割り込み停止なのでダイナミック点灯は無理じゃない?
シリアルをハードウェアの方に繋ぐかGPSデータのGETを1時間に一回とかにすればチラつくのは1時間に一回で済む
その時の正時に点滅させるとかのエフェクトすればごまかせるかな?
リロードしてなかった 解決したみたいなのでよかったですね
>>908 >char s[array_size];
配列 s のサイズが足りない。
ここにソース貼るよりも、githubのような所に上げて、そのリンク貼った方が良いよ。 2ch書き込みは修正効かないし、過去ログ倉庫に未来永劫残るから
915 :
774ワット発電中さん :2014/02/25(火) 23:40:46.13 ID:l4+PhUIo
911さん ありがとうございます。何とか動いています! 912さん ご指摘ありがとうございます。修正します。 913さん そうでしたか。アカウント作って次回よりそうさせて頂きます。
916 :
774ワット発電中さん :2014/02/27(木) 03:43:02.20 ID:6Tdibw6P
arduinoを使い始めようとしています ドライバ関連で問題が出たため質問させて頂きます。 arduino 1.0.5をインストールしている状態でarduino unoをUSBに挿しても無反応です ドライバの検索すらしません。 デバイスマネージャには「ポート(COMとLPT)」だけではなく「ほかのデバイス」すら表示されないです。 arduinoのドライバのインストールの失敗すらできない場合どういった対処をすればよいのでしょうか? PCの型番はPR73026BSBREです
>>916 PC と Arduino と USB ケーブルを買い換えてみ
(1)同じUSBポートに、マウスなどほかのUSB機器をつないで認識しますか? YES 下へ NO メーカーへ (2)USBケーブルの予備は持っていますか? YES 下へ NO 家電量販店へ (3)ケーブルを交換したら変化がありますか? YES 下へ NO パーツショップへ (4)新しいデバイスを認識していますか? YES おめでとう NO リサイクルショップへ
>>916 ケーブルトラブルはけっこうあるが
それがないとして
unoをつないだ状態でコントロールパネル-
デバイスマネージャを起動 黄色い○の中に!が
表示されたデバイスを探し そのデバイスを削除
unoを抜いて,もう一度差す それで認識されればよし
またうまく認識されなければドライバがうまく入っていないか
USBシリアル変換やってるAtmega8U2 or 16U2がアウト
おれのパソコンに繋いでも無反応だがIDEから適当にポート選んでやったら流し込めたぜ。
16U2はWindowsに標準搭載されてるドライバを使うからドライバのインストールはしないんじゃね
まずは usbser.sys でググって勉強してはどうだろう
924 :
774ワット発電中さん :2014/03/01(土) 09:49:58.56 ID:ljUihyvs
亜留土由以野で 玲乎那留堵とか出てるのにいまだに 宇野 が標準のように使われてるのは何で なんかね?
uno=1
スペイン語?で残り一つだから2じゃねーか?
イタリア語じゃね? まぁラテン語族はどれも似てるけど
イタリア生まれだし
とうとう秋月が純正arduinoを取り扱い開始したな
いよいよ世界が終わるのか
931 :
774ワット発電中さん :2014/03/02(日) 08:53:29.70 ID:g1rr4Cnw
なぜ日は相変わらず輝くの? なぜ鳥は前と同じように歌うの? なぜ海は浜辺に押し寄せるの? 彼らはこの世が終わったということを知らないの? 世界は秋月がarduino売ったときに終わったのよ なわけねーだろ!
>>931 何を言いたいのかよく分からんけど・・・
最後の一文だけ読めばいいの?
933 :
774ワット発電中さん :2014/03/02(日) 12:18:24.82 ID:g1rr4Cnw
boot焼き憶えると純正買う気が起きない・・・
PCと連携させるなら純正が便利だけどstandaloneで使うなら単品買った方がいいね 最近ISP経由でプログラム書き込めばbootloaderすら要らないことを知った
936 :
774ワット発電中さん :2014/03/03(月) 20:07:25.88 ID:OA+rycJl
こんにちは yugoと言います 突然ですが質問です const int LED = 13; //LEDはデジタルピン13に接続 void setup [ pinMode(LED, OUTPUT); //デジタルピンを出力に設定 ] void loop [ digitalwrite(LED HIGH); //LEDをつける delay(10); //秒待つ digitalwrite(LED LOW); //LEDを消す delay(10); //秒待つ ] と書いてチェックしたら pinMode(LED, OUTPUT); //デジタルピンを出力に設定 の所にオレンジのラインが引かれました。 その後ボードに書き込もうとしたら入りませんでした。 プログラム、どこが違いますか? ちなみにOSはwindowsです。 シリアルポートは正しいし、 デバイスマネージャのポート(COMとLPT)はこれしか入っていません
>>936 ファイル→スケッチの例→01.Basics→Blink のスケッチとどこが違うか自分の目で確認してみ
>>936 それじゃ、一行目以外は全桁文法エラー
それも手打ちで入力したならではのエラーばかりだな
>>937 の言うとおり、他のプログラム例と比べて
足りないもの、似てるけど違うもの、余計なものをチェックしてみ
見逃しがちなのが、 " " と " " の違い
939 :
yugo :2014/03/03(月) 20:45:33.01 ID:OA+rycJl
こんにちはyugoと言います。 突然ですが質問です const int LED = 13; //LEDはデジタルピン13に接続 void setup [ pinMode (LED, OUTPUT); //デジタルピンを出力に設定 ] void loop [ digitalwrite(LED HIGH); //LEDをつける delay(10); //秒待つ digitalwrite(LED LOW); //LEDを消す delay(10); //秒待つ ] と書いてエラーが出ました。 どこが違いますか?
940 :
774ワット発電中さん :2014/03/03(月) 20:47:08.04 ID:6gUhb257
あ?
941 :
yugo :2014/03/03(月) 20:47:22.26 ID:OA+rycJl
すみません 間違えて同じ内容(ほぼ)二回目打ってしまいました。 本当にごめんなさい
釣りだろ
釣りであってほしいな
プログラミングの初心者ならこの手の間違いは普通でしょ。
俺も
>>937 の助言に一票。
カッコ悪いよね
はんかくさい(北海道弁スマソ)
突然すみません
http://www.switch-science.com/catalog/1139/ 上のWAVEシールド買って、ライブラリ入れてサンプルの「PiSpeak」以下のソース
を入力しコンパイルまではよかったのですが、
書き込むときに以下のエラーが発生しました
at processing.app.debug.BasicUploader.uploadUsingPreferences(BasicUploader.java:126)
at processing.app.Sketch.upload(Sketch.java:1649)
at processing.app.Sketch.exportApplet(Sketch.java:1608)
at processing.app.Sketch.exportApplet(Sketch.java:1580)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2408)
at java.lang.Thread.run(Thread.java:619)
何が原因でしょうか?
次レス以降にソースを書いておきます
#include <AF_Wave.h> #include <avr/pgmspace.h> #include "util.h" #include "wave.h" const char pi[] PROGMEM = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067 982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475 648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367 8925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480"; AF_Wave card; File f; Wavefile wave; // only one! #define redled 9 void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Pi speaker"); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(redled, OUTPUT); if (!card.init_card()) { putstring_nl("Card init. failed!"); return; } if (!card.open_partition()) { putstring_nl("No partition!"); return; } if (!card.open_filesys()) { putstring_nl("Couldn't open filesys"); return; } if (!card.open_rootdir()) { putstring_nl("Couldn't open dir"); return; } putstring_nl("Files found:"); ls(); Serial.println(strlen(pi), DEC); } unsigned long digit = 0;
void loop() { char c = pgm_read_byte(&pi[digit++]); if (c == 0) { digit = 0; return; } Serial.print(c); speaknum(c); delay(10); } char filename[13]; void speaknum(char c) { uint8_t i=0; if (c <= '9' && c >= '0') { // single digit filename[0] = c; i = 1; } else if (c == '.') { filename[0] = 'P'; i = 1; } else { return; } if (i != 0) { filename[i] = '.'; filename[i+1] = 'W'; filename[i+2] = 'A'; filename[i+3] = 'V'; filename[i+4] = 0; playcomplete(filename); } } void ls() { char name[13]; card.reset_dir(); putstring_nl("Files found:"); while (1) { if (!card.get_next_name_in_dir(name)) { card.reset_dir(); return; } Serial.println(name); } } void playcomplete(char *name) { playfile(name); while (wave.isplaying); card.close_file(f); }
void playfile(char *name) { if (wave.isplaying) {// already playing something, so stop it! wave.stop(); // stop it card.close_file(f); } f = card.open_file(name); if (!f) { putstring("Couldn't open file "); Serial.print(name); return; } if (!wave.create(f)) { putstring_nl("Not a valid WAV"); return; }// ok time to play! wave.play(); }
951 :
947 :2014/03/04(火) 00:37:16.31 ID:3P7imh/D
巨乳だな
>>コンパイルまではよかったのですが コンパイル通ってるんならソース張ってもしかた無いだろ どうせハード絡みなんだろうから 張るんなら使用ボードやPCの環境の方だろ
バージョン違いちゃいますか ソフト側のバージョンは? バージョンにあったライブラリつこてますか 置き場所合ってますか
955 :
947 :2014/03/04(火) 11:47:37.57 ID:3P7imh/D
>>953 使用ボードはUNOです
>>954 ライブラリが古いのが原因だったかもしれません、ちょっとソフトのバージョン変えてやってみます
956 :
947 :2014/03/04(火) 12:35:46.91 ID:3P7imh/D
シールドの配線不足でした、自己解決いたしました どうもありがとうございました
(((^_^;)
958 :
774ワット発電中さん :2014/03/04(火) 16:59:26.03 ID:GXMS/EEM
仕事でarduinoいくつも買ったんだけど初期不良調べるのに電源入れて ブリンクが動いてればとりあえずOKかな?ブリンク出来ていて書き込めないとかある?
あるよ
>>958 チェックしたい内容は何よ?
それによるべ。
>>958 >ブリンク出来ていて書き込めないとかある?
「絶対にない」と断言できる奴はいないだろうから心配なら確認すれば?
962 :
774ワット発電中さん :2014/03/04(火) 21:53:26.25 ID:GXMS/EEM
miniでピンがついてないんで書き込むにはハンダでピンつけてやらないといけない。 そうすると保管するのにかさばるんだよねーー 細ピンつけるかもしれんし。 全部で10個あるんだけどはやく検収あげてやらんといかんし チップの全機能チェックするためのスケッチとかあるんかな
964 :
774ワット発電中さん :2014/03/04(火) 22:27:17.04 ID:GXMS/EEM
おおさんきゅ。 こげなもんがあるっちゃね サンハトヤじゃなくていいけん、安いのさがしてみよかね
965 :
yugo :2014/03/05(水) 20:11:25.56 ID:nX4vEFNw
こんにちは、yugoです。 前回のアドバイスを受けて、Blinkを見て直したんですが、また pinMode(led, OUTPUT);の所にオレンジのラインが入りました。 卑怯かな、と思ったけれどBlinkの pinMode(led, OUTPUT);をコピーして貼ってチェックしてもラインが消えません。 どうしたらいいですか? スケッチを乗せときます const int led = 13; //LEDはデジタルピン13に接続 pinMode(led, OUTPUT); void setup() { pinMode(led, OUTPUT); //デジタルピンを出力に設定 } void loop() { digitalWrite(led, HIGH); //LEDをつける delay(1000); //秒待つ digitalWrite(led, LOW); //LEDを消す delay(1000); //秒待つ }
全角スペースやめれ
967 :
yugo :2014/03/05(水) 20:26:48.26 ID:nX4vEFNw
すみません。違うスケッチを貼ってしまいました。 正しいのはこっちです。 const int led = 13; //LEDはデジタルピン13に接続 void setup() { pinMode(led, OUTPUT); //デジタルピンを出力に設定 } void loop() { digitalWrite(led, HIGH); //LEDをつける delay(1000); //秒待つ digitalWrite(led, LOW); //LEDを消す delay(1000); //秒待つ }
全角文字(たとえば;とスペース)を使ってはいけません。
>>967 コメントを表す //までに全角文字が入っていると別の意味になるので
エラーになる。画面では全く同じに見える全角のスペースでも同じ。
それ以外でも; と;は文字コードが違うので意味が違う。
ここまで書いて腹が立ってきた。
あんた、計算機がコードを目で見てると思ってんの
>>969 初心者スレでそういうことに腹が立つのなら、
二度と初心者スレなんか覗かないほうがあなたとあなた以外の全人類にとって有益です。
初心者にただ答えを教えるだけのスレじゃないだろ みんなちゃんとヒントを与えてくれてるのにそれをないがしろにしてる感じがすんじゃないの?
プログラミング初心者スレじゃないしな 基礎知識くらいはあってほしい
>>972 えー?
Arduino初心者スレって、プログラミングの初心者スレも兼ねてるんじゃないの?
Arduino初心者は、プログラミングスキルは十分備わってる「はず」と仮定するの?
全角半角を色つきで区別してくれる外部エディター使った方が楽
976 :
774ワット発電中さん :2014/03/05(水) 21:43:42.43 ID:lJFnYLwm
コード書いてる途中で一息いれようとヤフーで日本語検索かけて そのままコーディング画面にもどってうっかり全角スペース入れちゃうのは よくあるよNA
arduino IDEの日本語版ローカライズでは、メニューの日本語化以外にも、 ソースコード内の全角文字の「異常」を検出する独自機能もあったほうがいいかもしれない とエンジニアリング視点で思いました。
>>974 プログラミングスキルってほどの話かな?
オームの法則すらわかんないのと同レベルだと思うんだが
>>978 スキルっていう言い方よりも、フールプルーフって言ったほうが良いかな?
うーん。。。 仮に、arduinoだけ全角文字の異常を自動検知する機構を実装しても、 そういう仮のarduinoに慣れた初心者が他の環境で同じ問題にぶつかって時間を無駄にするのは それはそれでダメなような気もする・・・。
981 :
774ワット発電中さん :2014/03/05(水) 21:59:25.53 ID:lJFnYLwm
いやarduinoで成功体験つめればそれでいいんだよ。
セミコロン入れ忘れはよくやるけど全角いれてエラーって経験ないなあ 打ち込んで変換待ちモードになってる時点で気づかないか?
>>982 それが助言になってなかったから
>>967 なんでしょ?
全角半角の違いはarduino IDEでは(特に初心者では)判別できない。
>>981 確かに成功体験は一番重要だと思う。
だからこそ、初心者スレで「プログラミングの基本も分かってないヤツに腹が立つ」とかいう書き込みに激しい違和感を受ける。
;と;では打ったときにぜんぜん違うから判別付くだろ(変換モードに入るし) それを含めて、比較して確かめろって助言してるのを確かめてないのは 初心者だからって話ではない
どの分野でも全角使う奴は馬鹿って言われるよな。
「;と;では打ったときにぜんぜん違う」 と感じないのが初心者なんですよ。 「比較して確かめろ」という「助言」(?)に、 全角と半角の違いを比較せよと書かない限り、 初心者には比較しても全く同じコードに見えるわけです。
画面上に動くコードが表示されているのにとなりのウィンドウに手で打ち込まなきゃならない 状況の人には早く気付け、よく見ろしかアドバイスのしようがない
正直、半角/全角以前にこの程度で腹立ちを覚えるのは沸点が低すぎると思うの
ローマ字入力なんてしてるからそんなミスするんだよ。 男は黙ってかな入力。
アプリケーションを使うだけの人ならともかく、自分で物作りしようと思うならそれくらいの注意深さは持ってろと言いたい
そうそう、そういうのも含めて 初心者はできるようにならなきゃいけないんだよ
>>992 おk。
ならば、あなたが許せる「初心者」以外の書き込みを許さない別の「初心者スレ」を立てて、
そこであなたが答えるというのが一番経済的では?
知らないことには注意のしようがない 上でもあるけど、PCとかに詳しくない人は半角/全角の違いなんて体裁程度にしか気にしないでしょ Arduinoってこれまでの電子工作と違ってそういう人たちに対しても門戸を開いているし、こういう質問もあるだろう
995 :
969 :2014/03/05(水) 22:36:29.62 ID:ZuVvj4pd
みなさん、いろんなご意見ありがとうございます。 自分としては、「気づけよお前!」ってつもりであえてきつく書きました。 ひとつだけ言わせてもらうと、ここはArduino初心者スレだけど、 プログラミング初心者スレではないと思ってます。 Arduinoのプログラミングの問題で盛り上がるのは嬉しいですが、 すごく基本的な話でぐだぐだするのは、結局Arduinoの地位を下 げてしまう気がします。
別に、初心者=バカ じゃないんだよ 初心者だからこそ、考えないと何も成長しないんだsよ
みんな親切すぎる たまに愚痴ってもバチは当たらん
トラブルシューティングでもあればいいんでね なんかのwikiとかにまとめてさ 質問の前にざっとそれを確認してもらえば
1000 :
774ワット発電中さん :2014/03/05(水) 22:43:43.50 ID:lJFnYLwm
とりあえず何とかしようとここに書き込むだけで十分じゃん。 それにどこまで答えるかは答える人次第。 PICやH8やPSOCで討ち死にしてたであろう人がうまくいって 喜ぶ顔すればそれでいいじゃん
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。