1 of 308

Guida Arduino �e ai circuiti elettronici

© FB - 03.2025 - v1.3 (new)

2 of 308

Arduino

La piccola scheda italiana che anima le cose

2

© FB - 12.2021

3 of 308

Indice

3

© FB - 12.2021c

4 of 308

Indice

4

© FB - 12.2021c

5 of 308

Introduzione

6 of 308

I microcontrollori

I microcontrollori collegano il mondo del software al mondo dell'hardware. Consentono agli sviluppatori di scrivere software che interagisce con il mondo fisico nello stesso modo deterministico e accurato del ciclo della logica digitale. Occupano l'angolo inferiore sinistro dello spazio prezzo/prestazioni, vendendo i loro fratelli più potenti di un fattore dieci a uno. Sono i cavalli di battaglia che alimentano la trasformazione digitale del nostro mondo. [ref]

Arduino è uno scheda Open Source che semplifica la progettazione e la prototipazione elettronica offrendo a studenti, insegnanti, artisti o semplici appassionati (i Makers) una piattaforma hardware e software per l’implementazione rapida delle loro idee in progetti interattivi, multimediali e multidisciplinari e senza dover disporre di molte conoscenze tecniche.

6

© FB - 12.2021

7 of 308

Nascita del progetto

Il progetto nasce nel 2005 da Wiring, una piattaforma per la prototipazione elettronica semplificata, destinata ad artisti, architetti e altri professionisti digiuni di elettronica e di informatica, realizzata da Hernando Barragán per la sua tesi di laurea (di cui Massimo Banzi, creatore di Arduino, era relatore) presso l’Interaction Design Institute di Ivrea.

7

© FB - 12.2021

8 of 308

Il team di sviluppo e il nome Arduino

Massimo Banzi (a destra nell’immagine) ad Ivrea insieme al suo team di sviluppo originale di Arduino David Cuartielles, Tom Igoe, Gianluca Martino e Davide Mellis.

Il nome Arduino nasce da quello di una caffetteria di Ivrea frequentata da alcuni dei fondatori del progetto. Arduino d’Ivrea è stato re d’Italia dal 1002 al 1014.

8

© FB - 12.2021

9 of 308

Banzi promuove Arduino in diversi seminari

© FB - 12.2021

9

10 of 308

I Makers utilizzatori di Arduino

I Maker sono personaggi interessanti: non sono nerd, anzi sono dei tipi piuttosto fighi che si interessano di tecnologia, design, arte, sostenibilità, modelli di business alternativi. Vivono di comunità online, software e hardware open source ma anche del sogno di inventare qualcosa da produrre autonomamente, per vivere delle proprie invenzioni. In un momento di crisi si inventano il loro lavoro invece che cercarne uno classico.

(da un’intervista a Massimo Banzi su Wired)

10

© FB - 12.2021

11 of 308

Open Source

L'Open Source, o software a codice aperto, si riferisce a un modello di sviluppo software in cui il codice sorgente del programma è reso disponibile al pubblico. Questo significa che chiunque può visualizzare, modificare e distribuire il codice del software. L'idea fondamentale dietro l'Open Source è la condivisione e la collaborazione, che favoriscono lo sviluppo di software più trasparente, flessibile e accessibile.

Le licenze Open Source consentono agli sviluppatori di utilizzare, modificare e distribuire il software senza restrizioni e affermano la libertà degli utenti di eseguire, studiare, modificare e distribuire il software a loro volta. Questo modello ha portato alla creazione di una vasta comunità di sviluppatori che contribuiscono alla crescita e all'evoluzione continua di molti progetti software.

Un esempio ben noto di software Open Source è il sistema operativo Linux, insieme a molti altri progetti come Apache, MySQL, Python e molti altri. L'approccio Open Source ha dimostrato di essere efficace non solo nello sviluppo di software, ma anche in molte altre aree, come l'hardware, la scienza e l'istruzione. La filosofia dell'Open Source promuove la condivisione delle conoscenze e la collaborazione, contribuendo così a creare un ambiente più aperto e innovativo.

Il codice sorgente del software Arduino è aperto e accessibile al pubblico. Questo permette agli sviluppatori di esaminare, modificare e migliorare il firmware secondo le proprie esigenze. Arduino ha una vasta e attiva comunità di sviluppatori e appassionati. L'approccio Open Source di Arduino ha contribuito a rendere l'elettronica e la programmazione di microcontroller più accessibili. Il fatto che il software e l'hardware siano aperti ha permesso a molte persone di imparare e contribuire alla comunità Arduino.

11

© FB - 01.2024

12 of 308

Open hardware

L'Open Hardware, o hardware a codice aperto, segue una filosofia simile all'Open Source applicata al software, ma si estende al mondo hardware. Si tratta di condividere il progetto e il design di componenti hardware, consentendo a chiunque di accedere, modificare, distribuire e utilizzare liberamente le specifiche hardware.

Le principali caratteristiche dell'Open Hardware includono la disponibilità del design hardware, la documentazione completa e la possibilità per gli utenti di creare, modificare e condividere le proprie versioni del prodotto. Questo approccio mira a promuovere la collaborazione, la trasparenza e l'innovazione nell'ambito della progettazione hardware.

Ci sono numerosi progetti e iniziative Open Hardware che coprono una vasta gamma di dispositivi, dai microcontrollori alle schede madri, passando per droni e stampanti 3D. Un esempio ben noto è Arduino, una piattaforma di sviluppo di hardware a sorgente aperta, utilizzata per la creazione di progetti e prototipi elettronici.

L'Open Hardware offre una maggiore libertà agli sviluppatori e agli appassionati, permettendo loro di comprendere appieno il funzionamento dei dispositivi, modificarli per adattarli alle proprie esigenze e condividere le loro modifiche con la comunità. Questo approccio contribuisce a favorire l'innovazione e la collaborazione nella progettazione di hardware.

12

© FB - 01.2024

13 of 308

Cosa permette di fare

Con Arduino si possono realizzare rapidamente e in modo abbastanza semplice piccoli dispositivi come controllori di luci, di velocità per motori, sensori di luce, temperatura e umidità e molti altri progetti che utilizzano sensori, attuatori e comunicazione con altri dispositivi.

Ecco alcuni dei principali utilizzi delle schede Arduino: Progetti di Elettronica e Prototipazione; Progetti Domotici; Robotica; Monitoraggio Ambientale; Arte Interattiva e Installazioni; Strumenti Musicali Elettronici; Progetti Educativi; Automazione Industriale a Scala Ridotta; E tanto altro…

13

© FB - 12.2021

14 of 308

Hardware

15 of 308

Arduino Boards

15

© FB - 12.2021

16 of 308

Arduino Boards

16

© FB - 12.2021

16

17 of 308

Arduino Boards

17

© FB - 12.2021

17

18 of 308

Arduino Boards

18

© FB - 12.2021

18

19 of 308

Shield

19

© FB - 12.2021

19

20 of 308

Segnali analogici e digitali

20

© FB - 12.2021

21 of 308

Analogico vs Digitale

© FB - 12.2021

21

22 of 308

Conversione di un segnale Analogico in digitale

Grazie al convertitore Analogico digitale presente all’interno del microcontrollore possiamo acquisire una tensione come numero, per poi elaborarla all’interno del nostro programma.

Il segnale analogico di ingresso deve avere un'ampiezza compresa tra l’alimentazione del convertitore (Con Arduino Uno 0-5V)

22

© FB - 04.2020

23 of 308

Dispositivi analogici

23

© FB - 04.2020

x\

24 of 308

Dispositivi digitali (input o output)

24

© FB - 04.2020

25 of 308

Dispositivi �di Input e di Output

25

© FB - 12.2021

26 of 308

Dispositivi di Output

26

© FB - 04.2020

27 of 308

Dispositivi di Input

27

© FB - 04.2020

28 of 308

Sensori e attuatori

28

© FB - 12.2021

29 of 308

Sensori (lettura del valore di una grandezza fisica)

touch tocco pir luminosità suono

temperatura

29

© FB - 04.2020

x\

30 of 308

Attuatori (convertono un valore digitale in grandezza fisica)

Motori Suono Servomotore Buzzer

30

© FB - 04.2020

31 of 308

L’ambiente di sviluppo

32 of 308

IDE per Arduino

32

© FB - 07.2023

33 of 308

IDE Arduino, le librerie

  • Integrated Development Environment Arduino (download) il software che ci permette di programmare le nostre schede Arduino
  • Arduino mette a disposizione del programmatore diverse librerie immediatamente utilizzabili.
  • E’ anche possibile installare librerie aggiuntive messe a disposizione della grandissima comunità di sviluppatori che gravita attorno ad Arduino

33

© FB - 03.2021

34 of 308

Alternative all’IDE ufficiale - VsCode

Visual Studio Code è un editor di codice sorgente, multipiattaforma, sviluppato da Microsoft a partire dal 2015, si può utilizzare per lo sviluppo con diversi linguaggi di programmazione. E’ possibile utilizzare diversi plugin che sono disponibili sul repository. Anche per programmare con Arduino è disponibile un apposito plugin. [tutorial]

34

© FB - 03.2021

35 of 308

Alternative all’IDE ufficiale - VS Code and PlatformIO IDE

  • Installazione di VS Code
  • Installing PlatformIO IDE Extension on VS Code
  • Platformio Docs

35

© FB - 03.2022

36 of 308

Simulazione Online

36

© FB - 07.2023

37 of 308

Ambienti di sviluppo per la simulazione online

  • Wokwi
  • Tinkercad

37

© FB - 01.2022

38 of 308

Codecraft

38

© FB - 01.2022

39 of 308

Codecraft

Codecraft è un software di programmazione grafica adatto a chi sta imparando a programmare.

Si basa sul linguaggio Scratch 3.0 e consente la programmazione semplicemente "trascinando e rilasciando" i blocchi.

Oltre alla capacità di Scratch di programmare giochi o animazioni interattive, Codecraft supporta anche una varietà di dispositivi hardware comuni, consentendo l'integrazione hardware e software, il che rende la programmazione ancora più divertente.

39

© FB - 01.2022

40 of 308

La programmazione

41 of 308

Gli sketch

41

© FB - 07.2023

42 of 308

Gli sketch e i blocchi Setup e Loop

I programmi per arduino sono chiamati Sketches e sono file con estensione .ino. Sono dei programmi scritti in linguaggio C o C++.

All’interno degli Sketches sono sempre presenti due funzioni particolari chiamate Setup e Loop

  • La routine “void setup()” serve per inizializzare hardware e software, la funzione verrà eseguita solo una volta, dopo ogni accensione o reset della scheda Arduino.
  • La routine “void loop()” esegue all’infinito il codice scritto al suo interno. Il software di un sistema embedded rimane in esecuzione fino a quando non togliamo l’alimentazione o diamo un reset.

42

© FB - 12.2023

43 of 308

Configurazione dell’hardware

43

© FB - 07.2023

44 of 308

Istruzioni pinMode()

  • Pin mode Output, Arduino genera un output digitale. HIGH (5V) oppure LOW (0V)
  • Pin mode Input, Arduino legge un input digitale. Valori prossimi a 5V sono interpretati come 1 logico e valori vicini a 0V sono interpretati come 0 logico

44

© FB - 03.2021

45 of 308

Istruzioni pinMode(), digitalWrite() e digitalRead()

  • pinMode() Configura il pin specificato in modo che si comporti come input o output.

  • digitalWrite() Scrive un valore ALTO o BASSO su un pin digitale. Se il pin è stato configurato come OUTPUT con pinMode (), la sua tensione sarà impostata al valore corrispondente: 5V (o 3.3V su schede 3.3V) per HIGH, 0V (ground) per LOW.

  • digitalRead() Legge il valore da un pin digitale specificato, HIGH o LOW.

45

© FB - 03.2021

46 of 308

Funzioni di supporto ai programmi

46

© FB - 07.2023

47 of 308

L’istruzione delay() e delayMicroseconds()

L’esecuzione delle singole istruzione, dipende dalla velocità del clock del microcontrollore ed è solitamente molto veloce, parliamo di usec

L'istruzione delay(int millisecondi); in Arduino è una funzione che mette in pausa l'esecuzione del programma per un certo periodo di tempo specificato in millisecondi.

L’istruzione delayMicroseconds(int microsecondi); blocca il microcontrollore per il tempo indicato

Queste istruzioni sono spesso utilizzata per controllare il ritmo di esecuzione di uno sketch, consentendo, ad esempio, di creare pause o intervalli specifici tra le istruzioni. Tuttavia, è importante notare che l'utilizzo eccessivo di delay() può rendere il programma non responsivo, specialmente in progetti più complessi che richiedono un controllo più preciso del tempo.

Per mitigare questo problema, in molti casi è preferibile utilizzare il concetto di programmazione a stati o la gestione del tempo basata su interruzioni (millis()), che consente al programma di eseguire altre operazioni durante i periodi di attesa, rendendo così il sistema più reattivo.

47

© FB - 12.2023

48 of 308

Esempio: lampeggio led

Per far lampeggiare un led possiamo usare le istruzioni digitalWrite(LED_PIN, HIGH) e digitalWrite(LED_PIN, LOW) alternate ad un ritardo

void setup() {

// initialize digital pin2 as an output.

pinMode(2, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(2, HIGH); //turn the LED on (HIGH is the voltage level)

delay(500); //wait for 0.5 second

digitalWrite(2, LOW); //turn the LED off by making the voltage LOW

delay(500); //wait for 0.5 second

}

48

© FB - 02.2022

49 of 308

L’istruzione micros()

L'istruzione micros(), restituisce il numero di microsecondi da quando la scheda Arduino ha iniziato a eseguire il programma corrente.

il valore restituito e di tipo unsigned long (32 bit)

Possiamo utilizzare questa istruzione per misurare un intervallo di tempo

ES.

time_start = micros(); //Es. 1.235.000

Serial.println(time_start); //prints time since program started

delay(1000);

time_end = micros(); //Es. 2.235.000

Serial.println(time_end ); //prints time since program started

Serial.println(time_end - time_start); //Intervallo in microsecondi

49

© FB - 05.2021

50 of 308

L’istruzione millis()

millis è una funzione built-in di Arduino che restituisce il numero di millisecondi trascorsi dalla pressione del tasto di reset o dall'avvio del programma. La funzione millis utilizza un contatore interno che aumenta di continuo, e quindi fornisce un modo semplice per misurare il tempo trascorso durante l'esecuzione di un programma. L'unità di misura è il millisecondo, ovvero un millisecondo è un'unità di tempo equivalente a 1/1000 di secondo. millis è spesso utilizzato in applicazioni che richiedono un controllo del tempo, come per esempio la creazione di timer, la gestione dei delay, e molto altro ancora. Il valore restituito e di tipo unsigned long (32 bit)

Possiamo utilizzare questa istruzione ad esempio per scrivere una funzione che se richiamata all'interno di un loop fa lampeggiare un led senza bloccare l’esecuzione del microcontrollore:

void ledTask() {

static unsigned long previousMillis = 0;

unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= 1000) {

previousMillis = currentMillis;

digitalWrite(ledPin, !digitalRead(ledPin));

}

}

50

© FB - 01.2023

51 of 308

Il convertitore ADC di Arduino

  • Istruzione analogRead(PIN) converte la tensione (0-Vdd Volt) presente nel PIN in un numero a 10 bit, quindi compreso tra 0 e 1023. Non è necessario al setup configurare il pin, come invece richiesto per i pin digitali (pinMode).

int adcVc; //conterrà valori tra 0-1023

adcVc = analogRead(A0); //Facciamo una misura sul pin A0

se:

adcVc = 1023 -> su A0 abbiamo 5V

adcVc = 0 -> su A0 abbiamo 0V

adcVc = 512 -> su A0 abbiamo 2,5V

adcVc = 256 -> su A0 abbiamo 1,25V = 256*4,88

adcVc = 1-> su A0 abbiamo 5/1024 = 4,88mV

51

© FB - 04.2020

52 of 308

Trasformare i valori misurati

  • Per trasformare i valori misurati con l’adc (0 - 1023) in volt (0 - 5V) dobbiamo applicare la seguente proporzione:

float Vc; int adcVal;�//Vc : adcVal = 5 : 1023�Vc = (adcVal * 5) / 1023.0; //Attenzione! dividere con float

  • La funzione map() di Arduino se vogliamo lavorare in ms

int adcVal = analogRead(0);�float Vc = map(Vc , 0, 1023, 0, 5000);�Serial.write(Vc);

52

© FB - 04.2020

53 of 308

true e false

Ci sono due costanti usate per rappresentare vero e falso nel linguaggio Arduino: true e false.

  • false è la più facile delle due da definire. false è definito come 0 (zero).
  • true true viene spesso definito come 1, che è corretto, ma true ha una definizione più ampia. Qualsiasi numero intero diverso da zero è vero, in senso booleano. Quindi -1, 2 e -200 sono tutti definiti come veri anche in senso booleano.

Notare che le costanti true e false sono scritte in minuscolo a differenza di altre costanti come ad esempio: HIGH, LOW, INPUT e OUTPUT.

53

© FB - 04.2020

54 of 308

Istruzioni bitRead()

  • bitRead() Legge il bit alla posizione specificata di un numero.

54

© FB - 03.2021

55 of 308

Come implementare la nostra bitRead()

55

© FB - 03.2021

56 of 308

Operatori “Bitwise” per lavorare sui singoli bit

56

© FB - 03.2021

57 of 308

Operatori “Bitwise” per lavorare sui singoli bit

57

© FB - 03.2021

58 of 308

Operatori Booleani per lavorare su funzioni logiche

Gli operatori Booleani restituiscono vero (1) o falso (0) in base all’operazione booleana corrispondente (not, and, or)

58

© FB - 03.2021

59 of 308

Come calcolare un funzione logica

Possiamo calcolare la funzione usando sia gli operatori Booleani che Bitwise

bool Y,A,B;�Y = !A&&B || A&&!B;

oppure se consideriamo l'ultimo bit degli interi A e B (stesso discorso vale anche per gli altri tipo di numeri (char, byte, ecc.)

int Y,A,B;�Y = (A^B)&1;

L’And finale con 1 permette di considerare solo il bit meno significativo ed azzerare tutti gli altri.

59

© FB - 03.2021

60 of 308

Generazione di segnali PWM

La funzione analogWrite(pin, value) genera un onda PWM sul “pin” specificato. Può essere utilizzato per accendere un LED a luminosità variabili o azionare un motore a varie velocità. Dopo una chiamata ad analogWrite(), il pin genererà un'onda rettangolare costante con il duty-cicle specificato fino alla successiva chiamata ad analogWrite() sullo stesso pin.

60

© FB - 11.2021

61 of 308

Il monitor seriale

61

© FB - 02.2024

62 of 308

Il monitor seriale dell’IDE Arduino

  • Permette di inviare al pc dei dati tramite il cavo USB (seriale)
  • Istruzione da inserire nel Setup
    • //Inizializzazione della comunicazione seriale a 9600 bits per sec
    • Serial.begin(9600);
    • Serial.println(“Avvio monitor seriale”);
  • Istruzioni da usare successivamente
    • Serial.print(10); //invia il numero 10 alla seriale
    • Serial.println(" [V]"); //invia la stringa di testo [V] e va a capo

Con Arduino non è possibile stampare contemporaneamente numeri e testo contemporaneamente (come sono abituati a fare i programmatori C con la funzione printf)

62

© FB - 05.2021

63 of 308

Preparazione della stringa da stampare utilizzando sprintf

Possiamo preparare una stringa da stampare sul monitor seriale utilizzando l'istruzione sprintf(). L’istruzione sprintf() ti consente di formattare una stringa come desideri, includendo valori di variabili e costanti all'interno della stringa formattata. Ecco un esempio:

void setup() {

Serial.begin(9600); // Inizializzare la comunicazione seriale a 9600 bps

}

void loop() {

int temperature = 25;

float humidity = 60.5;

char buffer[50]; // Dichiarare un array di caratteri per contenere la stringa formattata

// Formattare la stringa utilizzando sprintf()

sprintf(buffer, "Temperatura: %d°C, Umidità: %.1f%%", temperature, humidity);

// Stampare la stringa sul monitor seriale

Serial.println(buffer);

delay(1000); // Attendere un secondo prima di eseguire nuovamente il loop

}

63

© FB - 02.2024

64 of 308

Visualizzazione dati su plotter (monitor) seriale

i numeri visualizzati dal monitor seriale possono essere rappresentati graficamente dal plotter seriale

64

© FB - 05.2021

65 of 308

Librerie

65

© FB - 11.2021

66 of 308

Come installare librerie aggiuntive

Le librerie sono una raccolta di codice che semplificano l’utilizzo di un sensore, display, modulo, ecc.

Questa è la guida per installare librerie aggiuntive sull’IDE Arduino

Installing Libraries | Arduino Documentation

66

© FB - 04.2022

67 of 308

Libreria Servo.h

Questa libreria consente alla scheda Arduino di controllare i servomotori. I servomotori standard consentono di posizionare l'albero su vari angoli, solitamente tra 0 e 180 gradi. I servomotori a rotazione continua consentono di impostare la rotazione dell'albero a varie velocità. La libreria Servo supporta fino a 12 motori sulla maggior parte delle schede Arduino. [codice sorgente]

myservo.attach(pin) Collega la variabile servo ad un pin

#include <Servo.h>

Servo myservo;

void setup()

{

myservo.attach(9);

}

void loop() {}

67

© FB - 11.2020

68 of 308

Libreria Servo.h

myservo.write(angle) Scrive un valore sul servomotore, controllando di conseguenza la posizione dell'albero. Su un servomotore standard, imposterà l'angolo dell'albero (in gradi). Su un servomotore a rotazione continua, questo imposterà la velocità del servo (dove 0 è la massima velocità in una direzione, 180 è la massima velocità nell'altra e un valore vicino a 90 è nessun movimento).

#include <Servo.h>

Servo myservo;

void setup()

{

myservo.attach(9);� myservo.write(90); // set servo to mid-point

}

void loop() {}

68

© FB - 11.2020

69 of 308

Task paralleli

70 of 308

Task non bloccanti

In un contesto di programmazione per microcontrollori come Arduino, spesso è preferibile utilizzare approcci non bloccanti per garantire che il sistema possa continuare a rispondere ad eventi in modo tempestivo. Un modo comune per implementare ciò è utilizzare il concetto di task (compiti o attività) non bloccanti. Ciò significa che il codice può eseguire diverse attività in modo simultaneo, senza aspettare il completamento di ciascuna attività prima di passare alla successiva.

La creazione di task non bloccanti è un aspetto critico nella progettazione di sistemi basati su Arduino o altri microcontrollori, specialmente quando si affrontano compiti che richiedono la gestione simultanea di più attività o quando si desidera mantenere la responsività del sistema.

Responsività del Sistema: L'utilizzo di delay blocca l'esecuzione del programma per il periodo specificato, impedendo al microcontrollore di eseguire altre operazioni durante quel tempo. Questo può portare a un sistema non reattivo, specialmente in presenza di più attività contemporanee.

Gestione di Più Attività: I progetti più complessi spesso richiedono la gestione simultanea di diverse attività. Creare task non bloccanti consente al microcontrollore di eseguire operazioni in parallelo, migliorando l'efficienza del sistema.

Simulazione di Multithreading: Sebbene i microcontrollori a basso livello non supportino nativamente il multithreading, l'implementazione di task non bloccanti può creare l'illusione di esecuzione simultanea di più attività.

70

© FB - 01.2024

71 of 308

Variabili Statiche e Lampeggio led con Arduino

In Arduino, la funzione millis() restituisce il numero di millisecondi trascorsi dal momento in cui Arduino è stato acceso. Questo può essere utilizzato per implementare un lampeggio di uno o più LED senza bloccare l'esecuzione del programma. Ecco un esempio di una funzione Arduino che fa lampeggiare un LED utilizzando millis() e variabili statiche:

71

© FB - 12.2021

72 of 308

72

© FB - 03.2023

73 of 308

Multitasking

73

© FB - 02.2025

74 of 308

Multitasking

74

© FB - 03.2025

75 of 308

Circuiti elettronici digitali

76 of 308

La breadboard per la prototipazione di circuiti

77 of 308

La breadboard per la prototipazione di circuiti

77

© FB - 02.2024

78 of 308

La Breadboard

E’ utilizzata per realizzare prototipi di circuiti elettronici. Non necessita la saldatura dei componenti elettronici come avviene per la basetta mille fori o i circuiti stampati quindi è riutilizzabile.

© FB - 09.2020

79 of 308

La Breadboard

Le breadboard sono dispositivi di prototipazione che consentono di testare progetti di circuiti elettronici. I componenti del circuito sono interconnessi inserendo cavi nei fori della breadboard e utilizzando cavi jumper per completare il circuito quando necessario.

© FB - 03.2021

80 of 308

La Breadboard

I fori nella breadboard sono allineati con clip metalliche perché il metallo conduce l'elettricità e consente alla corrente di fluire. I fori nel breadboard sono collegati da clip metalliche nel modello mostrato dalle linee verdi nell'immagine qui a fianco:

© FB - 03.2021

81 of 308

La Breadboard

© FB - 04.2020

82 of 308

La Breadboard

© FB - 04.2020

83 of 308

Montaggio circuito su Breadboard

© FB - 04.2020

84 of 308

Montaggio disordinato da non imitare

  • per sostituire un integrato siamo costretti a smontare gran parte del circuito
  • non è rispettato il colore dei fili collegati all’alimentazione
  • ottimo invece la parte di rame inserita nella breadboard

85 of 308

Montaggi a confronto

86 of 308

Schema elettrico e montaggio a confronto

87 of 308

Montaggio

Una corretta alimentazione è fondamentale per il funzionamento del circuito, ma soprattutto evita il danneggiamento dei componenti. Per poter controllare facilmente una corretta alimentazione usiamo questa convenzione dei colori:

  • colori per l’alimentazione: nero gnd (0V), rosso 5V, segnali di altro colore

  • parte non isolata circa 7mm
  • compromesso tra ordine e velocità di montaggio

88 of 308

Consigli di utilizzo

  • Non usare fili di rame di diametro eccessivo, per non deformare il connettore interno (clip metallica)
  • Non usare fili troppo lunghi per i collegamenti in modo da ottenere un montaggio ordinato
  • Cercare di mantenere un layout di montaggio simile a quello dello schema elettrico in modo da semplificarne il collaudo
  • Evitare il passaggio dei fili sopra i circuiti stampati in modo da semplificarne la eventuale sostituzione

89 of 308

Pinza a becco piatto, pinza tronchesina, forbice elettricista

© FB - 10.2019

90 of 308

Esercitazioni

90

© FB - 02.2024

91 of 308

Esercitazioni

91

© FB - 02.2024

92 of 308

I diodi Led

93 of 308

I Diodi

93

© FB - 09.2021

94 of 308

Il diodo

Il diodo è un componente elettronico a due terminali la cui funzione ideale è quella di permettere il flusso di corrente elettrica in un verso (dall’anodo al catodo) e di bloccarla quasi totalmente nell'altro.

94

© FB - 10.2021

95 of 308

Gli inventori del diodo

Il primo diodo funzionante è stato realizzato nel 1905 dall’inventore britannico Sir John Ambrose Fleming sulla base degli studi nel 1873 del fisico britannico Frederick Guthrie e gli esperimenti di Thomas Alva Edison nel 1880.

Fleming pensò di costruire un rivelatore delle oscillazioni radioelettriche composto da due elettrodi racchiusi in un bulbo di vetro a vuoto: l'uno (il catodo) è elettricamente riscaldato ed emette elettroni; l'altro (l'anodo) riceve gli elettroni.

In tal modo la corrente elettrica scorre in una sola direzione. Da qui il nome di valvola termoionica perché basata sull'effetto termoelettrico; o semplicemente di "diodo" perché composta di due elettrodi.

95

© FB - 09.2021

96 of 308

Diodo led

96

© FB - 09.2021

97 of 308

Il diodo led

97

© FB - 10.2021

98 of 308

Il diodo led

Il diodo a emissione di luce (LED Light Emitting Diode), in elettronica, indica un dispositivo optoelettronico che sfrutta la capacità di alcuni materiali semiconduttori di emettere radiazioni elettromagnetiche nello spettro del visibile (rosso, verde, blu, giallo, bianco) e dell’invisibile (infrarosso).

I led infrarossi sono utilizzati per l’invio di dati (telecomandi).

Il primo LED fu sviluppato nel 1962. Negli anni novanta, vennero realizzati LED con efficienza sempre più elevata e in una gamma di colori sempre maggiore, realizzando anche luce bianca. Parallelamente, è aumentata la quantità di luce emessa a livelli competitivi con quelli delle comuni lampadine. Nell'illuminotecnica, il LED si configura come una tecnologia ad alta efficienza che garantisce un ottimo risparmio energetico. [wikipedia]

98

© FB - 10.2021

99 of 308

Il diodo led

I primi diodi ad emissione luminosa erano disponibili solo nel colore rosso. Venivano utilizzati come indicatori nei circuiti elettronici, nei display a sette segmenti e negli optoisolatori. Successivamente, ne vennero sviluppati alcuni che emettevano luce gialla e verde e vennero realizzati dispositivi che integravano due LED.

I vari tipi di diodi led conducono corrente (e quindi emettono luce) solo quando la tensione di polarizzazione diretta applicata tra l’anodo e il catodo supera un certo valore, che dipende dalla lunghezza d’onda emessa (colore).

99

© FB - 10.2021

100 of 308

Datasheet

Corrente massima ammissibile: tipicamente accettano correnti tra 1 e 20mA. Prima di ogni utilizzo bisogna verificare con il data sheet la corrente massima utilizzabile.

Tensione di breakdown: Tensione massima inversa applicabile ai capi del diodo senza danneggiarlo.

Lunghezza d’onda: E’ la lunghezza d’onda della radiazione elettromagnetica emessa, che nello spettro del visibile corrisponde a colori differenti

Datasheet: Nei datasheet (es. led smd)troviamo l’elenco completo delle caratteristiche elettriche del diodo. Come ad esempio: intensità luminosa, potenza dissipata, ecc.

100

© FB - 12.2021

101 of 308

Tipologie di led

  • led smd
  • led a foro passante
  • led bicolore
  • rgb led
  • led ad alta potenza

101

© FB - 01.2022

102 of 308

Polarizzazione del diodo led

Per dimensionare un circuito con diodo bisogna recuperare dal datasheet la corrente di lavoro IF, la tensione di polarizzazione diretta VF (V).

Ipotizziamo di avere un diodo rosso a foro passante da 5mm con:�

102

© FB - 01.2022

103 of 308

Diodi led con package SMD

103

© FB - 10.2021

104 of 308

Esercitazioni

104

© FB - 02.2024

105 of 308

Esercitazioni

105

© FB - 02.2024

106 of 308

Display a 7 segmenti

107 of 308

Display a 7 segmenti

107

© FB - 02.2024

108 of 308

Display a 7 segmenti

Utilizzo dei display a 7 segmenti. Esempi pratici

108

© FB - 10.2021

109 of 308

Il display a 7 segmenti

I display a 7 segmenti sono realizzati con 8 diodi LED, solitamente di colore rosso e vengono utilizzati nei sistemi elettronici per la visualizzazione di numeri e/o lettere.

In passato erano molto utilizzati nella strumentazione�e per la visualizzazione in vari dispositivi elettronici.

Adesso si preferisce utilizzare i display LCD�perchè con costi simili permettono di visualizzare�una quantità maggiore di informazioni.

109

© FB - 01.2022

110 of 308

Display a catodo comune o ad anodo comune.

110

© FB - 04.2021

111 of 308

Display a catodo comune o ad anodo comune.

111

© FB - 04.2021

112 of 308

Il display 7 segmenti a catodo comune

112

© FB - 04.2021

113 of 308

Il display 7 segmenti a anodo comune

113

© FB - 04.2021

114 of 308

Codifica da BCD a 7 Seg con 7448

114

© FB - 04.2021

Pilotaggio e Codifica da BCD a 7 Seg

115 of 308

Il display 7 segmenti

Tabella per la generazione di numeri e lettere

115

© FB - 04.2021

116 of 308

Montaggio su breadboard

116

© FB - 04.2021

117 of 308

Il display 7 segmenti

117

© FB - 04.2021

118 of 308

Polarizzazione del display

118

© FB - 01.2022

119 of 308

Display 7 segmenti e Arduino

119

© FB - 02.2021

120 of 308

Esercitazioni

120

© FB - 02.2024

121 of 308

Esercitazioni

121

© FB - 02.2024

122 of 308

Display LCD e OLED

123 of 308

Display LCD e OLED

123

© FB - 12.2021

124 of 308

Pulsanti

125 of 308

Pulsanti e microcontrollori

Utilizzo di pulsanti, interruttori e deviatori con i microcontrollori

125

© FB - 12.2020

126 of 308

Pulsanti, interruttori, deviatori e invertitori

negli impianti elettrici

126

© FB - 11.2021

127 of 308

Interruttori, deviatori e invertitori negli impianti civili

127

Per i collegamenti al neutro si usano cavi blu. Bisogna sempre interrompere la fase e non il neutro, diversamente da quanto riportato nelle precedenti immagini.

© FB - 11.2021

128 of 308

Pulsanti, interruttori, deviatori e invertitori

128

© FB - 11.2021

129 of 308

Interruttori bipolari

Un interruttore bipolare è un dispositivo che interrompe l’alimentazione di entrambi i poli (fase e neutro) del nostro circuito elettrico. Viene utilizzato per l’accensione e lo spegnimento dei dispositivi con consumi medio-elevati.

129

© FB - 11.2021

130 of 308

Relè passo passo negli impianti civili

Il relè passo passo viene comandato tramite pulsanti elettrici. E’ utilizzato quando è necessario avere molti punti di comando. Permette quindi di semplificare i collegamenti altrimenti necessari.

130

© FB - 11.2021

131 of 308

Pulsanti, interruttori, deviatori e invertitori

nei circuiti elettronici

131

© FB - 11.2021

132 of 308

Pulsanti, interruttori, deviatori nei circuiti elettronici

132

© FB - 11.2021

133 of 308

Pulsanti, interruttori e contatti

Pulsanti, interruttori e contatti sono dispositivi elettromeccanici di comando destinati, se azionati, a cambiare lo stato di un circuito.

  • il pulsante è un elemento monostabile, quando rilasciato ritorna in posizione di riposo;
  • l’interruttore è un elemento bistabile, con due posizioni stabili ON e OFF
  • il contatto è un elemento pilotato elettricamente, nei relè e nei contattori.

Pulsanti, interruttori e contatti possono essere NA o NC

  • NA = normalmente aperto – nella posizione di riposo non è permesso il transito della corrente
  • NC = normalmente chiuso – nella posizione di riposo è permesso il transito della corrente.

133

© FB - 11.2021

134 of 308

Pulsante NA e NC

Un esempio di pulsante NA è il campanello, che quando è rilasciato torna in posizione di riposo. Un esempio di pulsante NC è il pulsante del frigorifero, che spegne la luce se premuto. Per ogni tipologia di interruttore, pulsante o contatto, il passaggio di corrente avviene ogni volta che due lamelle metalliche si toccano tra loro a seguito di un’azione meccanica da parte di un utilizzatore esterno.

134

© FB - 11.2021

135 of 308

Parametri caratteristici

Gli interruttori e i pulsanti, come ogni altro componente elettronico, sono caratterizzati da alcuni parametri, di seguito indicati, che aiutano il progettista a effettuare la scelta più corretta in relazione alle proprie esigenze.

  • Tensione massima: è la tensione massima che può essere applicata all’interruttore per non subire danneggiamenti. Oltre al valore numerico viene indicata la tipologia di tensione (AC-DC).
  • Corrente massima: è la corrente massima che può attraversare l’interruttore.
  • Resistenza di isolamento: è la resistenza offerta tra i due contatti. Solitamente è dell’ordine dei megaohm.
  • Resistenza di contatto: è la resistenza offerta a contatto elettrico chiuso che offrono i contatti metallici dell’interruttore.
  • Temperatura di esercizio: indica il range tipico di funzionamento dell’interruttore.
  • Vita media: espressa in cicli di ON/OFF

135

© FB - 11.2021

136 of 308

Pulsanti

136

© FB - 11.2021

137 of 308

Deviatore - Toggle switch - Slide switch

137

© FB - 11.2021

138 of 308

Deviatore

138

© FB - 11.2021

139 of 308

Interruttori dip-switch

139

© FB - 11.2021

140 of 308

Rotary coding switch

140

© FB - 11.2021

141 of 308

Collegare un pulsante al microcontrollore

Simboli usati negli schemi elettrici

141

© FB - 11.2021

142 of 308

Pull-up/Pull-down

142

© FB - 10.2021

143 of 308

Resistenze di pull-up e di pull-down

La pratica sconsiglia vivamente di lasciare liberi (floating -flottanti) ingressi di componenti MOS/CMOS perchè, nelle condizioni peggiori, sono in grado di funzionare da sensibili antenne per disturbi di ogni genere, anche di frequenze radio, e creare situazioni di malfunzionamento assai difficili da debuggare. Considerazioni per il dimensionamento:

  • Vogliamo che la caduta di tensione sulla resistenza sia piccola
  • Vogliamo che la corrente assorbita quando l'interruttore è chiuso sia piccola
  • Per il calcolo preciso dobbiamo conoscere la resistenza su pin di ingresso del microcontrollore. Se questa è circa 1Mohm, allora R di pull-up può andare bene da 5-100Kohm

[Approfondimenti: Resistenza di pull-up / pull-down; Come calcolare le resistenze di pull-up e pull-down - Video 238]

143

© FB - 02.2021

144 of 308

Collegamento tipico pull-up

144

© FB - 12.2020

145 of 308

Collegamento tipico con pulsante pull-down

145

© FB - 12.2020

146 of 308

Collegamento tipico con pulsante pull-down

146

© FB - 12.2020

147 of 308

Utilizzo delle resistenze interne di pull-up e pull-down

Molti microcontrollori incorporano al loro interno resistenze di pull-up e pull-down attivabili via software. �Con questo tipo di collegamento e configurazione del microcontrollore, quando il pulsante non è premuto, sul pin dove è collegato, sarà presente il livello logico alto (5V), mentre con la pressione, ci sarà un collegamento diretto a massa e quindi il livello logico basso (0V).

147

© FB - 01.2023

148 of 308

Utilizzo delle resistenze interne di pull-up e pull-down

#define LED_PIN 13

#define SW_PIN 2

void setup() { // Inizializzazione

pinMode(LED_PIN, OUTPUT);

pinMode(SW_PIN, INPUT_PULLUP);

}

void loop() { // Loop infinito

if(digitalRead(SW_PIN)==HIGH)

//Pulsante non premuto

digitalWrite(LED_PIN, HIGH);

else

//Pulsante premuto

digitalWrite(LED_PIN, LOW);

}

Approfondimenti:

148

© FB - 11.2021

149 of 308

Pin di I/O per il microcontrollore STM32L476

Il microcontrollore STM32L476 permette di attivare via software le resistenze di pull-up e pull-down

Dispone anche di due diodi di protezione e di un trigger di Schmitt

149

© FB - 12.2019

150 of 308

Rimbalzi e Debounce

150

© FB - 10.2021

151 of 308

Rimbalzi e Debounce

Alla pressione o al rilascio del pulsante o dell’interruttore si osservano dei rimbalzi del segnale che possono durare diversi ms (2-30ms)

151

© FB - 11.2020

152 of 308

Eliminazione hardware dei rimbalzi

  • Filtro RC e trigger di schmitt

152

© FB - 11.2020

153 of 308

Trigger di Schmitt

153

© FB - 10.2021

154 of 308

154

© FB - 09.2019

155 of 308

155

© FB - 09.2019

156 of 308

156

© FB - 09.2019

157 of 308

Codice di esempio

157

© FB - 12.2021

158 of 308

Routine di esempio

visto che la pressione del pulsante dura alcuni millisecondi possiamo controllare per 5-50msec che il pulsante rimanga premuto, per scartare pressioni non valide.

per rilevare un click dobbiamo aspettare che il pulsante venga rilasciato

un pulsante può anche generare gli eventi:

  • Click
  • LongPress (pressione > 1-2 sec)
  • LongLongPress (pressione > 5-10 sec)
  • LongClick
  • DoubleClick
  • TripleClick

Se volessimo utilizzare la pressione del pulsante per impostare un orologio realizzato con microcontrollore bisognerebbe utilizzare l’evento LongPress e non Press. Provate a tenere premuto un tasto sul pc e pensate a cosa succederebbe se non ci fosse un ritardo tra due letture successive.

158

© FB - 02.2025

159 of 308

Esercitazioni

159

© FB - 12.2021

160 of 308

Esercitazione

160

© FB - 12.2021

161 of 308

Esercizio c

Generare due segnali impulsivi adatti a comandare il servomotore nelle posizione 90° e 180°, simulando una sbarra nelle posizioni aperta e chiusa. Utilizziamo il pulsante per spostare la sbarra da aperta a chiusa e viceversa. Impostare l’oscilloscopio in modo che si veda bene il segnale impulsivo generato.

Raccogliere in un unico documento lo schema di montaggio, il codice e le simulazioni.

161

© FB - 11.2020

162 of 308

Esercizio d

Generare un segnale impulsivo adatto a pilotare il servomotore. Collegare il circuito come nello schema seguente. Scrivere un programma che a seguito della pressione o il click dei pulsanti SW_DW e SW_UP faccia ruotare in giù o in sù il servomotore. Impostare l’oscilloscopio in modo che si veda bene il segnale impulsivo generato.

Raccogliere in un unico documento lo schema di montaggio, il codice e le simulazioni.

162

© FB - 11.2020

163 of 308

Relè

164 of 308

Relè

164

© FB - 02.2024

165 of 308

Come funziona un relè

Il relè è un componente elettromeccanico il cui azionamento avviene mediante un elettromagnete costituito da una bobina di filo conduttore elettrico, generalmente di rame, avvolto intorno ad un nucleo di materiale ferromagnetico. Al passaggio di corrente elettrica nella bobina, l'elettromagnete attrae l'ancora alla quale è vincolato il contatto mobile che quindi cambierà posizione. Nella figura a fianco è rappresentato un relè con tre contatti: uno mobile e due fissi. Quando il relè è a riposo il contatto mobile è in contatto con uno dei due contatti fissi. Quando il relè è "eccitato", cioè quando la bobina è percorsa da corrente elettrica, la situazione si inverte e il contatto mobile si sposta sull'altro contatto. [wikipedia]

165

© FB - 09.2021

166 of 308

Come funziona un relè

Internante il relè dispone di un elettromagnete, ovvero un cilindro di ferro intorno al quale è avvolto un filo di rame.

Al passaggio della corrente nel filo di rame detto bobina, il cilindro di ferro si magnetizza e attira una lamina che meccanicamente sposta un contatto mobile dalla posizione di riposo (N.C.) alla posizione di eccitamento (N.A). Aprendo e chiudendo così un circuito elettrico esterno.

In questo modo è possibile attivare carichi molto grandi e mantenere un completo isolamento elettrico tra il circuito di pilotaggio ed il circuito controllato.

166

© FB - 09.2021

167 of 308

Come funziona un relè

Relè per impianti civili o comandato da circuiti elettronici

167

© FB - 09.2021

168 of 308

Come funziona un relè

circuiti elettronici che comandano relè

168

© FB - 09.2021

169 of 308

Utilizzi

169

© FB - 09.2021

170 of 308

L’inventore del Relè

Il relé venne inventato nel 1835 dallo scienziato americano Joseph Henry.

Il nome relè deriva dal francese relais che indicava ognuna delle stazioni di posta dove i messi postali, durante il loro itinerario, potevano cambiare i cavalli in modo da svolgere più celermente il loro servizio.

Per analogia, ai primordi della telegrafia si usò il termine relè nell'indicare i dispositivi grazie ai quali si trasferiva un messaggio in codice Morse da una stazione di partenza a una stazione di arrivo, come se un virtuale messo postale si servisse di tali dispositivi per arrivare finalmente alla meta.

170

171 of 308

RELE’

  • Contatto normalmente chiuso[fig. A2.7] A: la bobina è diseccitata, il contatto è NC e il segnale elettrico può passare; B: la bobina è eccitata e attrae il meccanismo di movimento che agendo sul contatto lo apre. Il segnale elettrico non passa.
  • Contatto normalmente aperto[fig. A2.8] A: la bobina è diseccitata, il contatto è NO e il segnale elettrico non passa; B: la bobina è eccitata e attrae il meccanismo di movimento che agendo sul contatto lo chiude. Il segnale elettrico può passare.3.
  • Due contatti[fig. A2.9] In questo caso il relè ha due contatti con funzioni diverse: uno NO e uno NC. A: la bobina è diseccitata, il segnale elettrico può passare solo dal contatto NC. B: la bobina è eccitata e attrae il meccanismo di movimento che inverte lo stato dei contatti. Il contatto NO si chiude, il segnale elettrico ora può passare; il contatto NC si apre, il segnale elettrico si interrompe

172 of 308

RELE’

Il relè viene impiegato per isolare il circuito di comando da quello di potenza, come nella figura A2.10. Nella sezione di comando il pulsante chiude il circuito della bobina, che viene alimentata dalla batteria in BT.

Nella sezione di potenza il campo magnetico generato dalla bobina chiude il contatto della MT, quindi la lampadina viene alimentata dalla tensione di 230 V. Rispetto ai tradizionali apparecchi di manovra (interruttore, deviatore, invertitore) il relè assicura una maggiore sicurezza elettrica dovuta ai seguenti fattori: il circuito di comando è elettricamente separato dal circuito comandato; il circuito di comando può essere a bassa tensione

173 of 308

Relè con autoritenuta

Per mezzo del pulsante normalmente aperto (N.O.) "START" viene chiuso il circuito che alimenta (eccitandolo) il relè o contattore K1, nello stesso momento il contatto ausiliario normalmente aperto di K1 si chiude e trovandosi in parallelo al pulsante di marcia è come se cortocircuitasse quest' ultimo. In questo momento, successivamente al rilascio del pulsante "START" la bobina viene mantenuta eccitata proprio dal contatto K1.

Per eseguire l'arresto e quindi diseccitare il relè, si agisce sul pulsante "STOP" normalmente chiuso (N.C.) che essendo posto in serie a "START" e a "K1" interrompe l'alimentazione anche dopo la sua pressione (poiché il relè diseccitandosi riapre il contatto K1). A questo punto tutto è nuovamente allo stato di partenza.

173

© FB - 01.2022

174 of 308

Contattori o teleruttore

Un contattore o teleruttore è un dispositivo elettromeccanico di manovra, generalmente previsto per un numero elevato di operazioni, è anche detto dispositivo di tipo monostabile poiché ha una sola posizione di riposo, ad azionamento non manuale, capace di stabilire, sopportare ed interrompere correnti in condizioni di sovraccarico.

La posizione di riposo corrisponde ordinariamente alla posizione di apertura dei contatti principali. Si distingue dal relè per il fatto che quest'ultimo è impiegato per il comando di potenze relativamente piccole o segnali in ambito elettronico, mentre il teleruttore è impiegato nel comando di potenze anche molto elevate.

174

© FB - 01.2022

175 of 308

Relè Omron G5LE-1

Il relè Omron G5LE-1 è eccitabile con una tensione di 5 volt e in grado di commutare tensioni fino a 250 volt AC e carichi resistivi da 10 Ampere o induttivi da 5 Ampere.

La corrente assorbita dalla bobina è di circa 80mA

175

© FB - 01.2022

176 of 308

Quanto costa un RELE’ ?

177 of 308

SCHEMA DELL’INTERFACCIA

Un diodo sulla bobina del relé, chiamato diodo di ricircolo, proteggere il Mosfet dalle sovratensioni generate dalla bobina del relè al momento dell’interruzione di corrente.

GPIO

CARICO

RELE’

MOSFET

178 of 308

RELE’

179 of 308

Esercitazioni

179

© FB - 02.2024

180 of 308

Esercitazioni

180

© FB - 02.2024

181 of 308

Buzzer

182 of 308

Buzzer

Un buzzer o beeper è un dispositivo di segnalazione audio, che può essere meccanico, elettromeccanico, o piezoelettrico. I tipici utilizzi del buzzer includono dispositivi di allarme, timer, e PC speaker per i feedback sugli input dell'utente, come pressione dei tasti o click del mouse, nei vecchi personal computer. [Wikipedia]

182

© FB - 11.2021

183 of 308

Buzzer attivi e passivi

Un buzzer attivo usa un oscillatore interno che permette di emettere un tono a frequenza fissa se viene alimentato con una tensione continua. L’oscillatore interno è in grado di modificare il campo magnetico di una bobina a cui è connesso meccanicamente una membrana che oscillerà alla frequenza fissata dall’oscillatore.

Un buzzer passivo non possiede un oscillatore interno e quindi è indispensabile un circuito esterno in grado di generare un’onda quadra che mettere in oscillazione la membrana interna del buzzer, questi attuatori potranno così emettere toni a diversa frequenza. . [Maffucci.it]

183

© FB - 11.2021

184 of 308

Utilizzo del buzzer con Arduino

184

© FB - 11.2021

185 of 308

Buzzer

Per il collegamento diretto del buzzer ad Arduino, verificare che la corrente assorbita sia inferiore a 20mA. E’ altamente raccomandato comandare il buzzer tramite un transistor.

185

© FB - 11.2021

186 of 308

Codice

è possibile generare dei toni a frequenze diverse utilizzando un delay oppure le funzioni tone e noTone di Arduino. Per emettere dei semplici beep è sufficiente impostare al livello logico alto il pin del buzzer.

#define BUZZER_PIN 6

void setup(){

pinMode(BUZZER_PIN, OUTPUT);

}

void loop(){

digitalWrite(BUZZER_PIN, HIGH);

delay(300);

digitalWrite(BUZZER_PIN, LOW);

delay(1000);

}

186

© FB - 12.2021

187 of 308

Utilizzo del buzzer con le schede ESP32

187

© FB - 11.2021

188 of 308

Codice

Con le schede ESP32 non esistono funzioni tone e noTone di Arduino e vanno quindi create.

#define BUZZER_CHANNEL 2 //il canale 0 non funziona

#define BUZZER_RESOLUTION 8

#define BUZZER_DUTYCYCLE 128 //50%

void noTone() {

//set DutyCycle = 0

ledcWrite(BUZZER_CHANNEL, 0);

}

void tone(int pin, int freq, int durata) {

// configure LED PWM functionalitites

ledcSetup(BUZZER_CHANNEL, freq, BUZZER_RESOLUTION);

// attach the channel to the GPIO to be controlled

ledcAttachPin(BUZZER_PIN, BUZZER_CHANNEL);

ledcWrite(BUZZER_CHANNEL, BUZZER_DUTYCYCLE);

delay(durata);

}

188

© FB - 12.2021

189 of 308

Pilotaggio tramite transistor

189

© FB - 11.2021

190 of 308

Pilotaggio del Buzzer tramite transistor

190

© FB - 11.2021

Se il buzzer è di tipo induttivo bisogna aggiungere il diodo D1 di protezione

191 of 308

Esercizio a

191

© FB - 11.2021

192 of 308

Esercizio a

Scrivere un programma che all’accensione del microcontrollore faccia suonare il buzzer per tre volte ad intervalli di 200ms.

192

© FB - 12.2021

193 of 308

Esercizio b

193

© FB - 11.2021

194 of 308

Esercizio b

Usando le funzioni tone e noTone di Arduino scrivere un programma che suoni delle melodie con il buzzer.

202122_TPS2_A_ES07 - Buzzer

194

© FB - 12.2021

195 of 308

Esempi vari di codice

195

© FB - 02.2024

196 of 308

Sensore ad ultrasuoni SRF05

197 of 308

Sensore ad ultrasuoni SRF05

È capace di misurare la distanza di oggetti che si trovano di fronte il raggio di azione del sensore. Utilizzo del sensore ad ultrasuoni SRF05 con la Raspberry PI e con vari microcontrollori.

197

© FB - 11.2021

198 of 308

SFR05

198

© FB - 05.2021

199 of 308

Introduzione

L'SRF05 è un’evoluzione dell'SRF04 ed è stato progettato per aumentarne la flessibilità, aumentare la portata e ridurre ulteriormente i costi. In quanto tale, l'SRF05 è completamente compatibile con l'SRF04. La portata è aumentata da 3 metri a 4 metri. Una nuova modalità operativa (che collega il pin della modalità a massa) consente all'SRF05 di utilizzare un singolo pin sia per il trigger che per l'eco, risparmiando così preziosi pin sul controller. Quando il pin della modalità viene lasciato scollegato, l'SRF05 funziona con trigger separati e pin di eco, come l'SRF04. L'SRF05 include un piccolo ritardo prima dell'impulso di eco per dare ai controller più lenti come il Basic Stamp e il Picaxe il tempo di eseguire il loro impulso nei comandi.

199

© FB - 05.2021

200 of 308

Introduzione

Tensione Operativa 5V

Corrente Operativa Tipica 4mA

Frequenza 40 Khz

Portata 1cm - 4mt

Dimensioni 43 x 20 x H 17 mm

Impulso di ritorno: Segnale TTL positivo, di durata proporzionale alla distanza rilevata.

Trigger di Input: Impulso TTL di durata minima di 10 uS.

Modalità di funzionamento: Pin singolo per trig/echo o 2 Pin SRF04 compatibile.

200

© FB - 05.2021

201 of 308

Mode 1 - Mode no connection (SFR04 compatible)

Questa modalità utilizza i pin trigger e pin di eco in modo separato ed è la modalità più semplice da usare. Tutti gli esempi di codice per SRF04 funzioneranno per SRF05 in questa modalità. Per utilizzare questa modalità, lascia semplicemente scollegato il pin della modalità: l'SRF05 ha una resistenza di pull up interna su questo pin.

201

© FB - 05.2021

202 of 308

SFR05 Timing Diagram, mode 1

202

© FB - 05.2021

203 of 308

Mode 2 - Pin singolo per Trigger ed Echo

Questa modalità utilizza un singolo pin per entrambi i segnali Trigger ed Echo. Per utilizzare questa modalità, collegare il pin Mode a 0v. Il segnale di eco apparirà sullo stesso pin del segnale di trigger. L'SRF05 non alza la linea dell'eco fino a 700uS dopo la fine del segnale di trigger. Abbiamo quindi tutto il tempo per modificare il pin di trigger/echo e renderlo un input e misurare quindi la durata dell’impulso.

203

© FB - 05.2021

204 of 308

SFR05 Timing Diagram, mode 2

204

© FB - 05.2021

205 of 308

Calcolo della distanza

I diagrammi temporali dell’SRF05 sono mostrati sopra per ciascuna modalità. È sufficiente fornire un breve impulso da 10uS all'ingresso trigger per avviare la misurazione. L'SRF05 invierà una serie di 8 cicli di ultrasuoni a 40 kHz e alzerà la sua linea di eco alta (o la linea di trigger in modalità 2). Quindi ascolta un eco e non appena ne rileva uno abbassa nuovamente la linea dell'eco. La linea dell'eco è quindi un impulso la cui larghezza è proporzionale alla distanza dall'oggetto. Misurando la durata dell'impulso è possibile calcolare la distanza.

Se l'ampiezza dell'impulso è misurata in uS, dividendo per 58 si otterrà la distanza in cm, oppure dividendo per 148 si otterrà la distanza in pollici. uS/58 = cm o uS/148 = pollici.

L'SRF05 può essere attivato ad intervalli di 50 ms (20 volte al secondo). È necessario quindi attendere 50 ms prima del trigger successivo, anche se l'SRF05 rileva un oggetto vicino e l'impulso dell'eco è più breve. Questo per garantire che il "segnale acustico" ultrasonico sia svanito e non causi una falsa eco alla successiva misurazione.

205

© FB - 05.2021

206 of 308

Calcolo della distanza (www.mauroalfieri.it)

206

© FB - 05.2021

207 of 308

Beam pattern and Beam width

Non esiste un modo semplice per ridurre o modificare l'ampiezza del raggio di trasmissione. La configurazione del raggio dell'SRF05 è conica e la larghezza del raggio è una funzione della superficie dei trasduttori ed è fissa. Di seguito è mostrato lo schema del fascio dei trasduttori utilizzati sull'SRF05, tratto dalla scheda tecnica del produttore.

207

© FB - 05.2021

208 of 308

208

© FB - 05.2021

209 of 308

SFR05 & Arduino

209

© FB - 05.2021

210 of 308

Collegamenti

210

© FB - 10.2021

211 of 308

Codice di esempio

#define LED 7

#define US 10

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

}

int getDistance() {

//Set pin US as output

pinMode(US, OUTPUT);

delay(2);

//Send trig pulse

digitalWrite(US, HIGH);

delayMicroseconds(15);

digitalWrite(US, LOW);

//Set pin US as intput

pinMode(US, INPUT);

//Wait for echo start

while(digitalRead(US)==LOW) {;}

//Wait for echo end

long startTime = micros();

while(digitalRead(US)==HIGH) {;}

long travelTime = micros() - startTime;

//Get distance in cm

int distance = travelTime/58;

return distance;

}

void loop()

{

Serial.print("Distanza ostacolo ");

Serial.print(getDistance());

Serial.println();

delay(200);

//TODO accendere il led solo se la distanza

//dell'ostacolo risulta minore a 20cm

digitalWrite(LED, HIGH);

}

https://github.com/filippo-bilardo/TPSIT_2/blob/main/004/sfr05.ino

211

© FB - 10.2021

212 of 308

Esempi di codice

212

© FB - 05.2021

213 of 308

Esercizi a-c

213

© FB - 09.2021

214 of 308

Esercizio a

  1. Implementare un rilevatore di ostacoli con l’SRF05 e Arduino (o STM32F457). Accendere un led quando l’ostacolo rilevato si trova ad una distanza minore di 20 cm.
  2. Implementare un rilevatore di ostacoli con l’SRF05 e la scheda STM32F457 (o Arduino). Cambiare la velocità dei lampeggi in base alla distanza dell’ostacolo. Per una distanza < di D1 (es. 10 cm) il led deve rimanere acceso. Per distanze superiori a D2 (es. 100 cm) il led deve rimanere spento.
  3. Implementare un sensore di parcheggio. Utilizzando i thread aumentare la velocità del lampeggio del led all’avvicinarsi dell’ostacolo rilevato dall’SFR05

214

© FB - 09.2021

215 of 308

Esercizio d

215

© FB - 05.2021

216 of 308

Altri esercizi

  • Implementare un conteggio di oggetti su nastro trasportatore
  • Segnalazione e arresto del passaggio di un modellino di treno comandato con un driver motori
  • SODAR (Sonic Detection And Ranging) - XTronical

216

© FB - 11.2021

217 of 308

Sensore infrarossi TCRT5000

218 of 308

Sensore infrarossi TCRT5000

218

© FB - 11.2021

219 of 308

I Servomotori

220 of 308

Utilizzo dei servomotori

220

© FB - 10.2021

221 of 308

I servomotori

Un servomotore è un particolare tipo di motore, generalmente di piccola potenza. A differenza dei motori tradizionali che ruotano in modo continuo, rimane fisso su una posizione in base al segnale periodico utilizzato per comandarlo.

Può essere elettrico, pneumatico, idraulico.

I servomotori trovano applicazione nei controlli di posizione, nelle macchine a controllo numerico, nei sistemi automatici di regolazione e nelle periferiche di sistema, come stampanti e plotter. [wikipedia]

© FB - 10.2020

222 of 308

I servomotori

possono ruotare con un angolo compreso tra 0° e 180°, mantenendo stabilmente la posizione raggiunta. (in realtà esistono anche alcuni servo che ruotano a 360° ma sono una minoranza)

© FB - 10.2020

223 of 308

I servomotori

© FB - 10.2020

224 of 308

Utilizzo dei servomotori

---

© FB - 10.2020

225 of 308

Utilizzo dei servomotori

---

© FB - 10.2020

226 of 308

I servomotori

© FB - 10.2020

227 of 308

I servomotori

© FB - 10.2020

228 of 308

Collegamenti

© FB - 10.2020

229 of 308

Pilotaggio di un servomotore

Dobbiamo generare un segnale impulsivo con periodo di 20ms e impostare il duty cycle in modo da avere la parte impulsiva con durata tra 1 e 2ms. L’ampiezza del segnale dipenda dal servomotore scelta ed è di solito compresa tra 3,3V e 7,2V

© FB - 10.2020

230 of 308

I Servomotori con Arduino

230

© FB - 02.2021

231 of 308

Arduino e Servomotori

Utilizziamo Arduino di Tinkercad per generare un’onda impulsiva da utilizzare per comandare un servomotore

© FB - 10.2020

232 of 308

Libreria Servo.h

Questa libreria consente alla scheda Arduino di controllare i servomotori. I servomotori standard consentono di posizionare l'albero su vari angoli, solitamente tra 0 e 180 gradi. I servomotori a rotazione continua consentono di impostare la rotazione dell'albero a varie velocità. La libreria Servo supporta fino a 12 motori sulla maggior parte delle schede Arduino. [codice sorgente]

myservo.attach(pin) Collega la variabile servo ad un pin

#include <Servo.h>

Servo myservo;

void setup()

{

myservo.attach(9);

}

void loop() {}

© FB - 11.2020

233 of 308

Libreria Servo.h

myservo.write(angle) Scrive un valore sul servomotore, controllando di conseguenza la posizione dell'albero. Su un servomotore standard, imposterà l'angolo dell'albero (in gradi). Su un servomotore a rotazione continua, questo imposterà la velocità del servo (dove 0 è la massima velocità in una direzione, 180 è la massima velocità nell'altra e un valore vicino a 90 è nessun movimento).

#include <Servo.h>

Servo myservo;

void setup()

{

myservo.attach(9);� myservo.write(90); // set servo to mid-point

}

void loop() {}

© FB - 11.2020

234 of 308

Esercizio a

234

© FB - 02.2021

235 of 308

Esercitazione a

  1. Onda quadra con periodo 20ms, th=1ms, Vmin=0V, Vmax=5V (Offset 2.5V)
    1. verificare il segnale generato con l’oscilloscopio
    2. collegare il servomotore
  2. Onda quadra con periodo 20ms, th=1,5ms, Vmin=0V, Vmax=5V
  3. Onda quadra con periodo 20ms, th=2ms, Vmin=0V, Vmax=5V
  4. Preparare una tabella con i servomotori testati e indicare i parametri di funzionamento

© FB - 10.2020

236 of 308

Esercizio b

236

© FB - 02.2021

237 of 308

Esercizio b

Trovare il numero dell'iniziale del proprio cognome IC e del proprio nome IN (es Bianchi Dario IC=2, IN=4)�Generare un segnale impulsivo con TH=((int)IC/5+1)*100ms e TL=((int)IN/5+1)*300ms sul pin ((int)IC/3+1) di Arduino. Collegare un led con resistenza e l’oscilloscopio per verificare il corretto funzionamento del programma.

  1. Montare il circuito su Tinkercad
  2. Scrivere lo sketch
  3. Avviare la simulazione e spiegare�il risultato ottenuto
  4. consegnare il progetto contenente lo �screenshot della simulazione, il �codice e la spiegazione del collaudo.
  5. E’ vietato usare la libreria servo.h

237

© FB - 10.2020

238 of 308

Esercizio b

Nel progetto inserire la cattura dell’oscilloscopio in modo che si possa vedere bene il segnale generato.

238

© FB - 10.2020

239 of 308

Esercizio c

239

© FB - 02.2021

240 of 308

Esercizio c

Scrivere un programma (oppure tre diversi programmi) capace di pilotare le diverse posizioni di un servo motore (0°, 90° e 180°). Collegare servomotore e oscilloscopio ad Arduino per verificare il corretto funzionamento del programma.

  1. consegnare gli screenshot delle simulazioni (raccogliere tutti gli screenshot in un unico documento) e del codice scritto.

240

© FB - 11.2020

241 of 308

Esercizio c

241

© FB - 11.2020

242 of 308

Esercizio c

242

© FB - 11.2020

243 of 308

Esercizio d

243

© FB - 02.2021

244 of 308

Esercizio d

Scrivere una funzione capace di pilotare le diverse posizioni di un servomotore (angolo X)(es. servoPos(int angolo). Quindi in base al parametro angolo il servo dovrà ruotare con l’angolo specificato.�Scrivere un programma di test per testare la funzione scritta (ad es. impostare il servo nelle posizioni da 0° a 180° ad incrementi di step° e tenerlo fermo per N sec) �Collegare servomotore e oscilloscopio ad Arduino per verificare il corretto funzionamento del programma.

  • consegnare gli screenshot delle simulazioni (raccogliere tutti gli screenshot in un unico documento)

202122_TPS2_A_ES05 - I servomotori

244

© FB - 11.2020

245 of 308

Circuiti elettronici analogici

246 of 308

Resistenze

247 of 308

Resistenze

247

© FB - 02.2024

248 of 308

La resistenza

Il resistore (anche chiamato impropriamente resistenza per metonimia), è un tipo di componente elettrico lineare e passivo destinato ad opporre una specifica resistenza elettrica al passaggio della corrente elettrica.

I resistori hanno innumerevoli applicazioni sia in apparecchiature elettriche che elettroniche. Sono a volte utilizzati per convertire energia elettrica in energia termica.

[WIKIPEDIA]

248

© FB - 10.2019

249 of 308

Unità di misura

  • L’ohm è l’unità di misura della resistenza e viene indicata con la lettera greca Ω (omega).
  • Il valore della resistenza di un circuito elettronico può variare da frazioni di ohm a molti milioni di ohm.
  • Per indicare i valori delle resistenze si utilizzano multipli e sottompultipli:
    • 1 ohm = 1Ω
    • 1 Kilo ohm = 1000 ohm = 1KΩ
    • 1 Mega ohm = 1000000 ohm = 1MΩ

249

© FB - 10.2019

250 of 308

La legge di Ohm

La legge di Ohm stabilisce che la corrente in un conduttore tra due punti è direttamente proporzionale alla differenza di potenziale tra i due punti stessi. La costante di proporzionalità è detta resistenza elettrica.

V=RI

dove I è la corrente attraverso il conduttore, V è la differenza di potenziale ed R è la resistenza. Nel sistema internazionale la corrente si misura in ampere, la differenza di potenziale in volt e la resistenza in ohm.

[WIKIPEDIA]

250

© FB - 10.2019

251 of 308

Dissipazione dell’energia

Se applichiamo una Tensione (differenza di potenziale) ai capi di una resistenza, la resistenza dissipa una potenza elettrica sotto forma di calore

251

© FB - 10.2019

252 of 308

Classificazione delle resistenze

  • Per tecnologia:
    • SMD (Surface Mount Device)
    • THT (Through Hole tecnology)
  • Per potenza
    • potenza dissipata - 1/8W=125mW, 1/4W, 0.5W, 1W
  • Per precisione
    • 0,1%, 1%, 5%, 10%, 20%
  • Per valore

252

© FB - 10.2019

253 of 308

Teconologie smd e tht

253

© FB - 10.2019

254 of 308

Resistenze di potenza

254

© FB - 10.2019

255 of 308

Le serie delle resistenze

Le resistenze che troviamo in commercio sono raggruppate in serie di valori.

Le serie dipendono dalla tolleranza. Se abbiamo una tolleranza del 10% non avrebbe senso vendere una resistenza con valore intermedio tra 10Ω e 12Ω

255

© FB - 10.2019

256 of 308

La serie E12

256

© FB - 10.2019

257 of 308

Codice dei colori

Con il codice dei colori delle resistenze è possibile determinare il valore nominale della resistenza, la tolleranza e, in qualche caso, il coefficiente di temperatura.

257

© FB - 09.2021

258 of 308

Tabella dei colori delle resistenze a 3 o 4 anelli

258

© FB - 10.2019

259 of 308

Tabella dei colori delle resistenze a 5 o 6 anelli

259

© FB - 10.2019

260 of 308

Calcolo della tolleranza

R = 470 ohm, tolleranza = 10%

Rmin = 470 - 470*10% = 470*(1-10%) = 470*0,9 = 423

Rmax = 470 + 470*10% = 470*(1+10%) = 470*1,1 = 493

260

© FB - 10.2020

261 of 308

Tabella dei colori

261

© FB - 10.2019

262 of 308

I valori delle resistenze smd

262

© FB - 09.2021

263 of 308

263

264 of 308

264

265 of 308

265

Nanobook Z80

vs

Tiny 2040

266 of 308

Approfondimenti

266

© FB - 09.2021

267 of 308

Approfondimenti

  • resistività dei conduttori
  • potenza dissipata
  • dipendenza dalla temperatura
  • collegamento in serie
  • collegamento in parallelo
  • tecnologia di fabbricazione dei resistori
  • Resistori variabili (trimmer e potenziometri slider)

267

© FB - 02.2022

268 of 308

Esercitazioni

268

© FB - 02.2024

269 of 308

Esercitazioni

269

© FB - 02.2024

270 of 308

Driver e Motori in corrente continua

271 of 308

Motori in corrente continua

La macchina in corrente continua (brevemente macchina CC o macchina DC, dall'inglese Direct Current) è stata la prima macchina elettrica realizzata, ed è tuttora utilizzata ampiamente per piccole e grandi potenze, da generatore o da motore. Sono a corrente continua (o comunque alimentabili in corrente continua) numerosi motori di piccola potenza per usi domestici, come anche motori per trazione ferroviaria e marina della potenza di molte centinaia di kW. [wikipedia]

271

© FB - 12.2021

272 of 308

Motori DC

272

© FB - 09.2021

273 of 308

I motori CC (o DC Direct Current)

Un motore in corrente continua (CC) è un tipo di macchina elettrica che converte l’energia elettrica in energia meccanica. Assorbe energia elettrica attraverso la corrente continua e la converte in rotazione meccanica.

Nei motori CC parte che gira è detta rotore o armatura mentre la parte che genera il campo magnetico fisso (nell'esempio i due magneti colorati) detta statore. Un interruttore rotante detto commutatore o collettore a spazzole inverte due volte ad ogni giro la direzione della corrente elettrica che percorre i due avvolgimenti generando un campo magnetico che entra ed esce dalle parti arrotondate dell'armatura. Nascono forze di attrazione e repulsione con i magneti permanenti fissi (indicati con N ed S nelle figure).

273

© FB - 12.2021

274 of 308

I motori CC (o DC Direct Current)

La velocità di rotazione dipende da:

  • Tensione applicata.
  • Corrente assorbita dal rotore.
  • Carico applicato.

La coppia generata è proporzionale alla corrente ed il controllo più semplice agisce sulla tensione d'alimentazione, mentre nei sistemi più complessi si usa per la tensione un controllo in retroazione. [wikipedia]

274

© FB - 12.2021

275 of 308

Driver Motori�Ponte ad H

275

© FB - 09.2021

276 of 308

Pilotaggio di motori

Il transistor comandato in modalità on/off, permette di disaccoppiare il circuito di comando dove è presente il microcontrollore dal circuito di potenza che alimenta il motore. Il diodo permette di bloccare la corrente inversa generata dal motore.

276

© FB - 11.2021

277 of 308

Segnale PWM

Pilotando il motore con un segnale pwm possiamo regolarne la velocità di rotazione. Durante la parte bassa del segnale il motore continuerà a girare per inerzia, ma la velocità corrisponderà al valore medio del segnale.

277

© FB - 12.2021

278 of 308

Ponte ad H (H bridge)

Il ponte ad H è un circuito che permette di invertire la corrente del carico collegato.

Quindi permette di controllare il verso di rotazione del motore. E’ anche possibile frenarlo.

278

© FB - 12.2021

279 of 308

Ponte ad H (H bridge)

279

© FB - 12.2021

280 of 308

Driver motori HG7881

280

© FB - 02.2024

281 of 308

HG7881

Dual-H-Bridge Current-Control Motor Driver

  • Can Drive Two DC Motors or One Stepper Motor
  • Output Current 0,8A, 2A Peak per H-Bridge
  • Power Supply Voltage Range 2.5 to 12V

281

© FB - 02.2024

282 of 308

HG7881

282

© FB - 12.2021

283 of 308

Driver motori DRV8833

283

© FB - 09.2021

284 of 308

DRV8833 - Dual-H-Bridge Current-Control Motor Driver

284

© FB - 12.2021

Motor voltage

2.7V – 10.8V

Logic Voltage

3.3-5V

Output Current per H-Bridge

1.5A RMS, 2A Peak

under-voltage lockout, over-current, and over-temperature

285 of 308

DRV8833

285

© FB - 12.2021

286 of 308

DRV8833

EEP low for the sleep mode (need to disconnect the module after th J2 short contact, the module default point for the connection and connect to high).

ULT for the protection of the alarm output, overheating and overcurrent protection int the work of the output low-level alarm signal.

286

© FB - 02.2024

287 of 308

DRV8833

287

© FB - 12.2021

288 of 308

DRV8833 e scheda STM32 o Arduino

288

© FB - 12.2021

288

289 of 308

DRV8833

289

© FB - 12.2021

289

290 of 308

Controllo motori con ESP32 e LM298A

290

© FB - 12.2021

291 of 308

Controllo motori con ESP32 e LM298A

291

© FB - 12.2021

292 of 308

Controllo motori con Arduino e DRV8833

292

© FB - 12.2021

293 of 308

Collegamento driver e motori ad Arduino

293

© FB - 12.2021

293

294 of 308

Esercitazioni

294

© FB - 02.2024

295 of 308

Esercitazioni

295

© FB - 02.2024

296 of 308

Prove con ESP32+DRV8833+N20

296

© FB - 02.2024

297 of 308

Altri circuiti elettronici analogici

298 of 308

Altri circuiti elettronici analogici

298

© FB - 04.2022

299 of 308

Strumenti di laboratorio

300 of 308

Strumenti di laboratorio

300

© FB - 04.2022

301 of 308

Altre esercitazioni

302 of 308

Materiale per le esercitazioni

302

© FB - 04.2022

303 of 308

Esercitazioni

  • Input e Output
    • Utilizzare i LED per visualizzare informazioni - led blink
    • Utilizzare i pulsanti per controllare Arduino - accensione di un led con pulsante
    • Utilizzare i sensori per raccogliere dati -
  • Seriale
    • Utilizzare la comunicazione seriale per scambiare dati con il computer
    • Utilizzare la comunicazione seriale per comunicare con altri Arduino
  • Altri
    • Gestione semaforo
    • Impianto di allarme (con sensore di movimento, sensori alle finestre e buzzer)
    • Gioco ping-pong con led e pulsanti
    • Generare un segnale PWM per pilotare un motore
    • Cambiare la luminosità con un segnale PWM controllato da potenziometro

303

© FB - 04.2022

304 of 308

Approfondimenti

305 of 308

Approfondimenti

  • Realizzazione di prototipi con Arduino

305

© FB - 04.2022

306 of 308

Grazie per l’attenzione

307 of 308

Link/Riferimenti

307

308 of 308

Revisioni

v1.0 15/11/17 - versione iniziale �v1.1 01/11/21 - nuovi contenuti�v1.2 30/12/21 - cambiato il tema delle slide e ampliati i contenuti�v1.3 20/01/24 - aggiunti i contenuti per le esercitazioni