まず最初に、なぜArduino Mega 2560?
When are cheaper boards available, why go with Arduino Mega?(もっと安いボードはあるけれど、なぜArduino Megaなのか?) その主な理由は、このボードに内蔵されている追加機能にあります。 16個のアナログトランスデューサと54個のデジタルトランスデューサを内蔵し、USARTやその他の通信モードをサポートする大規模なI/Oシステム設計が第一の特徴です。 また、RTCをはじめ、アナログコンパレータ、アドバンストタイマ、コントローラウェイクアップ割り込みなどの機能を内蔵し、16Mhzの水晶クロックによる16MIBSの高速動作で、より多くの電力を節約しています。 また、Arduino Megaに他のデバイスを接続するためのVccとGndのための5以上のピンを持っています。
その他の機能として、プログラミング、デバッグ、トラブルシューティングのためのJTAGサポートがあります。 また、大容量のフラッシュメモリとSRAMを搭載しており、大規模なシステムプログラムも容易に扱うことができます。 また、I/O Refピンを使用して、高レベル信号(5V)または低レベル信号(3.3V)の異なるタイプのボードに対応しています。
ブラウンアウトとウォッチドッグは、システムの信頼性と堅牢性を高めるのに役立ちます。 ICSPだけでなく、PCによるUSBマイコンプログラミングもサポートしています。
Arduino Mega 2560は、旧Arduino Megaの後継機種なので、一般のリファレンスでは、「2560」の拡張子を付けずに呼びます。 ピン数が多いため、一般的なプロジェクトには通常使用されませんが、ラドン検出器、3D プリンタ、温度検出、IoT アプリケーション、リアルタイム データ監視アプリケーションなど、より複雑なプロジェクトで使用されているのを見かけることがあります。
Arduino Mega 2560 Specifications
Arduino Mega – Basic Features
Arduino Mega | 特徴 |
---|---|
マイクロコントローラ | AVR ATmega 2560 (8bit) |
電源 | 7- (7ビット)12V(コントローラ内蔵レギュレータ) |
デジタル入出力ピン | 54 |
アナログ入出力ピン | 16 |
トータルデジタル入出力 | 70 (デジタル+アナログ) |
クロック・スピード | 16MHz(工場出荷時は1Mhzに設定) |
フラッシュ・メモリ | 128KB |
SRAM | 8 KB |
Communication | USB (ATmega 8でプログラミング)。 ICSP(プログラミング)、SPI, I2C および USART |
Arduino Mega – Advanced Features
Arduino Mega | Advanced 機能紹介 |
---|---|
タイマ | 2(8bit)+4(16bit)=6 timer |
PWM | |
ADC | 16(10ビット) |
USART | 4 |
ピン・チェンジ Interrupt | 24 |
Arduino Mega 2560は、Analog Comparatorなどの追加機能も満載しています。 外部割込み & ソフトウェア割込み、省電力モード、内蔵温度センサー、RTCなど。
Arduino Mega Pinout
Power pins :
Arduino Mega | |||
---|---|---|---|
VIN | 供給電圧(7-) | ||
Arduino Mega | Power Pins | Power Pins Arduino Mega | |
GND | Ground | ||
5V Supply | For External hardware device power supply | ||
3.V. | GND | ||
Ground | |||
GND | For External Low voltage hardware device power supply |
Arduino Mega Pin Diagram
コントローラピン:
RESET: (リセット入力)このピンが4クロックサイクルより長い時間ローレベルになると、リセットが発生します。 Arduino Megaにはリセット回路が内蔵されており、プッシュボタンでシステムをリセットすることができます。 水晶振動子(16Mhz)を接続し、2つのバイパス・コンデンサをグランドに接続しています。
Digital pins (70):
Digital pins (0-53) + Analog (0-15) = Total Digital I/O pins.
Digital Pins: アナログ/デジタル変換のための外部基準電圧を使用し、内部1.1Vや5Vの基準を使用しない場合に使用します。 0-53(デジタル)および0-15(アナログ)は、ピンの方向を指定するpinMode()、ピンの状態を読み取るdigtalWrite()によって、デジタルトランスデューサや出力デバイスの入力または出力として使用可能です。 リレー、LED、ブザー、LCDなど。
入力デバイス:デジタルサーミスタ、押しボタン、超音波センサ、ジョイスティックなど
例:
- Arduino mega board
pinMode(0,OUTPUT);
digitalWrite(0,LOW) で出力LOW信号です。
- Arduino mega boardの入力リード信号
pinMode(0,INPUT);
digitalRead(0);
アナログピン(16本)です。
アナログピン。 0-15(analog)は、adcのアナログ入力端子として使用でき、使用しない場合は、通常のデジタル端子として動作します。 ピンの方向はpinMode()で、ピンの状態を読み取り、アナログ信号のデジタル値を取得するanalogRead()で使用できます。内部または外部の基準電圧の選択とArefピンには注意が必要です。 Ntc サーミスタ、センサー (ldr, irled, 湿度など) など
例 :
- INPUT アナログ信号 Arduino mega ボード
ピンモード (0,INPUT);
analogRead(0);
代替ピン機能.。
SPI ピン:
Pin 22 - SS, Pin 23 - SCK, Pin 24 - MOSI, Pin 25 – MISO
これらのピンは、2つ以上のデバイス間の通信にSPIプロトコルを使用したシリアル通信に使用されます。
Application:
AVRコントローラのプログラミング、LCDやSDカードなどの周辺機器との高速4線式通信。 Wire.begin()でI2C変換を開始し、wire.Read()でI2Cデータを読み込み、wire.Write()でI2Cデータを書き込みます。
アプリケーション:
出力デバイス:
入力デバイス:RTCなど
I2Cマスターがスレーブからデータを読む
Wire.begin();
Wire.requestFrom(2, 1); //1バイトデータ
Wire.Read();
Wire.Write();
I2C マスターがスレーブのデータを読む
Wire.begin();
I2C マスターがスレーブのデータを書く
PWM Pins:
Digital pin 2-13 can be used as PWM output with analogWrite() to write pwm value from 0-255.This is alternative of DAC for low cost system to get analog signal at output by using filter.これはPWM出力として使用されます。
用途:
出力デバイス:モータの速度制御、調光器、効率的な制御システムのためのPID。
例:
- OUTPUT analog signal on Arduino mega board
pinMode(0,OUTPUT);
analogWrite(0,255);
USART Pins :
Pin 0 – RXD0, pin 1 – TXD0Pin 19 – RXD1, pin 18 – TXD1Pin 17 – RXD2, pin 16 – TXD2Pin 15 – RXD3, pin 14 – TXD3
his pin is used for serial usart communication with pc or other system for data sharing and logging. ボーレート設定や通信の開始はserialBegin()で、出力はPrintln()で行います。
用途:
2コントローラ通信、PCとコントローラ通信、シリアルモニタによるusartデバッグ
例:
Serial.begin(9600);
Serial.Println(“hello”);
ピンチェンジ割り込みピン:
Digital Pin 0,22,23,24,25,10,11,12,13,15,14Analog Pin 6,7,8,9,10,11,12,13,14,15
ピンチェンジ割り込みに使用されるピンです。 ピン交換割り込みのイネーブルビットはグローバル割り込みイネーブルで設定する必要があります。
アプリケーション:
ロータリーエンコーダ、押しボタン式割り込み、その他。
例 :
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, CHANGE);
ハードウェア割り込みピン :
Digital pin 18 – 21,2,3 ハードウェア割り込みを使用し、割り込みをサービスすることが可能です。
アプリケーション:
ISRプログラムのプッシュボタン、外部デバイスとのウェイクアップコントローラ、超音波などのセンサー、その他。
例:
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, LOW);
Arduino Mega Schematic Components.GUIを使用すること。
DCジャック電源 :
Arduino Megaの外部電源は、7-12Vの範囲で、このポートで供給します。 Arduino Mega R3 は、Arduino コントローラとセンサー供給用の 5v と 3.3v の電圧レギュレータを持ちます。
AVR 2560 :
これは、システムのタスクをプログラムして実行するために使用するメインコントローラーです。
ATmega8 :
このコントローラは、メインコントローラと他のデバイスの間の通信に使用されます。 このコントローラは、USB通信とシリアルプログラミング機能がプログラムされています。
ICSP 1 (ATmega8) と 2 (AVR 2560):
SPI通信を使用し、AVRプログラマとシリアルバスを使用してプログラミングする機能を備えています。 AVR 2560はシステムを動かすためにプログラムされ、ATmega 8はシリアル通信とプログラミングのためにプログラムされます。
Reset :
コントローラをリセットするコンデンサー、ボタン、抵抗のリセット回路を備えています。 水晶振動子:
AVR2560とのインターフェイスとして、2つのコンデンサと16Mhzの水晶振動子を備えた水晶振動子回路を備えています。
I2C :
外部プルアップ抵抗付きのI2C(2線式通信)の機能を備えています。
USART :
LED表示付きのシリアル通信用TXDおよびRXDピンを備えています。
Arduino Mega 2560で試したい簡単なプログラム
Program 1: LED点滅(デジタル端子):
/*Turns on an LED on for two second, then off for two second on pin 13, repeatedly.*/// the setup function runs once when you press reset or power the boardvoid setup() {// initialize digital pin 13 as an output.pinMode(13, OUTPUT);}// the loop function runs again and againvoid loop() {digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)delay(2000); // wait for two seconddigitalWrite(13, LOW); // turn the LED offdelay(2000); // wait for two second}
Program 2: Led調光(PWM):
int brightness = 0; //pwm valuevoid setup(){pinMode(3, OUTPUT);}void loop(){analogWrite(3, brightness); // pwm write on pin 3++brightness; // brightness is incremented by 1if (brightness <= 0 || brightness >= 255) {brightness=0; // brightness limited to 0-255}delay(10);}
プログラム 3:LED調光(デジタル端子):
Program 1: LED点滅(デジタル端子):
/*Turns on an LED on for two second, then off for two second on pin 13, repeatedly.*/// the setup function runs once when you press reset or power the boardvoid setup() {// initialize digital pin 13 as an output.pinMode(13, OUTPUT);}// the loop function runs again and againvoid loop() {digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)delay(2000); // wait for two seconddigitalWrite(13, LOW); // turn the LED offdelay(2000); // wait for two second}
Program 3: Analog Read Voltage (Analog pin with USART) :
void setup(){Serial.begin(9600); // usart communication start function with baudrate set to 9600}void loop(){int sensorValue = analogRead(A0); // analog pin 0 data is read and converted into digital value stored in sensorValue.Serial.println(sensorValue); // usart to output sensor value on serial monitor}
また、C言語とArduinoの基本機能を使って、Arduino megaに独自の論理でプログラムを実装することも可能です。