Leggi e scrivi analogici usando l'Arduino Uno

Analog Read and Write Using the Arduino Uno

Arduino UNO supporta le operazioni di ingresso e output analogiche, consentendo di interagire con sensori e attuatori che richiedono valori precisi. Le operazioni analogiche sono essenziali per controllare dispositivi come LED, motori e input di lettura da sensori come potenziometri o sensori di luce. Questo tutorial ti guiderà attraverso l'installazione, la lettura e la scrittura analogiche e l'uso di operazioni logiche come if dichiarazioni con dati analogici.


Cosa avrai bisogno

  1. Arduino Uno con cavo USB
  2. Potenziometro (o qualsiasi resistenza variabile) per ingresso analogico
  3. LED e una resistenza da 220 ohm per uscita analogica
  4. Breadboard e fili jumper
  5. Un computer con l'IDE Arduino installato

Passaggio 1: comprensione dei pin analogici su Arduino

Arduino Uno ha sei pin di ingresso analogici (A0-A5) che possono leggere una tensione tra 0 e 5 V e convertirlo in un valore digitale tra 0 e 1023. Per l'uscita analogica, Arduino utilizza PWM (Modulazione della larghezza di impulsi) su alcuni pin digitali contrassegnato con ~ (ad esempio, 3, 5, 6, 9, 10, 11).

Funzioni utilizzate

  • Ingresso analogico: analogRead(pin)
    • Legge una tensione (0-5 V) e restituisce un valore compreso tra 0 e 1023.
  • Uscita analogica: analogWrite(pin, value)
    • Emette un segnale PWM dove value varia da 0 (0% di duty cycle) a 255 (ciclo di lavoro 100%).

Passaggio 2: ingresso analogico del cablaggio (potenziometro)

Collegare un potenziometro a un perno analogico Arduino:

Pin potenziometro Connessione Arduino
1 (pin di fine) 5v
2 (medio/output) A0
3 (pin di fine) GND

Passaggio 3: uscita analogica del cablaggio (LED)

Collegare un LED con un resistore da 220 ohm a un perno Arduino PWM (ad es. Pin 9):

Pin a LED Connessione Arduino
Gamba lunga (+) Pin digitale 9
Gamba corta (-) GND

Passaggio 4: lettura di ingresso analogico

Usare il analogRead() funzione per leggere i dati dal potenziometro:

Codice di esempio: lettura di input analogici

#define potPin A0 // Potentiometer connected to A0

void setup() {
  Serial.begin(9600);
  Serial.println("Analog Input Test");
}

void loop() {
  int sensorValue = analogRead(potPin); // Read analog value
  Serial.print("Sensor Value: ");
  Serial.println(sensorValue);
  delay(500); // Wait for half a second
}

Eseguire il codice e osservare i valori potenziometri (0-1023) nel monitor seriale.


Passaggio 5: scrittura di uscita analogica

Usare il analogWrite() funzione per controllare la luminosità di un LED:

Codice di esempio: output analogico al LED

#define ledPin 9 // LED connected to pin 9

void setup() {
  pinMode(ledPin, OUTPUT); // Set LED pin as output
}

void loop() {
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(ledPin, brightness); // Increase brightness
    delay(10);
  }

  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(ledPin, brightness); // Decrease brightness
    delay(10);
  }
}

Passaggio 6: combinare ingresso e output analogici

È possibile utilizzare i valori di ingresso analogici per controllare l'uscita, come la regolazione della luminosità del LED in base alla posizione del potenziometro.

Codice di esempio: il potenziometro controlla la luminosità dei LED

#define potPin A0 // Potentiometer connected to A0
#define ledPin 9  // LED connected to pin 9

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(potPin); // Read potentiometer value

  int brightness = map(sensorValue, 0, 1023, 0, 255); // Map to PWM range
  analogWrite(ledPin, brightness); // Set LED brightness

  Serial.print("Sensor Value: ");
  Serial.print(sensorValue);
  Serial.print(" -> Brightness: ");
  Serial.println(brightness);

  delay(100);
}

Passaggio 7: usando if Dichiarazioni con dati analogici

È possibile creare condizioni utilizzando l'input analogico per eseguire azioni specifiche:

Codice di esempio: controllo condizionale

#define potPin A0 // Potentiometer connected to A0
#define ledPin 9  // LED connected to pin 9

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(potPin);

  if (sensorValue > 512) {
    analogWrite(ledPin, 255); // Full brightness if sensor value > 512
    Serial.println("Bright!");
  } else {
    analogWrite(ledPin, 0); // Turn off LED otherwise
    Serial.println("Off");
  }

  delay(500);
}

Applicazioni di lettura/scrittura analogiche

  1. Leggere i sensori ambientali (ad es. Luce, temperatura, umidità)
  2. Regolazione delle velocità del motore
  3. Controllo della luminosità dei LED
  4. Elaborazione del segnale audio
  5. Creazione di interfacce utente basate su analogici

Risoluzione dei problemi

  • Letture errate dal sensore: Garantire un cablaggio adeguato e verificare le connessioni potenziometriche.
  • LED non illuminando: Conferma l'orientamento del LED e utilizzare una resistenza per limitare la corrente.
  • Output non liscio: Aggiungi un piccolo ritardo o una media dei valori di input per la stabilità.

Conclusione

Hai imparato come eseguire operazioni di lettura e scrittura analogiche utilizzando Arduino Uno, valori del sensore MAP alle uscite e utilizzare if Dichiarazioni per la logica condizionale. Queste abilità sono cruciali per creare progetti reattivi e interattivi. Sperimenta ulteriormente integrando altri sensori e attuatori analogici per espandere le tue capacità!

Lascia un commento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.