Laboratorio didattico Prof. Carconi Stefano

Modulo Arduino & Microcontrollori

Hardware & Microcontrollori

Scheda Arduino UNO R3

Guida dettagliata a tutti i pini della scheda, raccolta estesa di esempi di programmazione C++ e collegamento all'archivio dei progetti realizzati in laboratorio.

Progetti del Laboratorio

Specifiche e Guida Completa ai Pini (Pinout)

Fai clic sui blocchi del diagramma per esplorare la funzione di ogni singolo gruppo di pini

ATmega328P-PU DIGITAL (0-13 / PWM~) ANALOG IN (A0-A5) POWER (Vin/GND/5V/3.3V)

Ispezione Pin / Componente

Seleziona un elemento

Fai clic su una sezione della scheda nel diagramma per visualizzarne la spiegazione dettagliata.

Mappatura Protocolli di Comunicazione
  • UART (Seriale): Pin 0 (RX) e Pin 1 (TX)
  • I2C / TWI: Pin A4 (SDA) e Pin A5 (SCL)
  • SPI: Pin 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
  • Interruzioni Esterne: Pin 2 (INT0) e Pin 3 (INT1)

Tabella Riassuntiva dei Pini

Nome Pin Tipo Tensione / Segnale Descrizione & Funzione Speciale
Digitali 0 - 13 GPIO (Input / Output) 0V - 5V (Max 40mA per pin) Ingressi/uscite digitali generiche configurabili via software.
PWM (~3, ~5, ~6, ~9, ~10, ~11) Digital Output PWM Onda quadra a duty-cycle variabile Generazione di uscite analogiche simulate mediante `analogWrite()`.
Analogici A0 - A5 Input Analogico (o GPIO) 0V - 5V (Lettura ADC 10-bit) Lettura di sensori analogici (potenziometri, sensori di luce/temperatura).
5V & 3.3V Alimentazione Output 5V DC / 3.3V DC Forniscono tensione regolata per alimentare componenti esterni e sensori.
GND Massa (Ground) 0V Punto di riferimento a potenziale zero per chiudere i circuiti.
Vin Alimentazione Input 7V - 12V DC Pin per alimentare la scheda da una sorgente esterna non regolata.

Esempi di Programmazione Arduino (C++)

1. Lampeggio LED (Blink)

BASE

Controllo del LED integrato sulla scheda al PIN 13.

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

2. Pulsante & LED (Input)

BASE

Lettura dello stato digitale di un pulsante con resistenza pull-down.

const int btnPin = 2;
const int ledPin = 13;

void setup() {
  pinMode(btnPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int st = digitalRead(btnPin);
  digitalWrite(ledPin, st);
}

3. Sensore HC-SR04

INTERMEDIO

Misurazione della distanza tramite ultrasuoni e porta seriale.

const int trig = 9, echo = 10;

void setup() {
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(trig, LOW); delayMicroseconds(2);
  digitalWrite(trig, HIGH); delayMicroseconds(10);
  digitalWrite(trig, LOW);
  long dur = pulseIn(echo, HIGH);
  Serial.println(dur * 0.034 / 2);
  delay(500);
}

4. Servomotore SG90

BASE

Rotazione angolare guidata da segnale PWM tramite Servo.h.

#include <Servo.h>
Servo s;

void setup() {
  s.attach(9);
}

void loop() {
  s.write(0); delay(1000);
  s.write(90); delay(1000);
  s.write(180); delay(1000);
}

5. Display LCD 16x2 I2C

INTERMEDIO

Scrittura di testo su schermo LCD utilizzando il bus I2C.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.init(); lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Lab. Carconi");
}

void loop() {}

6. Sensore Temperatura LM35

INTERMEDIO

Conversione della tensione letta dal pin analogico A0 in gradi Celsius.

const int lm35Pin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int val = analogRead(lm35Pin);
  float mv = (val / 1024.0) * 5000;
  float tempC = mv / 10.0;
  Serial.println(tempC);
  delay(1000);
}

Progetti Sviluppati in Laboratorio

Vedi archivio completo

Rover Evita-Ostacoli

Prototipo robotico con sensore ad ultrasuoni montato su servomotore per la scansione ed evitamento autonomo degli ostacoli.

Centrale Domotica Anti-Fuga Gas

Sistema di sicurezza per il rilevamento di gas/fumo via sensore MQ-2 con blocco automatico della linea ed allarme sonoro.

Serra Smart Automatizzata

Controllo di micro-irrigazione basato sulla misurazione dell'umidità del terreno e azionamento di una mini pompa ad immersione.