約 6,170,465 件
https://w.atwiki.jp/yana_lab/pages/17.html
Arduino関連 Arduinoは初心者に最もおすすめできるマイコンボードです. シンプルなプログラム(スケッチ)でいろいろなことができますし,資料が豊富です. 他のマイコンを使っているときでも,何か不具合があるときは,確認用に使用することもできます. 生産工学部機械工学科ではメカトロニクス演習の授業や応用プロジェクト演習の授業で使います. ここでは1例として,応用プロジェクト演習のピンポン玉仕分け装置関連の資料をまとめておきます. (Arduinoは教科書もわかりやすいWebサイトも充実しています.リファレンスも日本語でとても分かりやすいので,細かい点は自分で調べてください.) センサによる計測 フォトセンサ(RPR-220)で計測するためのスケッチです. 回路は以下の図を参考にしてください. void setup() {//初期設定 Serial.begin(9600);//シリアル通信の設定 } void loop(){ int sensorValue = analogRead(A0);//A0につながったセンサの値を取得する Serial.println(sensorValue);//シリアル通信で測定値を送る delay(100); //100msごとに計測する } サーボモータの制御 次はサーボモータを制御してみましょう. 配線は以下を参考にしてください. #include Servo.h //サーボモーター用ライブラリを読み込み Servo myservo1; //サーボ用のオブジェクトを作成 void setup() { myservo1.attach(9); //デジタル9番ピンをサーボの角度命令出力ピンとして設定 } void loop() { myservo1.write(10); //サーボを動かす delay(1500); myservo1.write(100); //サーボを動かす delay(1500); } ボール仕分け装置 上記の2つのスケッチを組み合わせてピンポン玉の色に応じてボールを仕分けする装置を作ってみます. 下の例はサーボモータを2個使っています. #include Servo.h //サーボモーター用ライブラリを読み込み Servo myservo1,myservo2; //サーボ用のオブジェクトを作成 void setup() { myservo1.attach(9); //デジタル9番ピンをサーボの角度命令出力ピンとして設定 myservo2.attach(10); //デジタル10番ピンをサーボの角度命令出力ピンとして設定 Serial.begin(9600);//計測値確認用 シリアル通信 } void loop() { myservo1.write(30); //サーボを動かす(基準位置) myservo2.write(55); //サーボを動かす(基準位置) delay(1500); int sensorValue = analogRead(A0); //フォトセンサによる計測(白は値が小さい 黒は値が大きい) Serial.println(sensorValue); //測定値確認用 if (sensorValue 450){ //ゴルフボールのとき myservo1.write(10); //サーボを動かす(解放) myservo2.write(100); //サーボを動かす(解放) delay(1500); }else if(sensorValue 850){//ピンポン玉の時とき myservo1.write(100); //サーボを動かす(解放) myservo2.write(10); //サーボを動かす(解放) delay(1500); }else{//何もないとき myservo1.write(30); //サーボを動かす(基準位置) myservo2.write(55); //サーボを動かす(基準位置) delay(1500); } } うまくいけばこんな感じになります.(動画はピンポン玉とゴルフボールを仕分けしています.)
https://w.atwiki.jp/arduino/pages/39.html
(todo) たぶん、mega88pには http //www.geocities.jp/arduino_diecimila/bootloader/ にあるavrdude.confの更新が必要。 http //www.geocities.jp/arduino_diecimila/bootloader/files/avrdude.conf 引用↓ 追記2:ATmega328Pにブートローダを書くときの情報 … [続きを見る] 新しいavrdude.confをダウンロードしてください。 (ATmega328PとATmega88Pのチップ情報を追加してあります) 以下のヒューズの値,ロックビットの値,ブートローダのhexファイルを使ってください。(arduino-0013\hardware\board.txtより) * hfuse = DA * lfuse = FF * efuse = 05 * unlock = 3F * lock = 0F * bootloader .hex file arduino-0013(or 0014)\hardware\bootloaders\atmega168\ATmegaBOOT_168_atmega328.hex #------------------------------------------------------------ # ATmega88P #------------------------------------------------------------ part id = "m88p"; desc = "ATMEGA88P"; has_debugwire = yes; flash_instr = 0xB6, 0x01, 0x11; eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, 0x99, 0xF9, 0xBB, 0xAF; stk500_devcode = 0x73; # avr910_devcode = 0x; signature = 0x1e 0x93 0x0f; pagel = 0xd7; bs2 = 0xc2; chip_erase_delay = 9000; pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; timeout = 200; stabdelay = 100; cmdexedelay = 25; synchloops = 32; bytedelay = 0; pollindex = 3; pollvalue = 0x53; predelay = 1; postdelay = 1; pollmethod = 1; pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; progmodedelay = 0; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; resetdelayus = 0; hvleavestabdelay = 15; resetdelay = 15; chiperasepulsewidth = 0; chiperasepolltimeout = 10; programfusepulsewidth = 0; programfusepolltimeout = 5; programlockpulsewidth = 0; programlockpolltimeout = 5; memory "eeprom" paged = no; page_size = 4; size = 512; min_write_delay = 3600; max_write_delay = 3600; readback_p1 = 0xff; readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", " 0 0 0 0 0 0 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", " 0 0 0 0 0 0 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", " 0 0 0 0 0 0 a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " 0 0 0 0 0 0 0 0"; mode = 0x41; delay = 5; blocksize = 4; readsize = 256; ; memory "flash" paged = yes; size = 8192; page_size = 64; num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; readback_p1 = 0xff; readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; read_hi = " 0 0 1 0 1 0 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", " 0 0 0 0 0 0 0 0", " x x x a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", " 0 0 0 0 0 0 0 0", " x x x a4 a3 a2 a1 a0", " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 x x x x x", " 0 0 0 0 0 0 0 0"; mode = 0x41; delay = 6; blocksize = 64; readsize = 256; ; memory "lfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", "0 0 0 0 0 0 0 0 i i i i i i i i"; ; memory "hfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", "0 0 0 0 0 0 0 0 o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", "0 0 0 0 0 0 0 0 i i i i i i i i"; ; memory "efuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", "0 0 0 0 0 0 0 0 x x x x x x x o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 i"; ; memory "lock" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 x x o o o o o o"; write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", "0 0 0 0 0 0 0 0 1 1 i i i i i i"; ; memory "calibration" size = 1; read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 o o o o o o o o"; ; memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 a1 a0 o o o o o o o o"; ; ; #------------------------------------------------------------ # ATmega328P #------------------------------------------------------------ part id = "m328p"; desc = "ATMEGA328P"; has_debugwire = yes; flash_instr = 0xB6, 0x01, 0x11; eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, 0x99, 0xF9, 0xBB, 0xAF; stk500_devcode = 0x86; # avr910_devcode = 0x; signature = 0x1e 0x95 0x0F; pagel = 0xd7; bs2 = 0xc2; chip_erase_delay = 9000; pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x"; chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x"; timeout = 200; stabdelay = 100; cmdexedelay = 25; synchloops = 32; bytedelay = 0; pollindex = 3; pollvalue = 0x53; predelay = 1; postdelay = 1; pollmethod = 1; pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; progmodedelay = 0; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; resetdelayus = 0; hvleavestabdelay = 15; resetdelay = 15; chiperasepulsewidth = 0; chiperasepolltimeout = 10; programfusepulsewidth = 0; programfusepolltimeout = 5; programlockpulsewidth = 0; programlockpolltimeout = 5; memory "eeprom" paged = no; page_size = 4; size = 1024; min_write_delay = 3600; max_write_delay = 3600; readback_p1 = 0xff; readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", " 0 0 0 x x x a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", " 0 0 0 x x x a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; mode = 0x41; delay = 5; blocksize = 4; readsize = 256; ; memory "flash" paged = yes; size = 32768; page_size = 128; num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; readback_p1 = 0xff; readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; read_hi = " 0 0 1 0 1 0 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", " 0 0 0 x x x x x", " x x a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", " 0 0 0 x x x x x", " x x a5 a4 a3 a2 a1 a0", " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 x x x x x x", " x x x x x x x x"; mode = 0x41; delay = 6; blocksize = 128; readsize = 256; ; memory "lfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", "x x x x x x x x i i i i i i i i"; ; memory "hfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", "x x x x x x x x i i i i i i i i"; ; memory "efuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x x x x x x o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x i i i"; ; memory "lock" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x x x o o o o o o"; write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", "x x x x x x x x 1 1 i i i i i i"; ; memory "calibration" size = 1; read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", "0 0 0 0 0 0 0 0 o o o o o o o o"; ; memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", "x x x x x x a1 a0 o o o o o o o o"; ; ;
https://w.atwiki.jp/arduino/pages/45.html
8年も前のPHS用のカメラユニットTrevaとArduinoをつなぎます。 参考サイト→http //www.paken.org/aaf/treva/ 画像サイズは96x72。1画素2byteなので1枚の写真で96x72x2=13824byte. 115200bpsのシリアル通信で転送するとしても115200/8=14400なので1秒に1枚が限界か。 #define TREVA_CLK 12 #define TREVA_DATA 11 #define LED 13 #define DEBUGPIN 14 #define TREVA_DELAY() __asm("nop"); //#define TREVA_DELAY() __asm("nop");__asm("nop");__asm("nop");__asm("nop");__asm("nop"); //#define TREVA_DELAY() delayMicroseconds(3) unsigned char treva_state = 0; unsigned char treva_count = 0; #define TREVA_COLSx2 (96*2) #define TREVA_ROWS 72 unsigned char treva_row = 0; unsigned char treva_col = 0; unsigned char treva_bit = 0; char treva_byte = 0; void setup() { pinMode(LED, OUTPUT); pinMode(TREVA_CLK, OUTPUT); pinMode(TREVA_DATA, INPUT); Serial.begin(115200); } // http //www.paken.org/aaf/treva/ void treva_loop() { digitalWrite(TREVA_CLK, HIGH); TREVA_DELAY(); char treva_data = digitalRead(TREVA_DATA); digitalWrite(TREVA_CLK, LOW); TREVA_DELAY(); switch(treva_state){ case 0 // wait "1" 100 bits. if(treva_data==1){ treva_count++; if(treva_count==100){ treva_count = 0; treva_state = 1; } }else{ treva_count = 0; } break; case 1 // wait "0" 65 bits. if(treva_data==0){ treva_count++; if(treva_count==65){ treva_count = 0; treva_state = 2; } }else{ treva_count = 0; } break; case 2 // skip 16 bits. treva_count++; if(treva_count==16){ treva_count = 0; treva_byte = 0x00; treva_row = 0; treva_col = 0; treva_bit = 0; treva_state = 3; } break; case 3 // read 96*72*16bit = 110592bit = 13824bytes treva_byte |= (treva_data (7-treva_bit)); treva_bit++; if(treva_bit==8){ send_treva_byte(treva_row, treva_col, treva_byte); treva_byte = 0x00; treva_bit = 0; treva_col++; if(treva_col==TREVA_COLSx2){ treva_col = 0; treva_row++; if(treva_row==TREVA_ROWS){ treva_state = 0; } } } break; } } void send_treva_byte(unsigned char row, unsigned char col, char b) { if(col==0){ Serial.print("line "); Serial.print((int)row); Serial.print(" "); } unsigned char v = b; if(v 0x10){ Serial.print("0"); } Serial.print(v, HEX); Serial.print(" "); if(col==TREVA_COLSx2-1){ Serial.println(); digitalWrite(LED, row%2); if(row==TREVA_ROWS-1){ Serial.println("*******************************************"); } } } void loop() { treva_loop(); } treva.rb printf( "P6\n" ); cols = 96 rows = 72 printf( "#{cols} #{rows} 255 " ); img = [] $stdin.each do |line| if line =~ /^line (\d+) ((.. ){192})$/ index = $1.to_i data = $2.split(" ") data.each do |d| img d.to_i(16) end end end rows.times do |i| cols.times do |j| p = (i*cols+j)*2; y = img[p+1]; if j%2==0 v = img[p]; u = img[p+2]; else v = img[p-2]; u = img[p]; end u = u - 128.0; v = v - 128.0; red = u + y; green = 0.98*y - 0.53*u - 0.19*v; blue = v + y; if red 255 red = 255 end if red 0 red = 0 end if green 255 green = 255 end if green 0 green = 0 end if blue 255 blue = 255 end if blue 0 blue = 0 end printf("%c", red) printf("%c", green) printf("%c", blue) end end
https://w.atwiki.jp/ayumikizuka/pages/33.html
過去の資料 2013.12.12 第1回Arduino勉強会 in ハコダテの資料(PDF/17.5MB) ……ArduinoインストールからLED点灯まで 2014.02.06 第2回Arduino勉強会 in ハコダテの資料(PDF/2.9MB) ……LEDの明るさを変えてみよう、プログラムの理解 Arduino勉強会 in ハコダテ Facebook ページ 2014.12.12 第1回Arduino勉強会 in ハコダテ 2014.02.06 第2回Arduino勉強会 in ハコダテ Arduino勉強会 in ハコダテ の公式生放送ページ ニコニコ生放送 http //com.nicovideo.jp/community/co2269930 ニコニコ動画、Twitter、Facebookにアカウントを持ってる方は見れます。 基本的に参加者は写しません。 total: - today: - yesterday: -
https://w.atwiki.jp/arduino/pages/50.html
シャープ測距モジュール [GP2Y0A21YK] http //akizukidenshi.com/catalog/g/gI-02551/ 10〜80cm http //nekosan0.bake-neko.net/connection_ir_measure.html
https://w.atwiki.jp/shimizunochikara/pages/15.html
はじめに ArduinoとXBeeとモーターシールドを使ってラジコンを作ろうと思う。ラジコンのソースコードは今後Arduinoを用いた動くおもちゃを作る際の動作確認に利用する事が出来る。また、XBeeによる無線通信とモーターの制御を組み合わせた最も基本的な工作のひとつであるため、ソースコードやノウハウを他の工作に生かす事ができると考える。 Arduino Tankの機能 無線により操作が可能 一本のスティックで操作が可能 スティックを倒した方向に進む(角度は無段階) スティックを倒した角度に比例してスピードが変化(1chにつき255段階) 超信地展開が可能(左右のキャタピラーを逆方向に回す事によりその場で回転) 車体側 車体側の機能 無線により値を受け取る事で動作 左右のキャタピラーがそれぞれ比例制御が可能(8bit-255段階) ハードウェアの構成 キャタピラー(タミヤ工作キット) ギアボックス(タミヤダブルギアボックス) シャーシ(タミヤユニバーサルプラスチック基盤) マイコン(Arduino Uno) モータードライバー(Ardumoto Arduinoのシールドの一種) 通信モジュール(XBee Series2) ハードウェアの説明 タミヤ工作キットのキャタピラー工作キットとダブルギアボックスを組み合わせて駆動系を作った。また、シャーシはタミヤユニバーサルプラスチック基盤で作った。マイコンはArduino Unoを用いており、モータードライバーにはArdumotoを利用している。また、ArduinoとXbeeはArduino → XBeeは分圧抵抗により電圧を落としている。XBee→Arduinoはそのまま入力を行っている。本来はロジックレベル変換レベル変換を行うべきであるが、現状で動作している。(XBeeに5Vを入力してしまうと壊れるので注意) ソフトウェアの説明 XBeeから3Byteのデータを受け取り、それを2系統の8bit出力と1bitの回転方向に変換し、Ardumotoに出力する事でモーターの制御を行っている。 スティックコントローラー側 スティックコントローラーの機能 スティックを倒した方向に応じて、2つのキャタピラー出力に変換し無線送信する スティックを押す事で超信地旋回するモードとしないモードに切り替わる(超信地旋回するモードの場合には緑LEDが点灯) 使用した部品 Arduino Fio XBee LiPoバッテリー アナログジョイスティック LED × 2(赤, 緑) ブレッドボード ハードウェアの説明 Arduinoのアナログ入力0, 1にジョイスティックのX軸とY軸を接続し、AD変換を行っている。また、D2ピンにボタンを接続し、スイッチが押された場合はGNDレベルに落ち、割り込みが発生するようになっている。D2ピンとスイッチに関しては 10KΩのプルアップ抵抗が取り付けられている。またD3とD5ピンにLEDが取り付けられており、PWMにより明るさの調整が可能になっている。 ソフトウェアの説明 XY座標により入力されるデータを2つのモーター出力に変換している。変換のために極座標に飛ばし、角度θにより左右のモーター出力の係数を出力する関数を記述し、それをベクトルの大きさRと掛け合わせる事でモーター出力を得ている。またスイッチによりモードの切り替えを行い、モード0(超信地旋回あり)とモード1(超信地旋回しない)で別の関数を呼び出している。データは現在100ms毎に送信を行っている。チャタリング対策に関してもソフトウェア的に行っている。一旦ボタンが押された場合は500ms割り込みを無視するように設定されている。 実験 Arduino Tank Ver0.1と合わせて動作実験を行い、意図した通りに動作している事を確認した。ただし、通信エラーが発生する事がある。通信エラーはPCの近く等電磁波が発生していると考えられる場所、および走っている途中で発生している。現在はデータの送信周期は100msになっているが、遅くしすぎるとレスポンスが悪く、速くしすぎると通信エラーが頻発する。 今後の課題 通信モジュールのテスト(どういった場合にエラーが発生するか) 一定時間データが来ない場合に停止するような実装(車体側で一定時間データが来ない場合タイマー割り込みにより出力を0にする実装) 最終的にこうなった(苦笑)
https://w.atwiki.jp/kougyou_kei/pages/42.html
概要 必要なもの ATmega328P 1個 クリスタル16MHz 1個 タクトスイッチ 1個 抵抗(10kohm) 1個 セラミックコンデンサ(0.1uF) 1個 ブレッドボード 1個 ジャンパー線 数本 USB-シリアル変換器 1個 ブートローダ書き込み Arduino公式サイトから最新のArduinoをダウンロードし、回答したフォルダ内の "hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex" をプログラマで書き込む。 フューズビットはlow 0xff, high 0xda, ex 0xfd を書き込む。 回路 画像準備中 VCC・GND・AVCCを5V電源に接続。 VCC-GND間にパスコンとしてセラミックコンデンサ(0.1uF)を接続。 ~RESET端子(1Pin)にプルアップでリセットボタンを接続。 USB-シリアル変換器とAVRのシリアルポートを接続 シリアル変換器側 AVRマイコン(ATmega328p)側 TX RXD(2Pin) RX TXD(3Pin) ArduinoIDEの設定 USB-シリアル変換器をパソコンに接続し、ドライバをインストールしておく。 デバイスマネージャでUSB-シリアル変換器のポート番号を確認する。 ArduinoIDEを起動する。 ArduinoIDEの[ツール]-[マイコンボード]から"Arduino Duelimanove w/ ATmega328"を選択 ArduinoIDEの[ツール]-[シリアルポート]から書き込みに使用するポートを選択 テスト用スケッチのコンパイル スケッチをダウンロード リセットスイッチを押しっぱなしにして、ArduinoIDEの書き込みボタンをクリック。 ArduinoIDEの表示が「マイコンボードへ書き込んでいます」になったら押してたリセットスイッチを放す。
https://w.atwiki.jp/arduino/
Arduino@wikiへようこそ GPS受信機シールドのスポンサー様です。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 今日の人気ページ カウンターの値があるページは1つもありません。 昨日の人気ページ カウンターの値があるページは1つもありません。 人気のページ 激安Arduinoの作り方2 (45213) 本格的にArduino/スイッチを読み取る (37630) 本格的にArduino/においセンサー (35738) 本格的にArduino/簡易オシロスコープ (30235) BitBang Mode AVR-Writer on Mac (29588) Arduino自動カーテンオープン目覚まし時計 (24751) 本格的にArduino/温度センサー (23282) Arduino戦車 (20824) ArduinoとFon (20475) LED Cube (17777) 最近の更新ページ 取得中です。
https://w.atwiki.jp/shimizunochikara/pages/8.html
Arduino Tankの制作のモチベーション ArduinoとXBeeを組み合わせて面白いものをつくりたい マイコンとPCを組み合わせて何かをしたい 電子工作を知らない人が見ても面白いと思えるものを作りたい ソフトウェアの勉強がしたい Arduino Tankの方向性 一般の人が見て面白いと思えるものにする センサーから得られるデータを可視化する
https://w.atwiki.jp/mokeibu/pages/50.html
Arduinoコントローラの製作 現時点で一つしかないコントローラの予備用と、製作するEH500に合わせてコントローラを新造することになった。 今までのコントローラではPICを使用していたが、このコントローラではArduinoを使用する。 Arduinoについて Arduino(アルドゥイーノ)は、AVRマイコン、入出力ポートを備えた基板、C言語風のArduino言語とそれの統合開発環境から構成されるシステム。(wikipediaより) 部活で購入したのはArduino uno R3。Arduinoの中でも標準的な物で、USBIFがあるので通信が便利。 ICの殆どのI/Oピンがボード上のコネクタに接続されており、デジタル入出力、アナログ入出力、PWM出力、シリアル通信などの機能を備える。 CIMG2372.jpg 部で購入したArduino。これに回路を接続していく コントローラの製作 届いたArduino本体と、ブレッドボードなどを使って回路を組んでいくと同時にプログラムを作成する。 プログラムはPCと付属のUSBケーブルで接続し、開発環境から書き込む。ドライバーとポート設定に注意。(デバイスマネージャーで確認できる) USBケーブルで接続している時は電源を供給する必要が無く、バスパワーで駆動する。 0002.jpg 試作回路第一号。PWM出力を5段階で出してみるだけの簡単なもの。もちろん後々に大量の回路を接続していく。 設計 コントローラと車両の接続は既存のコントローラと同一の設計とする(互換性を持たせる) 表示装置としては、電圧計(20V/30V)、パイロットランプ、前後進LED(中立有り)、PWM信号確認LED、エラーLED等。 プログラム置き場(ログ) 無段階可変抵抗をアナログピンにつないで無段階制御に挑戦→一瞬抜け落ちるように電圧がなくなるので修正中。 Ver.2.30テストモードを実装。→動作しないバグがあった模様。修正中。 Ver.2.21正常に動作しないバグを修正。 Ver.2.20固定だった出力%を、プログラム上で変更できるように変更。 Ver2.11後進時にLEDが正常に動作しないバグを修正。(一応の雛形完成) Ver2.10ブレッドボードで組んだ回路で実験した際に出たバグを修正。動作確認用に、電源投入後1秒間、LEDを全て(PWM確認用を除く)点灯させるサブルーチン追加。 Ver2.00回路の完成版に合わせて製作。前進・後進の区別を追加。 Ver1.50ひとまず終わった回路設計に合わせて製作したもの。前進・後進の区別などが無い。また、出力100%でも実際は100%ではない(プログラムミス) Ver1.00第一号試作回路用。5つの入力に対し、それぞれ20、40、60、80、100%のPWM出力をするのみ。