Pinout di Arduino uno in russo. Schema e dati iniziali. Connettore per alimentazione esterna

PDF). La piattaforma dispone di 14 I/O digitali (di cui 6 utilizzabili come uscite PWM), 6 ingressi analogici, un oscillatore a cristallo da 16 MHz, un connettore USB, un connettore di alimentazione, un connettore ICSP e un pulsante di ripristino. Per funzionare, è necessario collegare la piattaforma al computer tramite cavo USB o fornire alimentazione utilizzando l'adattatore CA/CC o la batteria.

I circuiti integrati utilizzano pacchetti standardizzati e ci sono famiglie per pacchetti. La maggior parte dei pacchetti sono generici e possono essere utilizzati per parti diverse con funzionalità diverse. Per ripristinare la scheda, è necessario utilizzare il pulsante sulla scheda.



Questo può essere utilizzato per memorizzare i dati che dovrebbero essere disponibili anche dopo che la scheda è stata spenta e quindi riaccesa. La maggior parte dei pin sono multifunzione, il che significa che lo stesso pin può essere utilizzato in modalità diverse in base a come lo si configura nel software. Ciò riduce il numero richiesto di pin perché il microcontrollore non richiede un pin separato per ciascuna funzione.

A differenza di tutte le schede precedenti che utilizzavano un microcontrollore USB FTDI per la comunicazione USB, la nuova Arduino Uno utilizza un microcontrollore ATmega8U2 ().

"Uno" è tradotto come uno dall'italiano e gli sviluppatori suggeriscono quindi l'imminente rilascio di Arduino 1.0. La nuova scheda è diventata il fiore all'occhiello della linea di schede Arduino. Per il confronto con le versioni precedenti, puoi fare riferimento a .















Puoi personalizzarlo con un registro interno. . Potresti non essere a conoscenza delle funzioni che non usi nel tuo codice. Per maggiori informazioni è possibile fare riferimento alla scheda tecnica.


Tornando alla progettazione elettronica, la sezione dei microcontrollori presenta quanto segue.

Caratteristiche

microcontrollore

Tensione di lavoro

Tensione di ingresso (limite)

Ingressi/uscite digitali

Meccanismo di commutazione dell'alimentazione




In termini di progettazione elettronica, questa sezione è simile alla sezione del microcontrollore. Ecco alcune informazioni aggiuntive su questi resistori. Puoi saperne di più su questo condensatore. Questo diodo fornisce protezione contro polarità inversa.


Questo è un miglioramento rispetto ai vecchi regolatori lineari come.



Ciò fornisce una protezione da sovracorrente, 500 mA. La resistenza diminuisce dopo la rimozione corrente massima. Spero che questo aiuti i tuoi progetti in futuro! Ci sono altri pin sulla scheda. Comunemente utilizzato per aggiungere un pulsante di ripristino per gli schermi che ne bloccano uno sulla scheda. Tensione di riferimento per ingressi analogici. . Quando questa linea viene affermata, la linea di ripristino cade abbastanza a lungo da ripristinare il chip.

Ingressi analogici

Corrente CC attraverso ingresso/uscita

Uscita CC 3,3 V

Memoria flash

32 KB (ATmega328) di cui 0,5 KB utilizzati per il bootloader

2 KB (ATmega328)

Questa impostazione ha altre conseguenze. Sebbene sia programmato per ignorare i dati errati, intercetterà i primi byte di dati inviati alla scheda dopo l'apertura della connessione. Se uno sketch in esecuzione sulla scheda riceve una configurazione unica o altri dati alla prima esecuzione, assicurarsi che il software a cui è associato attenda un secondo dopo l'apertura della connessione e prima di inviare tali dati. Le guarnizioni su entrambi i lati del binario possono essere saldate insieme per riattivarlo.

La versione 3 della scheda ha le seguenti nuove funzionalità. La fonte di alimentazione viene selezionata automaticamente. L'adattatore può essere collegato inserendo la spina positiva centrale da 1 mm nel connettore di alimentazione. La scheda può funzionare da un'alimentazione esterna da 6 a 20 volt. Tuttavia, se viene fornito con meno di 7V, il pin 5V potrebbe fornire meno di 5 volt e la scheda potrebbe essere instabile. Se vengono utilizzati più di 12V, il regolatore di tensione potrebbe surriscaldarsi e danneggiare la scheda. L'intervallo consigliato è compreso tra 7 e 12 volt.

1 KB (ATmega328)

Frequenza dell'orologio

Schema e dati iniziali
Cibo

Arduino Uno Può essere alimentato tramite connessione USB o alimentazione esterna. La fonte di alimentazione viene selezionata automaticamente.

L'alimentazione esterna (non USB) può essere fornita tramite un convertitore di tensione AC/DC (alimentatore) o batteria. Il convertitore di tensione è collegato tramite una spina da 2,1 mm con un polo centrale positivo. I fili della batteria sono collegati ai pin Gnd e Vin del connettore di alimentazione.

I contatti di alimentazione sono i seguenti. Un alimentatore regolato utilizzato per alimentare il microcontrollore e altri componenti sulla scheda. Inoltre, alcuni contatti hanno funzioni specializzate. Inoltre, alcuni contatti hanno funzionalità specializzate. Stai cercando un'attività pratica e divertente per insegnare le abilità di programmazione di base e sviluppare abilità a casa o in classe?

I programmatori costruiscono robot, macchine con telecomando, elettrodomestici per la domotica e persino fare musica. Arduino ha guadagnato popolarità grazie alla sua semplicità e convenienza. Chiunque può iniziare a costruire e programmare progetti entusiasmanti in pochissimo tempo. Raccoglie informazioni da vari sensori e le elabora utilizzando codice open source. codice sorgente scaricato dal tuo computer. Contiene tutti i componenti e la potenza necessari per avviare progetti intermedi.

La piattaforma può funzionare con alimentazione esterna da 6 V a 20 V. Quando la tensione di alimentazione è inferiore a 7 V, l'uscita a 5 V potrebbe emettere meno di 5 V e la piattaforma potrebbe diventare instabile. Quando si utilizzano tensioni superiori a 12V, il regolatore di tensione potrebbe surriscaldarsi e danneggiare la scheda. La gamma consigliata è da 7V a 12V.

Pin di alimentazione:

  • VIN. L'ingresso viene utilizzato per fornire alimentazione da una fonte esterna (in assenza di 5 V da un connettore USB o altra fonte di alimentazione regolata). La tensione di alimentazione viene fornita attraverso questo pin.
  • 5V. Sorgente di tensione regolata utilizzata per alimentare il microcontrollore e i componenti sulla scheda. L'alimentazione può essere fornita dal pin VIN tramite un regolatore di tensione o da un connettore USB o altra alimentazione regolata a 5V.
  • 3v3. La tensione in uscita è di 3,3 V generata dal regolatore integrato sulla scheda. Consumo massimo di corrente 50 mA.
  • GND. Morsetti di messa a terra.
Memoria

Il microcontrollore ATmega328 dispone di 32 kB di memoria flash, di cui 0,5 kB utilizzati per memorizzare il bootloader, oltre a 2 kB di RAM (SRAM) e 1 Kb di EEPROM (che viene letta e scritta utilizzando la libreria EEPROM).

Relativamente semplice, non contiene un mazzo caratteristiche aggiuntive, che non sono necessari e possono facilmente confondere gli utenti più giovani. Ma all'inizio, ci sono molti esempi di codice scritto, e sono tutti gratuiti e open source. Gli utenti possono quindi prendere quel codice e modificarlo per i propri scopi, imparando a scrivere il proprio codice lungo il percorso. Devi iniziare con l'hardware, ma non deve essere costoso.

Un altro pin è stato aggiunto come segnaposto per innovazioni future senza particolari sfide. Sia la batteria che l'alimentatore possono essere utilizzati per la tensione esterna. Quest'ultimo richiede una spina da 2,1 mm. Se la tensione è superiore a 12V, il regolatore di tensione potrebbe surriscaldarsi e causare danni. Questo è uno strumento che semplifica la creazione di programmi e nasconde molti dettagli, ma mi lascia la voglia di guardare sotto per capire i dettagli che di solito vengono nascosti. La maggior parte delle stampanti ha questo tipo di interfaccia, quindi hai già questo cavo.

Ingressi e uscite

Ciascuno dei 14 pin digitali di Uno può essere configurato come input o output utilizzando le funzioni pinMode() , digitalWrite() e digitalRead() . I pin funzionano a 5 V. Ciascun pin ha un resistore di pull-up (disabilitato per impostazione predefinita) di 20-50 kΩ e può trasportare fino a 40 mA. Alcuni pin hanno funzioni speciali:

Il motivo per cui hai bisogno del cavo è per programmare il dispositivo, quindi è meglio ricontrollarlo al momento dell'ordine. Lo accenderemo e spegneremo, quindi guarderemo all'interno per farlo accendere e spegnere per 2 secondi alla volta.

Questo è il programma predefinito memorizzato sul chip. Quando hai finito di programmare e non hai bisogno di una connessione costante ad esso, puoi selezionarlo separatamente. Dipende interamente dal caso d'uso e dalle condizioni in cui si desidera utilizzare il dispositivo. Dopo aver scaricato e aperto l'app, dovresti vedere qualcosa del genere.

  • Bus seriale: 0 (RX) e 1 (TX). I pin vengono utilizzati per ricevere (RX) e trasmettere (TX) dati TTL. Questi pin sono collegati ai pin corrispondenti del chip bus seriale ATmega8U2 da USB a TTL.
  • Interruzione esterna: 2 e 3. Questi pin possono essere configurati per attivare un interrupt o per valore inferiore, su un fronte di salita o di discesa o quando un valore cambia. Informazioni dettagliate sono nella descrizione della funzione.
  • PWM: 3, 5, 6, 9, 10 e 11. Entrambi i pin forniscono PWM a 8 bit utilizzando la funzione analogWrite().
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Attraverso questi pin viene effettuata la comunicazione SPI, per la quale viene utilizzata la libreria SPI.
  • LED: 13. LED integrato collegato al pin digitale 13. Se il valore sul pin è alto, il LED è acceso.

La piattaforma Uno dispone di 6 ingressi analogici (contrassegnati come A0 .. A5), ciascuno con una risoluzione di 10 bit (cioè può assumere 1024 valori diversi). Di default le uscite hanno un campo di misura fino a 5 V rispetto a massa, tuttavia è possibile modificare limite superiore attraverso l'output di AREF e la funzione analogReference(). Alcuni pin hanno funzioni aggiuntive:

Dobbiamo configurare l'ambiente nel menu "Strumenti" e selezionare "Consigli". Quindi il tuo schizzo o programma principale dovrebbe assomigliare a questo. Se noti che ci sono due rettangoli neri con diversi quadrati sul bordo superiore del tabellone. Dove si collegano alla scheda sono chiamati pin. I numeri dei pin sono elencati in bianco accanto alle intestazioni sulla lavagna.

Ogni riga termina con un punto e virgola. Seleziona quello nuovo che appare. Quando questo ballo è completo, il tuo programma dovrebbe essere in esecuzione. Rendiamolo un po' più interessante. Il codice seguente è il minimo per la compilazione del programma. Software passa solo una volta.

  • I2C: 4 (SDA) e 5 (SCL). Attraverso le uscite viene effettuata la comunicazione I2C (TWI), per la cui creazione viene utilizzata la libreria Wire.

Coppia aggiuntiva di perni della piattaforma:

  • AREF. Tensione di riferimento per ingressi analogici. Utilizzato con la funzione analogReference().
  • Ripristina. Un livello di segnale basso sull'uscita ripristina il microcontrollore. Solitamente utilizzato per collegare un pulsante di reset su una scheda di espansione che blocca l'accesso al pulsante sulla scheda Arduino stessa.

Prestare attenzione alla connessione tra i pin Arduino e le porte ATmega328.

Nota che puoi aggiungere subroutine usando la stessa sintassi. Quasi ogni riga di codice deve terminare con un punto e virgola '; '. Viene chiamato una sola volta all'inizio del programma, imposta il funzionamento dei contatti, se saranno in input o in output e quali contatti verranno utilizzati nel progetto e molti altri problemi.

Controllo del flusso e salti condizionati

Lo studio dell'uso degli interrupt è un argomento vasto che non commenteremo in questo articolo. Questa è una funzione progettata per generare ritardi, proprio per questo, nell'esempio precedente la usiamo per ottenere un ritardo di un secondo prima che venga creato un nuovo evento.

Connessione

Sulla piattaforma Arduino Uno Sono installati diversi dispositivi per comunicare con un computer, altri dispositivi Arduino o microcontrollori. L'ATmega328 supporta un'interfaccia seriale UART TTL (5V) implementata dai pin 0 (RX) e 1 (TX). Il chip ATmega8U2 installato sulla scheda dirige questa interfaccia tramite USB, i programmi lato computer "comunicano" con la scheda tramite COM virtuale porta. Il firmware ATmega8U2 utilizza lo standard Driver USB COM, non sono richiesti driver di terze parti, ma su Windows avrai bisogno del file ArduinoUNO.inf per connetterti. L'Arduino Serial Monitor consente di inviare e ricevere dati di testo quando connesso alla piattaforma. I LED RX e TX sulla piattaforma lampeggeranno quando i dati vengono trasmessi tramite il chip FTDI o Connessione USB(ma non quando si utilizza la comunicazione seriale tramite i pin 0 e 1).

Questa funzione ha un valore di ritorno, restituisce il tempo in millisecondi trascorsi dall'avvio del programma fino all'esecuzione della funzione, in genere sarà Grande importanza a seconda del tempo che intercorre tra uno spettacolo e l'altro.

Ingressi e uscite

Il vantaggio di questa funzione è che ci consente di ottenere gli stessi risultati della funzione di ritardo, ma possiamo fare qualcos'altro mentre l'evento non è ancora stato attivato. Lo svantaggio dell'utilizzo di questa funzione è che rende la logica del programma un po' più complicata per noi, ma porta grandi vantaggi se sappiamo come usarla.

Con la libreria SoftwareSerial è possibile creare un trasferimento dati seriale attraverso uno qualsiasi dei pin digitali di Uno.

ATmega328 supporta le interfacce I2C (TWI) e SPI. Arduino include la libreria Wire per un facile utilizzo del bus I2C.

Programmazione

L'ATmega328 viene fornito con un bootloader precaricato che semplifica la scrittura di nuovi programmi senza la necessità di programmatori esterni. La comunicazione viene effettuata dal protocollo STK500 originale.

  • Supporta gli interrupt.
  • Possiamo fare qualcos'altro mentre aspettiamo che appaia l'evento.
  • Non generiamo carichi inutili sul nostro processore.
Autore: Gustavo Ambrosini Furlan. Tutti i componenti della scheda sono spiegati qui, senza eccezioni. Il nostro obiettivo nella preparazione di questo materiale era di trasmettere quante più informazioni possibili mantenendo un linguaggio semplice. L'idea è che chiunque abbia qualche conoscenza di elettronica e progetti possa capire il materiale senza troppe difficoltà.

Se vuoi approfondire e saperne di più sulla profondità, forniremo le specifiche dei componenti più importanti nella sezione in fondo a questa pagina. Avrai così l'opportunità di saperne di più sulle differenze tra loro e comprendere meglio qualsiasi circuito della famiglia Arduino.

Riavvio automatico (software).

Unoè progettato in modo che prima di scrivere nuovo codice, il programma Arduino stesso sul computer, anziché premere un pulsante sulla piattaforma, si riavvii prima di scrivere nuovo codice. Una delle linee DTR di controllo del flusso di dati (DTR) dell'ATmega8U2 è collegata al pin di ripristino dell'ATmega328 tramite un condensatore da 100 nF. Attivazione di questa linea, ovvero segnalazione basso livello, riavvia il microcontrollore. Il programma Arduino, utilizzando questa funzione, carica il codice con un solo clic del pulsante Carica nell'ambiente di programmazione stesso. La segnalazione di basso livello sulla linea DTR è coordinata con l'inizio della scrittura del codice, il che riduce il timeout del bootloader.

Ecco perché ti abbiamo scelto per questo tutorial. Questo diagramma può sembrare un po' intimidatorio e persino un po' confuso a prima vista. Per facilitarne la comprensione, lo abbiamo organizzato nel layout originale. Ciò è stato fatto allineando il nome e il costo dei componenti, oltre a migliorare la separazione tra di loro. Tuttavia, nessun componente è stato modificato, rimosso o aggiunto, mantenendo la compatibilità al 100%.

Protezione da sovraccarico della porta USB

Tutto questo verrà spiegato nelle sezioni seguenti. La figura seguente mostra il diagramma dopo l'organizzazione. Un'altra difficoltà che di solito si presenta quando si analizza un'operazione Arduino è la difficoltà di trovare un particolare componente sulla scheda, poiché non stampa l'identificazione di tutti loro. Non vengono identificati resistori, condensatori, chip e altri componenti.

La funzione ha un'altra applicazione. L'Uno si riavvia ogni volta che ci si connette Programma Arduino su un computer Mac X o Linux (tramite USB). Il mezzo secondo successivo dopo il riavvio, il bootloader funziona. Durante la programmazione i primi byte del codice vengono ritardati per evitare che la piattaforma riceva dati errati (tutto tranne il codice del nuovo programma). Se si esegue un debug una tantum di uno schizzo scritto sulla piattaforma o si immettono altri dati alla prima esecuzione, è necessario assicurarsi che il programma sul computer attenda un secondo prima di trasferire i dati.

Su Uno è possibile disabilitare la linea di ricarica automatica interrompendo la linea corrispondente. I pin IC su entrambe le estremità della linea possono essere collegati per scopi di ripristino. La riga è contrassegnata "RESET-EN". È anche possibile disabilitare il ripristino automatico collegando una resistenza da 110 ohm tra la sorgente 5V e questa linea.

Protezione corrente del connettore USB

A Arduino Uno fusibile incorporato autoripristinante (automatico) che protegge la porta USB del computer da correnti di cortocircuito e sovracorrenti. Sebbene quasi tutti i computer abbiano questo tipo di protezione, questo fusibile fornisce una barriera aggiuntiva. Il fusibile si attiva quando una corrente superiore a 500 mA passa attraverso la porta USB e apre il circuito fino al ripristino dei valori normali delle correnti.

caratteristiche fisiche

Lunghezza e larghezza scheda a circuito stampato Uno sono rispettivamente 6,9 ​​e 5,3 cm. Il connettore USB e il connettore di alimentazione non sono di queste dimensioni. Quattro fori nella scheda consentono di fissarlo sulla superficie. La distanza tra i pin digitali 7 e 8 è di 0,4 cm, mentre la distanza tra gli altri pin è di 0,25 cm.

L'Arduino Uno si presenta così:


Arduino Uno esiste in diverse versioni come R1, R2 e R3. Queste versioni praticamente non differiscono nelle loro capacità, quindi considereremo solo ultima versione Arduino Uno R3. Inoltre, questo arduino è disponibile in due diverse versioni: DIP e SMD. Si differenziano per il fatto che il microcontrollore stesso può essere di esecuzione DIP ed inserito nel blocco, oppure semplicemente saldato sulla scheda se questa è la versione SMD.

Arduino Uno è la versione più semplice e popolare dei microcontrollori. Ha abbastanza potenza per quasi tutti i progetti. È molto comodo lavorarci perché i pin sono cablati con connettori femmina a fila singola. Di solito questa scheda viene utilizzata per progetti di prototipazione e il dispositivo finito viene assemblato sulla base di schede arduino più piccole, come arduino pro. Questo è facile da fare poiché i firmware sono compatibili e nella maggior parte dei casi i numeri di pin sono gli stessi. Esistono molte schede di espansione (scudi) per Arduino Uno, come schermatura Ethernet, schermatura motore, schermatura servo e altre.

Questo microcontrollore è dotato di un chip ATmega328 con una frequenza di clock di 16 MHz. Inoltre sulla scheda sono presenti: una porta USB, un connettore di alimentazione, un risonatore al quarzo, regolatori di tensione per 5 volt e 3,3 volt, LED e un pulsante di reset.

Acquista Arduino Uno R3

  • La qualità è praticamente la stessa delle tavole originali made in Italy.
  • Il prezzo è molto più basso. Un arduino uno italiano costa circa $ 10 e in Cina questo microcontrollore costerà $ 2-2,5
  • Nei negozi russi, il markup è del 100-500%. Allo stesso tempo, molto spesso, sotto le spoglie della tavola originale, possono vendere quelli cinesi, e anche di qualità molto bassa.
  • Su aliexpress, puoi facilmente trovare venditori affidabili con buone recensioni.
  • Puoi utilizzare buoni sconto e servizi di cashback.

Caratteristiche di arduino uno

  • Microcontrollore: ATmega328
  • Gamma tensione ammissibile alimentazione: 5-20 V
  • Tensione di alimentazione consigliata: 7-12V
  • Numero di ingressi/uscite digitali: 14
  • PWM: 6 pin digitali possono essere utilizzati come pin PWM
  • Numero di uscite analogiche: 8
  • Corrente massima: 40 mAh da un'uscita e 500 mAh da tutte le uscite.
  • Memoria flash: 32 kb
  • SRAM: 2kb
  • EEPROM: 1 kb
  • Frequenza di clock: 16 MHz

Collegamento di Arduino Uno all'alimentazione

Questa scheda può essere alimentata in quattro modi:

  1. Attraverso la porta USB. Puoi alimentare l'arduino da un computer, powerbank, smartphone (se supporta la modalità OTG) o da un adattatore collegato a una presa di corrente.
  2. Attraverso pin + 5V. Questo pin non è solo un output, ma anche un input. Stai attento! 5 volt devono essere applicati a questo pin. Altrimenti, puoi masterizzare il microcontrollore stesso.
  3. Attraverso la spina di alimentazione situata sulla scheda. È possibile utilizzare batterie, accumulatori e una varietà di alimentatori. Questa spina è collegata al pin VIN. La tensione e le precauzioni sono descritte nel paragrafo successivo.
  4. Attraverso il pin VIN. La corrente da questo pin passa attraverso il regolatore di tensione integrato. Secondo il produttore, puoi applicare da 5 a 20 volt. Ma non è così. Poiché lo stabilizzatore non è efficiente al 100%, quando vengono applicati 5 volt al pin VIN, la tensione potrebbe non essere sufficiente per alimentare il microcontrollore e i pin digitali non avranno 5 volt, ma meno. Inoltre non funziona per tensione massima. A 20 volt sul pin VIN, il regolatore di tensione si surriscalda molto, fino a guastarsi. Pertanto, si consiglia di utilizzare una tensione compresa tra 7 e 12 volt.




Come già accennato in precedenza, la scheda dispone di 14 pin digitali. Sono etichettati sulla lavagna con una "D" iniziale (digitale). Possono essere sia input che output. La tensione di funzionamento di questi pin è di 5 V. Ognuno di essi ha una resistenza di pull-up e una tensione inferiore a 5 volt applicata a uno di questi pin sarà comunque considerata come 5 volt (quello logico).

I pin analogici sulla scheda sono contrassegnati da una "A" iniziale. Questi pin sono ingressi e non hanno resistori di pull-up. Misurano la tensione applicata e restituiscono un valore compreso tra 0 e 1024 quando si utilizza la funzione analogRead(). Questi pin misurano la tensione con una precisione di 0,005 V.

PWM Arduino Uno

Se guardi da vicino la scheda, puoi vedere un'icona tilde (~) accanto ad alcuni pin digitali. Questa icona indica che questo pin può essere utilizzato come uscita PWM. Alcune schede arduino non hanno questa icona perché i produttori non sempre trovano un posto per questo simbolo sulla scheda. Arduino Uno ha 6 pin PWM, questi sono i pin D3, D5, D6, D9, D10 e D11. Per utilizzare PWM, Arduino ha una speciale funzione analogWrite().

Altri pin:

  • rx0 e tx1 vengono utilizzati per trasferire i dati sull'interfaccia seriale.
  • I pin D10 (SS), D11 (MOSI), D12 (MISO), D13 (SCK) sono progettati per la comunicazione SPI.
  • C'è anche un LED integrato nella scheda al pin D13.
  • A4 (SDA) e A5 (SCL) possono essere utilizzati per comunicare con altri dispositivi tramite il bus I2C. Puoi leggere di più su questa interfaccia su Wikipedia. In ambiente di sviluppo Arduino IDE c'è una libreria integrata "wire.h" per un lavoro più semplice con I2C.

caratteristiche fisiche

Arduino Uno è lungo 69 mm e largo 53 mm. Tuttavia, il connettore di alimentazione e il connettore USB sporgono leggermente dal PCB. Arduino Uno pesa circa 25 grammi. La scheda ha 4 fori per la possibilità di fissarla in superficie. La distanza tra i pin è di 2,5 mm, ad eccezione dei pin 7 e 8. Ci sono 4 mm tra di loro.

schema elettrico


Schema elettrico