Programmare con Arduino – Pin Digitali e Analogici

Mi sono accorto che nel precedente articolo sono partito spedito a scrivere di pin, modalità di utilizzo e comandi di INPUT ed OUTPUT, in realtà ho sottovalutato l’aspetto relativo alla conoscenza dei pin presenti su un Arduino e il relativo significato.
Innanzitutto va detto che ciascuna scheda Arduino possiede alcuni pin utilizzabili con segnali digitali, ed altri con segnali analogici, va anche detto che la distinzione non è così netta quando poi programmiamo e ti mostrerò il perchè nel corso di questo articolo, prima facciamo una panoramica:

ArduinoUno_R3_pinPin Digitali: da 0 a 13 ( quadrato rosso )Pin Analogici: da 0 a 5 ( quadrato giallo/arancio )

Pin PWM: 3,5,6,9,10,11 ( quadrato verde )

Arduino LilyPadPin Digitali: da 0 a 13 ( indicato dalla serigrafia )Pin Analogici: da 0 a 5 ( indicato dalla serigrafia a0-a5 )

Pin PWM: 3,5,6,9,10,11

Arduino NanoPin Digitali: da 0 a 13 ( indicato dalla serigrafia d0-d13)Pin Analogici: da 0 a 5 ( indicato dalla serigrafia a0-a5 )

Pin PWM: 3,5,6,9,10,11

Non sono certo tutti i modelli disponbili, che puoi trovare sul sito ufficiale, sono solo quelli che ho potuto vedere e sono sufficenti per chiarirci quali sono i Pin Digitali, i Pin Analogici e i Pin utilizzabili con segnali di tipo PWM ( Pulse Width Modulation ).

Quasi tutte le schede Arduino hanno 14 pin digitali: sono pin che puoi utilizzare sia in modo INPUT (ingresso), per acquisire il valore di un pulsante ad esempio o di un interruttore a leva, sia in modo OUTPUT (uscita) per inviare segnali logici ad una scheda aggiuntiva, ad un led, ecc…
Siccome si tratta di impulsi di tipo digitale il valore che puoi ricevere/inviare è il classico 0/1 o in linguaggio Arduino LOW/HIGH.
Concentrati prima sulla acquisizione rilevare un valore LOW ( 0 ) equivale a dire che sul pin che stai controllando è arrivato un segnale logico basso 0v, viceversa ricevere HIGH ( 1 ) equivale a dire che il pin ha ricevuto un segnale logico alto  5v.
Il ragionamento appena fatto è valido anche in caso di utilizzo dl pin come OUTPUT, ossia per inviare segnali: se invii LOW ( 0 ) invierai un segnale logico basso 0v, se invii HIGH invierai un segnale logico alto 5v.

Un po’ di sintassi:

Per definire come utilizzeremo un dato pin puoi usare il seguente comando: pinMode(pin, modalità) dove pin indica il numero del pin che vogliamo settare con la modalità definita nel secondo parametro, modalità: INPUT o OUTPUT.
Per inviare un segnale al pin utilizza il comando: digitalWrite(pin,level) dove pin indica sempre il numero del pin a cui vogliamo inviare il segnale definito nel secondo parametro, level: LOW o HIGHT ( 0 o 1 ).

Per leggere un valore digitale, magari quello di un interruttore collegato a massa puoi utilizzare il comando pinMode con modalità INPUT, ed il comando digitalRead(pin) dove pin indica il numero del pin di cui vogliamo conoscere il valore.

Alcuni degli ingressi digitali presentano la sigla PWM, per la trattasione di cos’è un segnale PWM ti invito a leggere in internet spiegazioni molto più esaurienti di quella che potrei darti io, per me è molto chiara quella di Giovanni che trovo davvero un ottimo punto di partenza e non solo, ovviamente c’è anche la Wiki dedicata al PWM.
Ma vediamo cosa puoi farci, io ho sperimentato come pilotare dei servocomandi da modellismo oppure led con dissolvenza, scriverò presto degli articoli.
Il segnale PWM accetta come valori da 0 a 255, per ciascun valore varia il duty-cycle generato, ad esempio con il valore 0 otterrai un valore di duty-cycle dello 0% ossia sempre 0 in modo analogo a quello che avresti ottenuto utilizzando  digitalWrite(pin,LOW).
Un po’ di sintassi:

Ricorda sempre di settare la modalità del pin prima di eseguire l’invio dei comandi, in questo esempio ho utilizzato il pin 11 scrivendo: pinMode(11,OUTPUT) indico ad Arduino di utilizzarlo in modo OUTPUT ( come una uscita ); posso quindi inviare il mio segnale con duty-cycle al 50%: analogWrite(11,127), avrai notato che ho utilizzato analog Write anche se il pin 11 è un pin digitale, il motivo è che il tipo di segnale che desidero generare ha una variazione di valori da 0 a 255 e non solo 0 e 1, la funzione digitalWrite accetta come secondo parametro solo 0 e 1 oppure LOW e HIGH. Il valore 127 è esattamente a metà della mia scala ( 0 – 255 ) quindi il duty-cycle generato sarà del 50%.

Per comprendere meglio la questione duty-cycle ho preso l’immagine riportat sul sito Arduino contenete alcuni valori simbolo del duty-cycle in funzione del numero che specificherai:

Tutorial PWM

Infine ci sono 6 pin dedicati ai segnali analogici, ma solo in input, ossia questi pin servono principalmente per acquisire dei segnali provenienti da sensori di tipo analogico: trimmer, potenziometri, fororesistenze, ultrasuoni, IR, ecc… ossia tutti quei sensori che possono generare un segnale analogico in funzione della loro stimolazione (luminosa, meccanica, ecc) se ad esempio volessi rilevare la distanza con un sensore IR dovrai utilizzare uno di questi pin.

Un po’ di sintassi:

Non è necessario settare questi pin con la modalità essendo solo pin di input Arduino sa già come utilizzarli.
Per leggere il valore presente sul pin 5, ad esempio, utilizza il comando: analogRead(pin) -> analogRead(5) il valore rilevato può variare da 0 a 1023, all’interno del range indicato ogni variazione del segnale sarà indicata con una variazione di tale valore.

Nei prossimi articoli vedremo come pilotare un led con dissolvenza(fade), come rilevare la distanza di un oggetto con un sensore IR e man mano come pilotare dei servo motori, e tanto altro ancora …

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/informatica/programmare-con-arduino-%e2%80%93-pin-digitali-e-analogici.html

109 commenti

6 ping

Vai al modulo dei commenti

    • Agostino il 23 Settembre 2011 alle 10:01
    • Rispondi

    Dove é possibile trovare gli argomenti sul comando di servo motori?

    1. Ciao Agostino,
      io parto sempre dal sito ufficiale arduino.cc ci sono molte informazioni veramente utili, sui servo ad esempio puoi consultare la pagina http://arduino.cc/en/Reference/Servo che descrive la classe Servo.
      Ho intenzione di scrivere un tutorial sull’uso dei servo, non garantisco l’uscita ma lo farò presto.

    2. Ciao Agostino,
      è on-line il primo dei miei tutoria sui servo: https://www.mauroalfieri.it/elettronica/tutoria-arduno-servo.html

      Spero possa esserti utile.

        • Angelozap il 15 Settembre 2013 alle 10:38
        • Rispondi

        Un informazione! Ma gli altri Pin a cosa servono? Tipo Vin? Grazie mille! Ottimo sito!

        1. Ciao Angelo,
          nel blog ci sono molti articoli in cui descrivo l’uso degli altri pin.
          Vin é collegato alla tensione di ingresso di arduino.

          Mauro

    • Andrea Zanni il 25 Novembre 2011 alle 16:09
    • Rispondi

    Ciao, ho una domanda, è possibile settare HIGH a un valore diverso da 5V per un pin in output?ad esempio a 2 V?
    grazie

    1. Ciao Andrea,
      Il valore HIGH è preimpostato a 255 non ai volt erogati, potresti provare con una uscita PWM controllandola in analogWrite, cerca come usare l’output PWM come potenziometro, penso sia quello che ti occorre, magari un prossimo articolo lo dedico a questo problema.

      Grazie e buon divertimento.

    • Andrea Zanni il 28 Novembre 2011 alle 11:40
    • Rispondi

    Intanto grazie della risposta. Ti spiego meglio il mio problema, io con arduino devo pilotare alcuni componenti digitali che hanno come range massimo di tensione digitale in ingresso un valore di circa 3V. Io li piloto tramite i pin SPI di arduino mega 2560. per questo ti chiedevo se era possibile cambiare il valore di default di High. ora la domanda che mi viene da farti è posso conciliare l’output Pwm e quello SDI????grazie!!

    • Andrea Zanni il 28 Novembre 2011 alle 12:12
    • Rispondi

    mi sono scordato di dire una cosa, l’alimentazione del mio componente è +- 2.5V

    1. Ciao Andrea, non sono molto ferrato sull’uso dell’SPI, se pupo fornirmi qualche link su cui documentarmi provo a capire se quelo che vuoi fare è fattibile.
      Pubblico i tuoi commenti perchè magari altri lettori del blog con maggiori conoscenze delle mie possano darti aiuto.

      Ciao

    • Andrea Zanni il 1 Dicembre 2011 alle 16:04
    • Rispondi

    Ciao…sinceramente non ho ancora trovato nulla di così interessante in giro riguardo al mio problema…intanto grazie…

    • Davide il 21 Febbraio 2012 alle 13:48
    • Rispondi

    Ciao Mauro, mi sto avvicinando ad Arduino e vorrei realizzare un progetto che prevede l’utilizzo di due componenti (sensore temperatura e orologio) che andrebbero collegati agli stessi PIN (+5V, GND, Clock (SCL), Data (SDA)): i primi 2 (+5V e GND) immagino non siano in problema, ma gli ultimi 2 (Clock (SCL) e Data (SDA), da connettere rispettivamente ai PIN analogici 5 e 4) immagino che non sia possibile collegarli agli stessi PIN: hai qualche suggerimento per risolvere questo problema? Posso usare altri PIN (ad esempio 3 e 2) per collegare questi 2? Se sì, significa che devo cambiare qualche libreria? Grazie mille!

    1. La tua ipotesi potrebbeessere una buona soluzione, che librerie utilizzi?

    2. Ciao Davide, come procede il tuo progetto? Mi hai inviato i nomi delle librerie che intesi usare?
      Se vuoi seguimi su twiter @mauroalfieri ci sono altri appassionati ed esperti come noi che possono darti aiuto.
      Mauro

    • andreino il 28 Aprile 2012 alle 20:07
    • Rispondi

    Salve Mauro, ti faccio una domanda forse banale :<>:

    Grazie

    1. Quale domanda vuoi sottopormi?

      Mauro

    • ivob il 24 Maggio 2012 alle 19:28
    • Rispondi

    intanto ringrazio anticipatamente !!!! sto cercando di leggere due o tre segnali analogici collegati agli ingressi A0.A1,A2 io ho trovato il codie per uno solo come avrai capito sono all’inizio puo darmi un aiuto grazie !!!

    1. Ciao Ivob,
      prova a seguire un po’ di tutorial sul blog, se sei alle prime armi certamente potrai trovare tante cose interessanti da scoprire.
      Per la tua richiesta di leggere più segnali analogici puoi risolverla in molti modi, il più semplice è usare lo stesso comando “analogRead” per ciascun ingresso.

      Se mi scrivi cosa vuoi farci con questi segnali magari posso darti altre info più dettagliate.

      Mauro

  1. Salve, devo utilizzare un ADC esterno con arduino: MCP3301.
    L’ADC utilizza l’interfaccia SPI. Ho cercato di capire il funzionamento dell’interfaccia, che sembra semplice, utilizzando la libreria. Però mi sfuggono alcune cose specialmente nella fase di configurazione: SPI.setClockDivider, SPI.setDataMode, SPI.setBitOrder(). Considerando l’ADC in questione quali sono i valori corretti da utilizzare ?
    Per quanto riguarda la gestione dell’ADC, utilizzo il codice sotto riportato, però devo capire se eseguo le cose correttamente. La gestione dei cicli e i bit che leggo, forse dovuto al fatto che ancora non so leggere il datasheet in particolare la pagina 21 e 22.

    // inslude the SPI library:
    #include

    # define CS 10 // Pin Selezione
    //# define MOSI 11 // MOSI // non utilizzato in quanto l’ADC non necessità di configurazione
    # define MISO 12 // MISO
    # define SCLK 13 // CLOCK

    #define FASTADC 1
    #ifndef cbi
    #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
    #endif
    #ifndef sbi
    #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
    #endif

    long readvalue0;

    void setup()
    {
    // Set pin modalità
    pinMode (CS, OUTPUT);
    //pinMode (MOSI, OUTPUT);
    pinMode (MISO, INPUT);
    pinMode (SCLK, OUTPUT);

    // Disabilitare il dispositivo per iniziare
    digitalWrite (CS, HIGH);
    //digitalWrite (MOSI, LOW);
    digitalWrite (SCLK, LOW);

    Serial.begin (115200);

    //SPI.setClockDivider (SPI_CLOCK_DIV2);
    //SPI.setClockDivider (SPI_CLOCK_DIV4);
    //SPI.setClockDivider (SPI_CLOCK_DIV8);
    //SPI.setClockDivider (SPI_CLOCK_DIV16);
    //SPI.setClockDivider (SPI_CLOCK_DIV32);
    //SPI.setClockDivider (SPI_CLOCK_DIV64);
    SPI.setClockDivider (SPI_CLOCK_DIV128);

    SPI.setDataMode (SPI_MODE0);
    //SPI.setDataMode (SPI_MODE1);

    //SPI.setBitOrder (MSBFIRST);
    //SPI.setBitOrder (LSBFIRST);
    }

    void loop ()
    {
    long t0=micros();
    for(int k=0; k<500; k++)
    {
    readvalue0 = read_adcSlow ();
    Serial.println (readvalue0, DEC);
    }
    }

    int read_adcSlow ()
    {
    long avg = 0; int value=0;
    for (int k=0; k=0; i–)
    {
    //value += digitalRead (MISO) << i;
    value += (bitRead(PINB, 4) << i);
    //cycle clock
    digitalWrite (SCLK, HIGH);
    digitalWrite (SCLK, LOW);
    }
    avg=avg+value;
    digitalWrite (CS, HIGH);
    //delayMicroseconds (10);
    }
    avg=avg/4;
    return avg;
    }

    sapete dirmi se eseguo le cose correttamente e come faccio a verificare ?

    grazie.

    1. Ciao gcam,
      purtroppo non ho mai provato l’ADC MCP3301 ed ho fatto poche esperienze con l’interfaccia SPI.
      Pubblico il tuo commento perchè altri appassionati possano darti un aiuto.

      Se intanto riesco a sperimentare con questo ADC e trovo qualche dritta te la invio.

      Mauro

  2. Ti posso dire che il codice ‘funziona’.

    Speravo di avere qualche dritta sulla lettura del datascheet, anche per poter utilizzare altri dispositivi SPI.

    grazie.

    sul datasheet cosa si intende per SB ?
    praticamente ci sono due bit null, sb e poi 11 bit che dovrebbero corrispondere al valore.

    Poichè l’ADC consente di settare una VREF esterna compresa tra 400mV e 5V, vorrei settare come VREF 400 mV. Come la creo ?

    • simone il 19 Novembre 2012 alle 20:11
    • Rispondi

    ciao,
    volevo porti una domanda: che tensioni e che correnti può gestire arduino negli ingressi analogici? cioè quanti volt e quanti ampere posso collegare in ingresso?
    grazie,
    simone.

    1. Ciao Simone,
      puoi verificare sul sito ufficiale le caratteristiche della tua scheda, variano in funzione del modello ( Uno, Mega, Due, … )

      Mauro

    • michele il 17 Maggio 2013 alle 10:16
    • Rispondi

    salve, sto utilizzando ArduinoLeonardo e mi servirebbe il comando per configurare i piedini analogici in digitale.. sapresti dirmi come si fa? grazie.

    1. Ciao Michele,
      non ho compreso la richiesta, vuoi usare I pin analogici come digitali?

      Hai provato a dichiararlo con il pinMode() e leggerli con digitalRead()?

      Spero. Aver interpretato la tua richiesta.

      Mauro

    • Loris il 27 Novembre 2013 alle 07:19
    • Rispondi

    Ciao Mauro
    Devo per necessita creare un programmino per arduino uno
    Non e tanto complesso…. Sono disposto a finanziare il tutto
    Sei disposto ad aiutarmi ?
    Ciao Loris

    1. Ciao Loris,
      descrivimi in una email ciò che vuoi realizzare, l’indirizzo é l’info del blog.
      Ti aiuto volentieri e se non richiede molto tempo non ci sono problemi economici.

      Ti chiedo la cortesia, in email, di mettere tutti i dettagli possibili.

      Mauro

    • Loris il 27 Novembre 2013 alle 14:26
    • Rispondi

    Grazie mille ti sto inviando il tutto

    • LORIS il 28 Novembre 2013 alle 15:29
    • Rispondi

    CIAO MAURO
    SCUSAMI SE TI DISTURBO… TI è ARRIVATA LA MIA MAIL CON IL VIDEO ?

    1. Ciao Loris,
      no, non mi è arrivato nulla.
      Puoi evitare il MAIUSCOLO 🙂

      Grazie
      Mauro

    • Loris il 28 Novembre 2013 alle 20:54
    • Rispondi

    Te l’ho inviata con un video su info@mauroalfieri.dot.it
    e giusto?

    1. Ciao Loris,
      Dot in inglese é . Quindi il dominio é mauroalfieri.it

      Cosa contiene il video?

      Mauro

    • Loris il 29 Novembre 2013 alle 12:40
    • Rispondi

    Il video c’è il movimento che deve fare la macchina…
    Oggi te lo rinvio

    • Roberto il 13 Gennaio 2014 alle 12:25
    • Rispondi

    Salve Mauro!
    Innanzi tutto volevo farle i complimenti per il suo sito che offre guide dettagliate e ottime per iniziare con arduino.
    Veramente un ottimo lavoro.
    Volevo chiederle se riusciva a togliermi un dubbio con arduino: quando cerco di accendere 2 led solo il primo si accende al pieno della potenza mentre gli altri si accendono fiacchi e quasi non si vede nemmeno.
    Come posso fare per farli accendere? le ho provate tutte.
    Roberto

    1. Ciao Roberto,
      per poter rispondere con precisione avrei bisogno di sapere:
      – quanti sono i led
      – che tipo di led sono
      – a quali pin li hai connessi
      – quali resistenze hai utilizzato
      meglio ancora se sai l’assorbimento di ciascun led.
      La causa principale potrebbe essere l’elevata richiesta di corrente da parte dei led, arduino è in grado di erogare 40mA max per pin ed in totale 150mA massimi.

      Mauro

        • Roberto il 13 Gennaio 2014 alle 18:05
        • Rispondi

        Non conosco le specifiche dei led perchè li ho trovati in un kit di arduino.
        Per fare una prova avevo connesso i led senza resistenza per quello non andavano.
        Mettendo delle resistenze da 220 ohm si accendono entrambi un pò meno forte.
        Grazie mille Mauro.
        Volevo chiedere un’altra cosa:
        è possibile bloccare temporaneamente il loop ad un determinato punto facendolo riprendere alla pressione di uno o più tasti?
        Grazie mille in anticipo.

        1. Ciao Roberto,
          ben fatto per i led.
          Si esistono diverse tecniche per ottenere una pausa temporanea fino alla pressione di un pulsante o altro segnale.
          Ti consiglio di approfondire i cicli di tipo “while” che consentono di creare dei loop interni alla funzione loop() stessa.

          Mauro

    • Fabiano il 2 Agosto 2014 alle 03:06
    • Rispondi

    Ciao Mauro,
    vorrei collegare ad un pin digitale dell’Arduino UNO un telecomando per le luci del giardino. L’idea è quella di mantenere sempre premuto con un morsetto il pulsantino del telecomando ed agire, tramite Arduino, sulla sua alimentazione per accendere/spegnere le luci. Il telecomando funziona con due batterie a bottone (del tipo CR2032) da 3 V ciascuna, quindi 6 V in tutto. L’assorbimento medio del telecomando è di 14 mA.

    Arrivo alla mia domanda: visto che l’output del pin digitale è di 5 V, questi potrebbero bastare (e quindi potrei collegare direttamente il telecomando, ovviamente senza le batterie, al pin) oppure il Volt di differenza mi obbliga ad usare un mosfet?

    Tante grazie per l’attenzione.
    Fabiano

    1. Ciao Fabiano,
      se, come dici i 5v sono sufficienti al telecomando non hai bisogno di mosfet o altro, se non lo sono ti consiglio un relè per arduino.
      In ogni caso mi sembra una soluzione macchinosa, hai pensato di usare direttamente arduino come telecomando? Ho scritto degli articoli in merito.

  3. Volevo chiedere un parere,Vorrei utilizzare Arduino per sostituire la scheda di controllo di una stufa a pellet,è fattibile la cosa?

    1. Ciao Marco,
      mi sembra pericoloso in quanto le stufe a pellet avranno sicuramente una centralina complessa per il controllo fumi, erogazione del pellet e bruciatore.
      Solitamente i produttori sottopongono a complessi controlli e certificazioni i loro prodotti per dichiararli sicuri.
      Se la tua stufa non ha delle funzioni che desideri controlla che non sia possibile integrare tali funzioni esternamente, magari tramite arduino, su protocolli di tipo seriale, I2C o SPI.

    • tesla668 il 20 Settembre 2014 alle 18:29
    • Rispondi

    Carissimo Mauro, innanzitutto un sincero ringraziamento per come esponi la programmazione ed i passi per realizzare un progetto. Io ho perso il lavoro di tecnico commercile con altre 90 persone, mi occupavo di soluzioni per la connessione elettrica. Adesso sto affrontando un percorso di riprofessionalizzazione, visto che vendendo un monoprodotto mi sono perso molte cose per starda…tra cui Arduino, che mi sta appassionando e aiuando. Ho un problema con la gestione di più cicli all’ionterno dello stesso programma. Faccio un esempio se devo gestire 4 input e 4 output ( Analog i primi e Digital i secondi), metti che devo timerizzare un OUTPUT e lo faccio con DELAY, tuto il programma si ritarda. Mi sono letto tutti i manuali possibili ed ho trovato una soluzione nel tuo Tutorial Interrupt ,ne ho capito il funzionamento edho realizzato tutto.

    C’è qualcosa di più leggero ? Come posso gestire tempi di intervento divesi sugli OUTPUT?

    GRAZIE e forza ,continua su questa strada

    CIAO

    1. Ciao Roberto,
      al posto del delay() puoi usare la funzione millis() per verificare il trascorrere del tempo ed evitare il delay.
      E’ più leggero ma di certo differente dall’uso degli interrupt che servono a tutt’altra cosa e sono solo 2 in arduino uno.

    • Michael il 30 Settembre 2014 alle 18:03
    • Rispondi

    Ciao non potresti fare un piccolo progetto serra con ecoduino non solo che dia da bere ma che rinfreschi l’ ambiente se è troppo caldo e che tramite fotoresistenze si accendono dei led come illuminazione a mo di serra idroponica. Grazie se leggi questo commento bel blog 🙂

    1. Ciao Michael, sarebbe un progetto interessante e sicuramente leggendo gli articoli che ho già scritto sarai in grado di farlo di solo, pensa alla soddisfazione di dire: l’ho fatto io al posto di dire agli amici “l’ho copiato da un sito”

    • Guglielmo il 27 Dicembre 2014 alle 12:05
    • Rispondi

    Ciao Mauro da poco tempo sono entrato nel mondo di Arduino e ho letto alcuni dei tuoi corsi che sono veramente comprensibili anche per persone poco esperto come il sottoscrito. Io vorrei costruire una piccala attrezzatura semi automatica movimentata da 2 cilindri pneumatici comandati da 2 elettrovalvole con 2 solenoidi, come ingressi ho 3 sensori di prossimità, 3 sensori di fine corsa dei cilindri, un pulsante di emergenza, uno di avvio ciclo e uno di fine cicli, con la scheda Shield IN/OUT cod.8220-VMA05 è possibile farla funzionare?
    Grazie
    Ciao

    1. Ciao Guglielmo,
      contandoi sensori che vuoi inserire sono più di 6, se non conto male, e questa scheda gestisce 6 sensori di input e 6 output che nel tuo caso sarebbero troppi output.
      Probabilmente una shield con 4 relay sarebbe più che sufficiente ed i sensori li colleghi direttamente ad arduino se lavorano a 5v.

    • Guglielmo il 30 Dicembre 2014 alle 09:53
    • Rispondi

    Ciao Mauro
    Avendo la scheda 6 ingressi analogici e 6 digitali pensavo di utilizzare dei sensori digitali e i pulsanti analogici, mentre non ho problemi per le uscite in quanto sono 4 per i 2 cilindri + 1 per la valvola di scarico rapido per l’emergenza.
    Colgo l’occasione per augurati un buon 2015
    Guglielmo

    1. Ciao Guglielmo,
      perdonami ma avevo inteso che tu volessi utilizzare solo gli ingressi digitali della shield in-out ( 6 appunto ) se usi anche quelli analogici puoi avere in ingresso 12 input ( 6 analogici e 6 digitali ) ricorda che sono tutti ingressi a 5v e che gli analogici ti daranno un valore da 0 a 1023 in funzione del circuito che gli connetti.

        • Guglielmo il 10 Gennaio 2015 alle 18:01
        • Rispondi

        Grazie delle informazioni.
        Pensavo anche; è possibile, avendo montato la scheda in / out su arduino, poter collegare anche il display LCD ACM1602B per visualizzare istruzioni, allarmi o commenti.

        grazie ancora per la disponibilità.

        Guglielmo

        1. Ciao Guglielmo,
          a memoria ti direi di no in quanto il display necessita di 8 pin + 1 pin di blacklight per il controllo e la IN/OUT di 6 pin digitali.
          So che la Lemontech.cc ( http://www.lemontech.cc ) sta per produrre una shield LCD che funziona con soli due pin ed a quel punto potresti riuscirci.
          Tieni sotto controllo il sito per sapere quando sarà disponibile.

    • Davide il 24 Gennaio 2015 alle 13:30
    • Rispondi

    Salve Mauro,
    Avrei una domanda da porle, premetto che sono agli inizi!
    Come posso sapere la totale quantità di alimentazione che mi serve per un progetto fatto da Arduino uno+wifishield di adafruit+sensore dht22? Come si può fare? Mi servirebbero più informazioni possibili a riguardo.
    La ringrazio tanto, davvero!

    1. Ciao Davide,
      il modo più affidabile che conosco è costruire il circuito e misurare la corrente assorbita in fase di funzionamento per il periodo che ti interessa monitorare in modo da avere valori certi.

    • Andrea il 5 Febbraio 2015 alle 09:24
    • Rispondi

    Buongiorno Mauro,

    e complimenti per il tuo spazio web che per me è diventato di riferimento, nel cercare di capire Arduino.
    A proposito di segnali in ingresso ti chiedo:

    ho bisogno di avviare un programma attraverso un pulsante, e poi il programma deve tornare all’inizio, in attesa di una nuova pressione del pulsante.
    Il probema è che il pulsante, una volta premuto, può rimanere premuto anche a lungo, anche quando il programma è già finito ed attende il nuovo segnale.
    Io vorrei che il programma si riavviasse solo quando:
    il pulsante è stato rilasciato, e poi nuovamente premuto.
    Cioè, credo, con un impulso, anziché con uno stato.
    Come faresti?

    Ti ringrazio per la disponibilità.

    Andrea.

    1. Ciao Andrea,
      io userei un boolean di controllo se la pressione è avvenuta lo setti a “true” e verifichi la pressione, al rilascio imposti “false” così sai se il pulsante è già stato premuto o è ancora premuto dalla volta precedente.

    • federico il 6 Febbraio 2015 alle 16:42
    • Rispondi

    ciao, sono un ragazzo di 14 anni molto appassionato di queste cose.
    volevo davvero ringraziarti, perché grazie ai tuoi cosiddetti corsi sto riuscendo a capire la programmazione, in attesa di ricevere arduino.
    grazie 10000

    1. Bene Federico,
      io lo faccio con piacere e so che tu imparerai tanto 🙂

  4. Ciao a tutti ho bisogno di una mano sto realizzando un progetto ma mi sono bloccato … Il progetto è una macchina per riempire il vino nelle bottiglie … Tutto il progetto di basa su un loop che comanda una sequenza di operazioni solo che adesso mi servirebbe che a metà loop il sistema si fermasse e tramite un pulsante vorrei farlo ripartire io per continuare l’altra metà rimanente di loop

    1. Ciao Ezio,
      descritto con i pochi particolari che mi dici potrei ipotizzare tante soluzioni e magari nessuna adatta.
      Cosa intendi per “una sequenza di operazioni solo che adesso mi servirebbe che a metà loop il sistema si fermasse”:

      quali sono le operazioni ?
      quanto dura ciascuna ?
      quanti sensori usi per capire in che punto sei ?
      quando capisci che sei a metà ?
      a metà del loop() cosa succede che ti fa capire che ci sei arrivato ?
      ogni loop() serve solo ad un ciclo o per riempire una bottiglia ci vogliono più cicli ?
      é un prodotto personale o devi industrializzarlo ?

    • Francesco il 8 Agosto 2015 alle 18:56
    • Rispondi

    Ciao e grazie per l’articolo!
    Ho notato che quando pongo il servo in posizione 90°, il servo sembra rimani acceso senza che la testina si muova. Ad angoli tipo 45° o altri, il servo raggiunge la posizione e poi si spegne (non si sente nulla). A 90, raggiunge la posizione e rimane acceso (si sente il rumore del motorino interno).

    È normale?

    1. Ciao Francesco,
      non dovresti udire un sovraccarico del servo per mantenere la posizione, questo indica che il motore non riesce a raggiungere o mantenere la posizione e l’elettronica del servo tende a correggere continuamente.

        • Francesco il 10 Agosto 2015 alle 13:05
        • Rispondi

        Quindi è difettoso? Ho parlato con chi me l’ha venduto e mi ha detto che è normale…

        1. Ciao Francesco,
          mi sono probabilmente spiegato in modo errato: ti ho scritto il motivo per cui verifichi questo comportamento.
          La causa non è necessariamente un malfunzionamento del prodotto potrebbe ad esempio dipendere dal tipo di controllo che effettui o da altri fattori esterni, ad esempio la meccanica a cui è collegato, ecc…
          Per verificarlo ti consiglio di testare il servo con un controller per modellisti, possibilmente della stessa ditta produttrice del servo, verificando che ad ogni comando il relativo posizionamento.

    • Alberto il 10 Novembre 2015 alle 12:20
    • Rispondi

    Ciao Mauro, avrei bisogno di alcune informazioni per un progetto che sto tentando di realizzare con Arduino Mega SDK.
    Ti anticipo che sono molti anni che non tocco elettronica e non mi sono mai approcciato ad arduino sinora, tuttavia ci provo.
    Il mio scopo è quello di leggere tramite input analogici dei valori di tensione e digitalizzarli per leggerli in tempo reale.
    Leggo sul sito di arduino che il range in input analogico è 0-5 v ed una corrente massima di 40mA.

    Come alimentazione utilizzo una normale batteria 9V duracell.

    Vengo alle domande:
    – C’è modo di limitare la tensione di uscita da un circuito in mofo da non far mai arrivare oltre 5v ad arduino?
    (tento una risposta: con uno zener 5.1 o 4.7? e come dovrebbe essere fatto il circuito? Ho provato col solo zener ed in pochi secondi è diventato rovente ergo troppi mA)

    – C’è modo di limitare la corrente a 40mA (o meno) per lo stesso motivo di cui sopra?

    Grazie per la disponibilità

    1. Ciao Alberto,
      senza sapere a quale tipo di progetto stai lavorando e che tipo di sensore stai collegando non so risponderti.

    • Antonio il 6 Gennaio 2016 alle 22:08
    • Rispondi

    Ciao Mauro,
    devo pilotare un motore attraverso arduino, controllando:
    1 velocità del motore (attraverso un potenziometro);
    2 tempo di lavoro, ovvero il tempo per cui deve girare (controllato sempre attraverso un potenziometro);
    3 tempo di pausa, ovvero quando il motore non deve girare (controllato sempre attraverso un potenziometro).
    per farlo ho scritto 2 programmi, quello che controlla la velocità e uno che controlla il tempo di lavoro, mentre per il tempo di pausa non ho visto ancora nulla.
    visto che i due programmi sono separati ho bisogno di unirli, non ci riesco perchè ci sono 2 righe di codice per azionare il motore. potresti aiutarmi?

    [[ codice rimosso in automatico ]]

    Grazie in anticipo.

    1. Ciao Antonio,
      innanzitutto ti chiedo di rispettare le regole in fondo ad ogni articolo e nelle pagine del blog.
      Non correggo codici di altri e sopratutto nei commenti.

      Per il tuo problema ti basta fare uno schema mentale delle fasi da eseguire e in che sequenza eseguirle, poi tradurre in un unico sketch il risultato, non puoi avere due righe che contemporaneamente debbano azionare il motore in quanto o sei in fase 1 o in fase 2 o in fase3 non sarai mai in fase 1 e 2 contemporaneamente

        • Antonio il 7 Gennaio 2016 alle 13:12
        • Rispondi

        Chiedo scusa per non aver utilizzato il tag per scrivere il codice, quindi non posso regolare la velocità del motore e contemporaneamente regolare il tempo di lavoro? Ovviamente io voglio farlo con due potenziometri.

        1. Certo che puoi Antonio,
          leggi bene la mia risposta ed i consigli che ti ho scritto.

    • Guli il 3 Giugno 2016 alle 19:05
    • Rispondi

    Con arduino uno mi ritrovo le uscite digitali non PWN in stato low con 3volt invece che a gnd….non dovrei avere solo 0 o 5V?

    1. Ciao Guli,
      hai già provato a collegarci un led+resistenza per verificare che sia una tensione effettiva?
      L’arduino è originale?

    • Angelo il 19 Giugno 2016 alle 18:22
    • Rispondi

    Ciao Mauro, complimenti per il sito e per il modo con cui spieghi, sono a muovere i primi passi con Arduino uno, ti volevo chiedere se hai fatto una guida su come gestire un pulsante NO e un pulsante NC in serie.
    Volevo capire come si programma arduino con il classico comando marcia, arresto e blocco sicurezza.
    Grazie, intanto continuo a leggere i tuoi articoli.

    1. Ciao Angelo,
      nel corso Base trovi molti tutorial sui pulsanti che puoi adattare al tuo scopo.

    • Davide il 16 Dicembre 2016 alle 14:01
    • Rispondi

    Salve. È possibile utilizzare una porta analogica come se fosse una porta pwm? Mi spiego: ho da utilizzare un led rgb ma ho gia tutte le porte pwm utilizzate posso usare le porte analogiche in modo che possa “impostare” il colore del led? E se si come?

    1. Ciao Davide,
      i pin analogici possono essere usati come digitali in input o output ma come PWM in output mi sembra di no. Puoi verificare sul pinout arduino.

    • Nico il 14 Gennaio 2017 alle 15:57
    • Rispondi

    ciao Mauro vorrei sapere da te se e possibile con arduino controllare l’automobile mi spiego meglio
    vorrei che arduino controllasse lo stato porte aperte avaria luci o altre avarie controllo temperatura e via discorrendo ma essendo l’impianto della macchina a 12V spenta e circa 14V accesa ti chiedo come superare tale o se mi puoi indirizzare in qualche modo premetto che non sono ne un tecnico ne un informatico ma solo un appassionato autodidatta grazie in anticipo

    1. Ciao Nico,
      volendoti collegare direttamente agli impianti esistenti, io lo sconsiglio per una questione di garanzia e sicurezza stradale, puoi usare degli optoisolatori opportunamente tarati per interfacciare i sensori a 12/14v a uscite a 5v.
      Nel blog trovi trattato l’argomento e dovrai costruirti tu un circuito adatto predendolo dal datasheet o da qualche manuale di elettronica.

    • luigi il 4 Aprile 2017 alle 08:10
    • Rispondi

    ciao mauro.
    sto creando un progetto scolastico in cui faccio comunicare due arduino uno come trasmettitore/ricevitore. l’unico problema è che non so come settare tutti i pin digitali (che saranno led) a livello basso. dove una volta andati HIGH tornino bassi dopo qualche millisecondo (microsenddelay)

    1. Ciao Luigi,
      trovi nel blog molti articoli in cui è spiegato come portare un pin da HIGH a LOW.

    • Gianpiero il 4 Giugno 2017 alle 09:59
    • Rispondi

    Ciao Mauro….inizio a dirti che di elettronica non ci capisco un tubo…ho comprato però.. Un kit da AMAZON e precisamente ELEGOO STARTER KIT mega 2560r3…vorrei costruire un sensore di umidità per interno con display a 16 pin ..ho provato ma non riesco,anche perche non so come collegarli..mi invii per favore in e_mai uno schema su come devo collegare il display alla scheda ? Grazie mille Gianpiero

    1. Ciao Giampiero,
      trovi tutto nel blog, basta usare il campo di ricerca.
      Premetto che i display sono trai componenti più complessi da collegare e variano i collegamenti da display a display, nel blog trovi alcuni esempi, per essere certo di non danneggiarli ti serve lo schema di collegamento del produttore.

    • Elia il 17 Agosto 2017 alle 16:04
    • Rispondi

    Ciao Mauro,
    posso usare i pin 0 e 1 come input/output digitale? Sto provando con 2 pushbutton ma mi ritorna un segnale sempre HIGH (diversamente da altri pushbutton connessi su pin differenti). Non so se usandoli come output per 2 led possa cambiare qualcosa…

    Grazie tante.

    1. Ciao Elia,
      se li usi come pin digitali non puoi usare il serial monitor e le istruzioni Serial nel tuo sketch. Trovi il motivo descritto in alcuni articoli del mio corso base gratuito arduino on-line

    • Pierpaolo il 9 Novembre 2017 alle 10:28
    • Rispondi

    Buongiorno, ho iniziato da poco a utilizzare Arduino non originale ma alla fine mi sembra che non cambi nulla. I primi problemi sono stati causati dal driver che non riconosceva la scheda sulla com3. Adesso tutto ok. Ma il maledetto led “L” che continua a lampeggiare sempre anche quando cambio listato. Ho letto sul forum che bisogna mettere un resistore da 100k dal pin 13 (che corrisponde al pin 19 Atmega328p) e gnd!!! Proverò. Chissà perchè si utilizzano ancora le porte com (se fosse seriale ok) con la porta usb ………………….. . In ogni caso volevo far presente che a me non funziona nulla, inserisco un codice ma senza ottenere niente di niente. Volevo iniziare con il progetto pulse heart ma per il momento sono fermo. Ho acquistato un libro per iniziare a utilizzare al meglio questa schedina e appena mi arriva sperimento. Caspita forse era meglio il mitico ST7! Saluti.

    1. Ciao Pierpaolo,
      se tu usassi l’originale non avresti tutti questi problemi.

    • renato de felice il 12 Febbraio 2018 alle 23:56
    • Rispondi

    desidero contattare mauro alfieri per commissionarlo un mio progetto che non riesco
    a far funzionare ( forse 79 anni la memoria fa cilecca)
    renato de felice grazie

    1. Ciao Renato,
      puoi scrivermi del progetto alla casella info del blog, la medesima da cui ti è arrivata questa email.

    • Biagio Antonio Lo Cascio il 16 Febbraio 2018 alle 20:19
    • Rispondi

    Ciao Mauro, ho conosciuto oggi il tuo sito.
    Ho un piccolo problema, ho ditate su IDE uno sketch ed in una ria di seta, ho digitato : digitalState(2); // Pin INPUT.
    Facendo la verifica mi spunta :exit status 1 ‘ was not declared in this scope’.
    Vorrei sapere cosa significa e cosa dovrei fare.
    Sono alle prime armi.
    Ringrazio anticipatamente

    1. Ciao Antonio,
      in primo luogo non ho compreso cosa tu sta facendo, forse a causa della correzione del cellulare la frase è incomprensibile.
      Il comando “digitalState” non esiste.

    • Simone il 23 Marzo 2018 alle 11:07
    • Rispondi

    Ciao Mauro,
    innanzitutto complimenti per il magnifico lavoro che hai realizzato.
    Ho un problema che apparentemente può sembrare stupido ma che non riesco a risolvere per via della mia poca conoscenza di Arduino.
    Sto utilizzando un Arduino Mega 2560 con il quale devo gestire un Mass Flow Controller.
    Il mio problema riguarda l’apertura della valvola del MassFlow il quale richiede un voltaggio di +5 VDC e deve essere effettuato dal pin analogico (nel mio caso, il pin in questione è il A4) quindi dal pin A4 di Arduino (il quale è collegato al pin relativo del MassFlow) mi deve uscire un voltaggio di +5 VDC che mi permette l’apertura della valvola .
    Ora le chiedo: come si scrive questo comando che vorrei effettuare nello sketch?
    La ringrazio anticipatamente per l’aiuto che mi darà.

    1. Ciao Simone,
      innanzitutto ti consiglio di leggere e comprendere i miei articoli ed il corso arduino base gratuito che ho realizzato e pubblicato in questo blog.
      Perché vuoi usare il pin A4 come output? I pin A0-A5 possono essere usati come Analogici in input o digitali in output.

        • Simone il 26 Marzo 2018 alle 15:47
        • Rispondi

        Ciao Mauro,
        la scelta del pin A4 è stata casuale, serviva solo per capire come effettuare il comando; usare il pin A4 come output mi sono reso conto che era un errore.
        Comunque, leggendo i suoi articoli e il corso base di arduino, sono riuscito a risolvere questo problema.
        La ringrazio di nuovo per l’aiuto e per la disponibilità.

        1. Bravissimo Simone.

    • Aldo Leardi il 11 Aprile 2018 alle 10:59
    • Rispondi

    Buongiorno Mauro, cercando indicazioni su Arduino sono incappato sul tuo lavoro che trovo impressionante e frutto sicuramente di una passione pura. Io sono datato e distratto da altre cose ma per onorare il regalo di Arduino fattomi a Natale dai nipoti, ho provato a farne una applicazione. Si tratta di misurare un impulso che va alto per un tempo variabile da 4ms a 1004 ms . Ho usato l’istruzione durata = pulseIn(pin, HIGH, 1004000) . che poi divido per 1000 e visualizzo. Il risultato sembra coerente con la durata rilevata sull’oscilloscopio tranne che per valori superiorti a 30 ( 30000 micros ) ho inversione di segno. Ti sarei grato se potessi indicarmi come uscirne , ne va della mia onorabilità di nonno. Grazie e buon divertimento.

    1. Ciao ALdo,
      lavoro encomiabile per essere un primo esperimento .. hai tutta la mia stima.
      L’inversione di segno potrebbe essere dovuta solo ad un errato tipo si variabile utilizzata che trasformando i numeri in binario ti riporta a valori negativi raggiunto il suo limite superiore.
      Che tipo di variabile hai utilizzato?

    • Aldo Leardi il 12 Aprile 2018 alle 10:36
    • Rispondi

    Buongiorno Mauro, ho risolto il problema impostando la variabile come ” unsigned long” . E’ bastato leggere qualche lezione del tuo corso. Lavoro meritorio. Grazie. Se dovessi mettere la testa a posto, non è escluso che torni a disturbarti per altri consigli. Buon lavoro

    1. Bene Aldo,
      se tu volessi condividere i tuoi progetti sarò lieto di pubblicarli.
      Leggi nella sezione “Collabora al Blog” come fare e pensa che se oggi quello che ho scritto è stato utile a te ciò che hai da raccontare domani sarà utile ai tuoi nipoti e non solo.

    • Marco il 24 Aprile 2018 alle 14:27
    • Rispondi

    Salve,
    è possibile alimentare Arduino con i 12-14 V di una automobile e usare anche i segali in entrata allo stesso voltaggio. Dalle caratteristiche che leggo nel sito sembrerebbe di si, mi la lascia qualche dubbio l’Operating voltage a 5v.
    Grazie.

    1. Ciao Marco,
      no, non è possibile.
      Puoi alimentare Arduino Uno attraverso il Vin o il connettore Jack nero frontale da 7 a 20v, anche se il sito raccomanda 12v, ma gli ingressi e le uscite, pin, restano operanti a 5v ( Operating voltage 5v )

        • Marco il 10 Maggio 2018 alle 15:47
        • Rispondi

        Salve,
        e grazie mille per la risposta. Pensa che potrei risolvere il problema alimentando sia l’Arduino che i sensori con i 12 v del veicolo e poi convertendo solo l’uscita dei sensori con degli switching di step down per avere una caduta di tensione fino a 5 v ? Risolto questo dubbio inizierei subito con la programmazione del mio progetto ( un antifurto con condizioni specifiche di allarme )
        Grazie.

        1. Ciao Marco,
          si puoi alimentare arduino a 12v dal Vin, come ti ho scritto, ma ai pin devi far arrivare al max 5v.

    • Marco il 24 Aprile 2018 alle 17:07
    • Rispondi

    Salve,
    sarebbe comunque possibile usare le entrate analogiche “come” digitali (facendogli leggere un ingresso alto o basso) in caso avessi bisogno di più ingressi per il mio progetto?

    1. Ciao Marco,
      si è possibile usare i pin analogici A0-A5 dell’arduino uno sia come input analogici, funzione designata, sia come IN/OUT digitali.

    • Matteo il 2 Marzo 2019 alle 01:58
    • Rispondi

    Ciao Mauro, innanzitutto complimenti per il sito e per la disponibilità che dimostri con tutti

    Mi affaccio per la prima volta al mondo dell’elettronica perchè ho smesso di fumare e devo avere una mania ossessiva per distrarmi.

    il progetto che vorrei realizzare consiste nel far sì che tenendo premuto n secondi un tasto del citofono (quello che serve per attivare la cornetta e sentire/parlare) si attivi un telecomando (a 433 Mhz) che sblocca l’ascensore. Ho recuperato un arduino micro.

    Devo dire che ho già fallito nel riuscire a leggere il segnale del telecomando con la libreria rcswtich e i rx/tx 433 mhz economici che si trovano su internet – il risultato è che la tensione del ricevitore si fissa su 1 v quando eccitato dal telecomando mentre oscilla tra 0.02 e 0.06 v o qualcosa del genere a riposo , che non mi significa niente. E senza sapere come lavora il telecomando (millisecondi, n. ripetizioni etc), anche se vedo l’impostazione dei 10 dipswitch, non so cosa fare per trasmettere con il rc 433 mhz che ho comprato.
    Per tale motivo ho deciso di andare ad azionare con arduino il telcomando già esistente.

    Il citofono, tra i vari contatti elettrici interni, ne ha uno che è 6,6 v in condizioni “a riposo” e che cala a 1 v quando viene schiacciato questo tasto della cornetta.

    La mia idea è di usare un AnalogRead per valutare un certo tempo di permanenza a 1 v (tasto premuto) e a quel punto con un DigitalWrite high azionare un relè che lascia passare i 12 v al telecomando.

    il mio dubbio è:

    (oltre a: ha senso quello che ho scritto? 😀 )

    1) leggo ovunque che la tensione massima che bisogna applicare a un pin analogico in input è 5 v. Io ho 6,6 perciò devo tirarla giù di 1,6 circa – ma per dimensionare la resistenza (lo faccio così?) mi serve sapere l’intensità corrente. Che corrente assorbe il pin analogico? ho già trovato sia pareri tipo “48 mAh” piuttosto che 0.0001 mAh – nel primo caso mi servirebbe una resistenza da 1,6/0.048 = 33 ohm nel secondo caso 1.6/0.0000001 = 16 Mohm ?!?!?!?! Mi sono un po’ perso.

    2) posso alimentare tramite Vi l’arduino tra 7 e 12 v come raccomandato in alcune schede tecniche? o bisogna dargli max 5 v?

    Grazie mille in anticipo e buon weekend!

    Matteo

    1. Ciao Matteo,
      il primo commento che inserisci deve essere approvato per questo non li vedi subito.
      In merito a quello che scrivi non vorrei aver frainteso ma se si tratta di pulsanti o segnali cmq digitali è meglio usare un digitalRead su un pin digitale che un analogRead.
      Forse prima di approcciare a questo progetto è bene che tu prenda pratica su progetti più semplici e con tensioni standard.
      In merito alle tue domnade dirette:
      1. usa un partitore di tensione, online trovi molti calcolatori, considera che sei in input e quindi le correnti assorbite da Arduino sono trascurabili o quasi nulle, io ad esempio per ripartire da 5v a 2,5v uso due resistenze uguali da 1K o 10k in base a quali ho a disposizione in quel momento.
      2. si puoi alimentare Arduino da 7 a 12v dal suo connettore frontale DC.

        • Matteo il 4 Marzo 2019 alle 13:36
        • Rispondi

        Ciao Mauro, ah ok non sapevo del primo commento perciò ho provato un po’ di volte pensavo fosse una questione di cookies disabilitati o simili 🙂

        grazie mille per la risposta

        l’input sì potrebbe essere assimilato a un segnale digitale. E’ il circuito elettrico che alimenta speaker e microfono della cornetta del citofono, che appunto è 6,6 v a riposo e circa 1 se schiacciato. Portandolo a 5 con il partitore tensione a monte lo posso leggere con un pin digitale. Ho capito bene?

        Ok, approfondirò il discorso partitore di tensione; effettivamente mi manca un po’ la teoria “applicata”, ero convinto che con correnti approssimabili a 0 servissero dei megaOhm come resistori.

        Alimentazione arduino: ok, il micro non ha il connettore ma penso sia uguale usando Vi.

        Grazie ancora
        buona settimana

        1. Ciao Matteo,
          se usi un partitore correttamente configurato un pull-up o pull-down puoi trattarlo come input digitale con Arduino.
          Che version di scheda arduino stai usando ?

    • Matteo il 4 Marzo 2019 alle 15:26
    • Rispondi

    il micro, questo:

    https://store.arduino.cc/arduino-micro

    1. Ciao Matteo,
      si puoi usare i 7-12v come indicato nelle specifiche tecniche del prodotto.

  1. […] Se vuoi pilotare dei servo prima di tutto devi sapere che la complessità dell’opera nasce dalla necessità di utilizzare un duty-cycle per impartire comandi a questi meravigliosi oggetti in grado di trasformare la volontà elettronica in movimento. Arduino dispone, secondo i modelli, di uscite PWM ossia pin digitali in grado di generare un duty-cycle utilizzabile per far muovere un servo, puoi trovare una panoramica sull’argomento in questo mio articolo. […]

  2. […] il vaore ad Arduino sul pin definito alle linee 18-20, i valori passati saranno tradotti in segnali PWM dai pin di […]

  3. […] Se non ti è chiaro perchè utilizzo la funzione analoWrite() se ho collegato il led alle uscite digitali PWM puoi leggere questo mio articolo che ti chiarirà le idee: Programmare con Arduino – Pin Digitali e Analogici. […]

  4. […] indica il tempo del duty-cycle, se non sai cos’è ti invito a leggere questo mio articolo: Programmare con Arduino – Pin Digitali e Analogici in cui trovi una semplice spiegazione di come funziona e a cosa […]

  5. […] Ti invito a leggere l’introduzione sul’argomento in questo articolo. […]

  6. […] linea 11: indico ad Arduino che utilizzerò la comunicazione seriale a 9600 boud (vedi articolo) […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.