Arduino IDE

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search
Arduino
software
Schermata di esempio
Schermata di esempio
GenereIntegrated development environment
SviluppatoreSviluppatori di Arduino
Ultima versione2.0.3 (5 dicembre 2022)
Sistema operativoMultipiattaforma
LinguaggioElectron
LicenzaLGPL o GPL
(licenza libera)
Sito webwww.arduino.cc/en/Main/Software

L'Arduino IDE, è un Integrated Development Environment per la piattaforma di open hardware Arduino. L'applicazione è multipiattaforma e basata su Electron (le versioni 1.x erano invece scritte in Java).

Storia[modifica | modifica wikitesto]

Arduino IDE è derivato dall'IDE creato per il linguaggio di programmazione Processing e per il progetto Wiring. È stata creata da Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, e David Mellis, per iniziare alla programmazione i neofiti, che siano a digiuno di pratica nello sviluppo di software.

Nel tempo l'Arduino IDE è stato sviluppato e migliorato dalla community direttamente su GitHub.

Nel 2020 vede la luce il progetto per la versione 2.0 dell'Arduino IDE con una serie progressiva di rilasci in beta. Diverso nell'architettura, basato su Theia IDE e sviluppato con Electron, questo nuovo IDE si presenta con una barra laterale ad icone in sostituzione del menu e si avvicina molto allo stile del WEB Editor, con il quale condivide numerose funzionalità.

Caratteristiche[modifica | modifica wikitesto]

Per permettere la stesura del codice sorgente, l'IDE include un editore di testo dotato di alcune particolarità, come il syntax highlighting, il controllo delle parentesi e l'indentazione automatica. L'editor è in grado di compilare e caricare sulla scheda Arduino il programma eseguibile in una sola passata e con un solo click. In genere non vi è bisogno di creare dei Makefile o far girare programmi dalla riga di comando.

L'ambiente di sviluppo integrato di Arduino è fornito di una libreria software C/C++, chiamata "Wiring" (dall'omonimo progetto Wiring): la disponibilità della libreria rende molto più semplice implementare via software le comuni operazioni di input/output. Grazie alla documentazione fornita dal Team Arduino, la scrittura di nuove librerie è alla portata di tutti coloro che hanno dimestichezza con il linguaggio C++. Il numero di librerie disponibili tramite il Library Manager integrato con l'IDE ha superato il valore di 5000 a metà del 2022 ed è anche stato creato un sito che in modo automatico censisce le librerie.

I programmi di Arduino, chiamati sketch, sono scritti in linguaggio derivato dal C/C++, ma all'utilizzatore, per poter creare un file eseguibile, si richiede solo di definire due funzioni:

  • void setup ()
    
    – funzione invocata una sola volta all'inizio di un programma, da utilizzare per i settaggi iniziali che rimarranno invariati durante l'esecuzioni;
  • void loop ()
    
    – funzione invocata ripetutamente, la cui esecuzione si interrompe solo quando si toglie l'alimentazione alla scheda.

Differenze con C++[modifica | modifica wikitesto]

Rispetto a C++ è stata fatta una semplificazione nei tipi di dati al fine di renderli più facilmente riconoscibili. Un intero, ad esempio, viene definito semplicemente come "int" o "unsigned int", mentre il C++ prevede alcuni modificatori per dichiararne la lunghezza e se è dotato di segno, rendendo la definizione più articolata e meno immediata per un neofita, come ad esempio "uint32_t" o "int16_t". La disponibilità di funzioni specifiche per il funzionamento su microcontrollori in aggiunta a quelle di C++ è l'altra differenza significativa. La lettura e scrittura delle porte digitali ed analogiche, piuttosto che il controllo del tempo trascorso tramite "millis()" determinano una relativa incompatibilità con il C++ e uno sketch di Arduino richiede degli adattamenti per essere utilizzabile da un compilatore C++. Lo stesso non vale al contrario: con l'Arduino IDE è possibile scrivere un programma con notazione C++ e ottenerne la compilazione senza problemi. Il C++ riconosciuto è C++11. Se il programma utilizza le caratteristiche hardware del microcontrollore, si possono usare le funzioni offerte dal linguaggio Arduino e sono numerosi i casi in cui progetti complessi sono scritti con un mix di C++ e funzioni di Arduino.

Esempi di codice[modifica | modifica wikitesto]

Un tipico esempio di programma per iniziare a far pratica con un microcontroller è quello, molto semplice, che permette l'accensione ripetuta di un LED. Nell'ambiente di sviluppo di Arduino, l'utilizzatore potrebbe farlo con un programma come il seguente[1]:

#define LED_PIN 13 //definisce la costante LED_PIN, che indicherà il pin 13

void setup () {
  pinMode (LED_PIN, OUTPUT);   // abilita il pin per l'output digitale
}

void loop () {
  digitalWrite (LED_PIN, HIGH); // accende il LED
  delay (1000);         // aspetta 1 secondo (1000 millisecondi)
  digitalWrite (LED_PIN, LOW);  // spegne il LED
  delay (1000);         // aspetta un secondo
}

Scritto in questo modo, il codice non verrebbe riconosciuto come programma valido da un compilatore C++; per questo motivo, quando l'utilizzatore seleziona il bottone di comando "Upload to I/O board" (presente nell'IDE) per caricare il programma sulla scheda, una copia del codice viene automaticamente trascritta in un file temporaneo con l'aggiunta di un extra include header all'inizio del codice e l'implementazione di una semplicissima funzione main() in basso:

#include "WProgram.h" // include la libreria WProgram
#define LED_PIN 13 //definisce la costante LED_PIN, che indicherà il pin 13

void setup () {
  pinMode (LED_PIN, OUTPUT);   // abilita il pin per l'output digitale
}

void loop () {
  digitalWrite (LED_PIN, HIGH); // accende il LED
  delay (1000);         // aspetta 1 secondo (1000 millisecondi)
  digitalWrite (LED_PIN, LOW);  // spegne il LED
  delay (1000);         // aspetta 1 secondo
}

int main(void)
{
  init();

  setup();
 
  for (;;)
    loop();
    
  return 0;
}

"WProgram.h" è lo header file principale per la libreria Wiring. La funzione main()effettua solo tre chiamate, init(), setup() e loop(); le ultime due sono definite dall'utente, mentre la prima è scritta nella libreria stessa. La funzione loop(), come richiesto, è automaticamente nidificata in un loop infinito.

Lo IDE di Arduino usa la GNU toolchain e la AVR Libc per compilare i programmi, mentre usa avrdude per caricarli sulla scheda.

Android Accessory Development Kit[modifica | modifica wikitesto]

In occasione della conferenza Google I/O di maggio 2011, Google ha presentato ADK (Android Open Accessory Development Kit), un kit di sviluppo basato su Arduino e ideato per aiutare sviluppatori e costruttori hardware a creare accessori per Android; gli accessori possono comunicare con Android via cavo USB o attraverso una connessione Bluetooth.[2]

L'ADK, ora prodotto ritirato, si basa sulla scheda Arduino Mega2560 e sulla scheda USB host.[3]

Open hardware e open source[modifica | modifica wikitesto]

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Hardware libero.

Gli schemi hardware di Arduino sono distribuiti in modo da poter essere utilizzati nei termini legali di una licenza Creative Commons Attribution Share-Alike 2.5[4], e sono disponibili sul sito ufficiale Arduino. Con la riorganizzazione del sito, tutti gli schemi nei formati Eagle, PDF e Fritzing sono disponibili nelle pagine di ciascun prodotto sullo Store Arduino e su docs.arduino.cc. I prodotti ritirati dalla vendita, perché obsoleti, sono ancora documentati sul sito docs.arduino.cc dove, nella maggior parte dei casi, sono reperibili i file in formato Eagle e gli schemi in PDF.

Il codice sorgente per l'ambiente di sviluppo integrato e la libreria residente sono invece disponibili, e concessi in uso, secondo i termini legali contenuti nella licenza GPLv2.

Note[modifica | modifica wikitesto]

  1. ^ (EN) Blink Tutorial, su arduino.cc. URL consultato il 10 maggio 2011.
  2. ^ (EN) Accessory Development Kit 2012 Guide, su developer.android.com. URL consultato il 14 dicembre 2012.
  3. ^ (EN) Donald Melanson, Google announces Android Open Accessory standard, Arduino-based ADK, su engadget.com, Engadget. URL consultato l'11 maggio 2011.
  4. ^ (EN) Hardware, su arduino.cc. URL consultato il 10 maggio 2011.

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]