Analogowe odczyt i zapis za pomocą Arduino Uno

Analog Read and Write Using the Arduino Uno

Arduino UNO obsługuje analogowe operacje wejściowe i wyjściowe, umożliwiając interakcję z czujnikami i siłownikami wymagającymi precyzyjnych wartości. Operacje analogowe są niezbędne do sterowania urządzeniami, takimi jak diody LED, silniki i odczytu wejścia z czujników takich jak potencjometry lub czujniki światła. Ten samouczek poprowadzi Cię przez konfigurację, czytanie analogowe i pisanie oraz za pomocą operacji logicznych takich jak if stwierdzenia z danymi analogowymi.


Czego będziesz potrzebować

  1. Arduino UNO z kablem USB
  2. Potencjometr (lub dowolny zmienny rezystor) dla wejścia analogowego
  3. LED i rezystor 220-OHM dla wyjścia analogowego
  4. Druty chleba i skoczków
  5. Komputer z zainstalowanym Arduino IDE

Krok 1: Zrozumienie pinów analogowych na Arduino

Arduino UNO ma sześć analogowych pinów wejściowych (A0-A5), które mogą odczytać napięcie między 0 a 5 V i przekonwertować go w wartość cyfrową między 0 a 1023. Dla wyjściowych analogowych Arduino używa PWM (modulacja szerokości impulsu) na niektórych cyfrowych pinach oznaczony ~ (np. 3, 5, 6, 9, 10, 11).

Zastosowane funkcje

  • Wejście analogowe: analogRead(pin)
    • Odczytuje napięcie (0-5 V) i zwraca wartość od 0 do 1023.
  • Wyjście analogowe: analogWrite(pin, value)
    • Wyświetla sygnał PWM, gdzie value Zakresy od 0 (0% cyklu pracy) do 255 (100% cyklu pracy).

Krok 2: Wejście analogowe okablowania (potencjometr)

Podłącz potencjometr z analogicznym pinem Arduino:

Piniometra Połączenie Arduino
1 (PIN END) 5v
2 (środkowy/wyjściowy) A0
3 (Pin End) GND

Krok 3: Wyjście analogowe okablowania (LED)

Podłącz diodę LED z rezystorem 220-OHM do pinu PWM Arduino (np. Pin 9):

Pin LED Połączenie Arduino
Długa noga (+) Cyfrowy pin 9
Krótka noga (-) GND

Krok 4: Odczyt wejścia analogowego

Użyj analogRead() Funkcja do odczytu danych z potencjometru:

Przykładowy kod: Odczytanie wejścia analogowego

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

Uruchom kod i obserwuj wartości potencjometru (0-1023) w monitorze szeregowym.


Krok 5: Pisanie wyjścia analogowego

Użyj analogWrite() funkcja kontroli jasności diody LED:

Przykładowy kod: wyjście analogowe do 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);
  }
}

Krok 6: Łączenie analogowego wejścia i wyjścia

Możesz użyć analogowych wartości wejściowych do kontrolowania wyjścia, takich jak regulacja jasności LED w oparciu o pozycję potencjometru.

Przykładowy kod: potencjometr kontroluje jasność 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);
}

Krok 7: Używanie if Stwierdzenia z danymi analogowymi

Możesz tworzyć warunki za pomocą analogowych wejściowych do wykonywania określonych działań:

Przykładowy kod: kontrola warunkowa

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

Aplikacje analogowych odczytu/zapisu

  1. Czytanie czujników środowiskowych (np. Światło, temperatura, wilgotność)
  2. Regulacja prędkości silnika
  3. Kontrolowanie jasności LED
  4. Przetwarzanie sygnału audio
  5. Tworzenie analogowych interfejsów użytkownika

Rozwiązywanie problemów

  • Nieprawidłowe odczyty z czujnika: Zapewnij odpowiednie okablowanie i zweryfikuj połączenia potencjometru.
  • LED nie oświetlenie: Potwierdź orientację LED i użyj rezystora, aby ograniczyć prąd.
  • Wyjście nie jest gładkie: Dodaj niewielkie opóźnienie lub przeciętnie wartości wejściowe dla stabilności.

Wniosek

Nauczyłeś się wykonywać operacje odczytu i zapisu analogowego za pomocą Arduino UNO, mapy wartości czujników do wyjść i używać if Oświadczenia dotyczące logiki warunkowej. Umiejętności te są kluczowe dla tworzenia responsywnych, interaktywnych projektów. Eksperymentuj dalej, integrując inne czujniki analogowe i siłowniki w celu rozszerzenia twoich możliwości!

Zostaw komentarz

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.