Prima di tutto, perché Arduino Mega 2560?
Quando sono disponibili schede più economiche, perché andare con Arduino Mega? La ragione principale dietro questo è le caratteristiche aggiuntive che sono incorporate in questa scheda. La prima caratteristica è il grande design del sistema I/O con 16 trasduttori analogici e 54 trasduttori digitali integrati che supportano USART e altre modalità di comunicazione. In secondo luogo, ha RTC incorporato e altre caratteristiche come il comparatore analogico, il timer avanzato, l’interrupt per il meccanismo di wakeup del controller per risparmiare più energia e la velocità veloce con 16 Mhz crystal clock per ottenere 16 MIBS. Ha più di 5 pin per Vcc e Gnd per collegare altri dispositivi ad Arduino Mega.
Altre caratteristiche includono il supporto JTAG per la programmazione, debug e risoluzione dei problemi. Con una grande memoria FLASH e SRAM, questa scheda può gestire un grande programma di sistema con facilità. È anche compatibile con i diversi tipi di schede come il segnale di alto livello (5V) o il segnale di basso livello (3.3V) con pin di rif. I/O.
Brownout e watchdog aiutano a rendere il sistema più affidabile e robusto. Supporta ICSP così come la programmazione del microcontrollore USB con PC.
L’Arduino Mega 2560 è un sostituto del vecchio Arduino Mega, e così in riferimento generale, sarà chiamato senza l’estensione ‘2560’. A causa del gran numero di pin, di solito non viene utilizzato per progetti comuni, ma è possibile trovarlo in progetti molto più complessi come rivelatori di Radon, stampanti 3D, rilevamento della temperatura, applicazioni IOT, applicazioni di monitoraggio dati in tempo reale, ecc.
Arduino Mega 2560 Specifiche
Arduino Mega – Caratteristiche di base
Arduino Mega | Caratteristiche |
---|---|
Microcontrollore | AVR ATmega 2560 (8bit) |
Alimentazione | 7-12V (regolatore integrato per il controller) |
Pinaggi I/O digitali | 54 |
Pinaggi I/O analogici | 16 |
Totale I/O digitale | 70 (digitale + analogico) |
Velocità di clock | 16 MHz (impostato in fabbrica su 1Mhz) |
Memoria flash | 128 KB |
SRAM | 8 KB |
Comunicazione | USB (programmazione con ATmega 8), ICSP (programmazione), SPI, I2C e USART |
Arduino Mega – Caratteristiche avanzate
Arduino Mega | Avanzate Caratteristiche |
---|---|
Timer | 2 (8bit) + 4 (16bit) = 6 timer |
PWM | 12 (2-16 bit) |
ADC | 16 (10 bit) |
USART | 4 |
Pin Change Interrupt | 24 |
Arduino Mega 2560 è anche dotato di funzioni aggiuntive come il comparatore analogico, Interruzione esterna &interruzione software, modalità di risparmio energetico, sensore di temperatura integrato, RTC e altro ancora.
Arduino Mega Pinout
Pin di alimentazione :
Arduino Mega | Pin di alimentazione |
---|---|
VIN | Tensione di alimentazione (7-12V) |
GND | Ground |
5V Alimentazione | Per alimentazione esterna dei dispositivi hardware |
3.Alimentazione a 3V | Per l’alimentazione esterna di dispositivi hardware a bassa tensione |
Diagramma dei pin di Arduino Mega
Pin del controller:
RESET: (Ingresso di reset) Un livello basso su questo pin per più del ciclo di clock 4 genererà un reset. Arduino Mega ha un circuito di reset incorporato con pulsante per resettare il sistema e questo pin può essere utilizzato da altri dispositivi per resettare il controller.
XTAL1,XTAL2: Crystal (16Mhz) è collegato per fornire l’orologio per il controller con 2 condensatori di bypass a terra.
AREF: Questo pin è usato, quando usiamo Adc per la conversione analogico-digitale con tensione di riferimento esterna per la conversione e non vogliamo usare il riferimento interno 1.1V o 5v.
Pin digitali (70):
Digital pins (0-53) + Analog (0-15) = Total Digital I/O pins.
Pin digitali: Da 0-53 (digitale) e 0-15 (analogico) può essere usato come ingresso o uscita per trasduttore digitale e dispositivi di uscita da pinMode() per la direzione del pin, digtalWrite() per scrivere pin e digitalRead() per leggere lo stato del pin.
Applicazione:
Dispositivi di uscita: Relè, LED, cicalino, LCD e altri.
Dispositivi d’ingresso: termistore digitale, pulsante, sensore ultrasonico, joystick e altri
Esempio:
- Segnale di uscita basso sulla scheda Arduino mega
pinMode(0,OUTPUT);
digitalWrite(0,LOW);
- Segnale di lettura in ingresso sulla scheda Arduino mega
pinMode(0,INPUT);
digitalRead(0);
Pin analogici (16):
Perni analogici: Da 0-15 (analogico) può essere usato come pin di ingresso analogico per l’adc, se non usato allora funziona come normale pin digitale. Può essere usato da pinMode() per la direzione del pin, analogRead() per leggere lo stato del pin e ottenere il valore digitale per il segnale analogico, bisogna fare attenzione alla selezione della tensione di riferimento interna o esterna e al pin Aref.
Applicazione :
Dispositivi di ingresso: Termistore Ntc, sensori (come ldr, irled e umidità) e altri
Esempio :
- Segnale analogico in ingresso sulla scheda Arduino mega
pinMode(0,INPUT);
analogRead(0);
Funzione pin alternativa:
Pin SPI:
Pin 22 - SS, Pin 23 - SCK, Pin 24 - MOSI, Pin 25 – MISO
Questi pin sono utilizzati per la comunicazione seriale con protocollo SPI per la comunicazione tra 2 o più dispositivi. Il bit di abilitazione SPI deve essere impostato per iniziare la comunicazione con altri dispositivi.
Applicazione:
Programmazione del controller AVR, comunicazione con altre periferiche come LCD e scheda SD con comunicazione a quattro linee ad alta velocità.
Pins I2C:
Pinotto digitale 20 per SDA e 21 per SCK (Velocità 400khz) per abilitare la comunicazione a due fili con altri dispositivi. Le funzioni usate sono wire.begin() per iniziare la conversione I2C, con wire.Read() per leggere i dati i2c e wire.Write() per scrivere i dati i2c.
Applicazione:
Dispositivi di uscita: LCD e comunicazione tra più dispositivi con due fili.
Dispositivi di ingresso: rtc e altri.
Esempio:
I2c master legge i dati dallo slave
Wire.begin();
Wire.requestFrom(2, 1); //dati a 1byte
Wire.Read();
Pin PWM:
Il pin digitale 2-13 può essere usato come uscita PWM con analogWrite() per scrivere il valore pwm da 0-255.E’ un’alternativa al DAC per sistemi a basso costo per ottenere un segnale analogico in uscita usando un filtro.
Applicazione:
Dispositivi d’uscita: controllo della velocità del motore, dimmer di luce, pid per un sistema di controllo efficiente.
Esempio:
- Segnale analogico in uscita sulla scheda Arduino mega
pinMode(0,OUTPUT);
analogWrite(0,255);
Pin diUSART :
Pin 0 – RXD0, pin 1 – TXD0Pin 19 – RXD1, pin 18 – TXD1Pin 17 – RXD2, pin 16 – TXD2Pin 15 – RXD3, pin 14 – TXD3
Questo pin è usato per la comunicazione seriale usart con il pc o altri sistemi per la condivisione e la registrazione dei dati. Viene usato con serialBegin() per impostare il baud rate e iniziare la comunicazione con serial.Println() per stampare l’array di char sull’output di altri dispositivi.
Applicazione:
Comunicazione tra due controller, comunicazione tra pc e controller, debugging con usart tramite monitor seriale.
Esempio:
Serial.begin(9600);
Serial.Println(“ciao”);
Pinchange Interrupt Pins:
Digital Pin 0,22,23,24,25,10,11,12,13,15,14Analog Pin 6,7,8,9,10,11,12,13,14,15
Questo pin è usato per il pin change interrupt. Il bit di abilitazione dell’interrupt di pinchange deve essere impostato con l’abilitazione globale dell’interrupt.
Applicazione:
Codificatore rotativo, interrupt basato su pulsante e altri.
Esempio :
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, CHANGE);
Hardware Interrupt Pins :
Il pin digitale 18 – 21,2,3 hardware interrupt è usato per i servizi di interrupt. L’interrupt hardware deve essere abilitato con l’abilitazione dell’interrupt globale per ottenere l’interrupt da altri dispositivi.
Applicazione:
Pulsante per programma ISR, svegliare controller con dispositivi esterni, sensori come ultrasuoni e altri.
Esempio:
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, LOW);
Arduino Mega Schematic Components:
Alimentazione DC Jack :
L’alimentazione esterna per Arduino Mega da 7-12 volt è data con questa porta. Arduino Mega R3 ha un regolatore di tensione per 5v e 3.3v alimentazione per Arduino controller e sensore supply.
AVR 2560:
Questo è il controller principale utilizzato per programmare ed eseguire attività per il sistema. Questo è il cervello del sistema per controllare tutti gli altri dispositivi a bordo.
ATmega8 :
Questo controller è usato per la comunicazione tra il controller principale e altri dispositivi. Questo controller è programmato per la comunicazione USB e le funzioni di programmazione seriale.
ICSP 1 (ATmega8) e 2 (AVR 2560):
Ha caratteristiche di programmazione tramite bus seriale con programmatore AVR utilizzando la comunicazione SPI. AVR 2560 è programmato per eseguire il sistema e ATmega 8 è programmato per la comunicazione seriale e la programmazione.
Reset :
Ha circuito di reset con condensatore, pulsante e resistenza per resettare il controller. Un pulsante è usato per ottenere un segnale basso a 4 cicli sul pin di reset per mettere il controller in modalità reset.
Crystal :
Ha un circuito di cristallo con due condensatori e un cristallo da 16 Mhz per i pin 1 e 2 di xtal che si interfacciano con avr 2560.
I2C :
Ha le caratteristiche di I2C (comunicazione a due fili) con una resistenza di pull-up esterna.
USART :
Ha i pin TXD e RXD per la comunicazione seriale con indicatore LED.
Alcuni semplici programmi da provare su Arduino Mega 2560
Programma 1: LED lampeggiante (pin digitale)
/*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}
Programma 2: Led Light Dimmer (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);}
Programma 3: Tensione di lettura analogica (pin analogico con 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}
Puoi anche provare la tua logica e implementare programmi per Arduino mega con la funzione C e Arduino di base.