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ć
- Arduino UNO z kablem USB
- Potencjometr (lub dowolny zmienny rezystor) dla wejścia analogowego
- LED i rezystor 220-OHM dla wyjścia analogowego
- Druty chleba i skoczków
- 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).
- Wyświetla sygnał PWM, gdzie
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
- Czytanie czujników środowiskowych (np. Światło, temperatura, wilgotność)
- Regulacja prędkości silnika
- Kontrolowanie jasności LED
- Przetwarzanie sygnału audio
- 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!