Citește și scrie analog folosind Arduino Uno

Analog Read and Write Using the Arduino Uno

Arduino UNO acceptă operațiuni de intrare și ieșire analogică, permițându -vă să interacționați cu senzori și actuatoare care necesită valori precise. Operațiunile analogice sunt esențiale pentru controlul dispozitivelor precum LED -urile, motoarele și intrările de citire de la senzori precum potențiometre sau senzori de lumină. Acest tutorial vă va ghida prin configurare, citire și scriere analogică și folosind operațiuni logice precum if declarații cu date analogice.


Ce vei avea nevoie

  1. Arduino UNO cu cablu USB
  2. Potențiometru (sau orice rezistență variabilă) pentru intrarea analogică
  3. LED și o rezistență de 220-ohm pentru ieșire analogică
  4. Tablă de pâine și jumper
  5. Un computer cu IDE Arduino instalat

Pasul 1: Înțelegerea pinilor analogici pe Arduino

Arduino Uno are șase pini de intrare analogici (A0-A5) care pot citi o tensiune între 0 și 5V și să o transforme într-o valoare digitală între 0 și 1023. Pentru ieșirea analogică, Arduino folosește PWM (modularea lățimii pulsului) pe anumite pini digitali marcat cu ~ (de exemplu, 3, 5, 6, 9, 10, 11).

Funcții utilizate

  • Intrare analogică: analogRead(pin)
    • Citește o tensiune (0-5V) și returnează o valoare între 0 și 1023.
  • Ieșire analogică: analogWrite(pin, value)
    • Iese un semnal PWM unde value variază de la 0 (0% ciclu de serviciu) la 255 (100% ciclu de serviciu).

Pasul 2: Intrare analogică de cablare (potențiometru)

Conectați un potențiometru la un pin analog Arduino:

Pinul potențiometru Conexiune Arduino
1 (pinul final) 5V
2 (mijloc/ieșire) A0
3 (pinul final) GND

Pasul 3: Ieșire analogică de cablare (LED)

Conectați un LED cu o rezistență de 220-ohm la un pin PWM Arduino (de exemplu, pinul 9):

Pinul LED Conexiune Arduino
Picior lung (+) PIN -ul digital 9
Picior scurt (-) GND

Pasul 4: Citirea intrării analogice

Folosiți analogRead() Funcție pentru a citi date de la potențiometru:

Exemplu de cod: citirea intrării analogice

#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
}

Rulați codul și observați valorile potențiometrului (0-1023) în monitorul serial.


Pasul 5: Scrierea ieșirii analogice

Folosiți analogWrite() Funcție pentru a controla luminozitatea unui LED:

Exemplu de cod: ieșire analogică la 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);
  }
}

Pasul 6: Combinarea intrării și ieșirii analogice

Puteți utiliza valori de intrare analogice pentru a controla ieșirea, cum ar fi reglarea luminozității LED -ului pe baza poziției potențiometrului.

Exemplu de cod: potențiometrul controlează luminozitatea LED -ului

#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);
}

Pasul 7: folosind if Declarații cu date analogice

Puteți crea condiții folosind intrare analogică pentru a efectua acțiuni specifice:

Exemplu de cod: control condiționat

#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);
}

Aplicații de citire/scriere analogică

  1. Citirea senzorilor de mediu (de exemplu, lumină, temperatură, umiditate)
  2. Reglarea vitezei motorului
  3. Controlul luminozității LED -ului
  4. Prelucrarea semnalului audio
  5. Crearea de interfețe de utilizator bazate pe analogice

Depanare

  • Citiri incorecte de la senzor: Asigurați cablarea corespunzătoare și verificați conexiunile potențiometrului.
  • LED -ul nu se aprinde: Confirmați orientarea LED -ului și utilizați un rezistor pentru a limita curentul.
  • Ieșirea nu este netedă: Adăugați o întârziere mică sau media valorilor de intrare pentru stabilitate.

Concluzie

Ați învățat cum să efectuați operațiuni de citire și scriere analogică folosind Arduino Uno, valorile senzorului MAP la ieșiri și utilizați if Declarații pentru logica condiționată. Aceste abilități sunt cruciale pentru crearea de proiecte receptive și interactive. Experimentați în continuare integrând alți senzori analogici și actuatoare pentru a vă extinde capacitățile!

Lasă un comentariu

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.