Przełączniki przycisków są powszechnie używane w elektronice do sterowania urządzeniami lub wyzwalania określonych działań. Dzięki Arduino możesz łatwo odczytać stan przycisku i użyć go w swoich projektach. Ten samouczek poprowadzi Cię przez konfigurowanie i użycie przełącznika przycisku z Arduino, wraz z przykładami włączenia go do kodu.
Czego będziesz potrzebować
- Arduino Board (np. UNO, Mega, Nano)
- Przełącznik przycisku
- Rezystor 10K-OHM (do konfiguracji rozciągnięcia)
- Druty chleba i skoczków
- Komputer z zainstalowanym Arduino IDE
Krok 1: Zrozumienie przełączników przycisków
Przełącznik przycisku to proste urządzenie, które łączy lub odłącza obwód po naciśnięciu. Zazwyczaj ma cztery piny, z których dwa są wewnętrznie podłączone, tworząc pojedynczy przełącznik.
Wspólne konfiguracje
- Odwrotny rezystor: Zapewnia, że kołek wejściowy odczytuje nisko, gdy przycisk nie jest naciśnięty.
- Rezystor podciągający: Zapewnia, że kołek wejściowy odczytuje wysoko, gdy przycisk nie jest naciśnięty (może użyć wewnętrznego rezystora podciągania Arduino).
Krok 2: Okablowanie przycisku do Arduino
Konfiguracja rezystora wyciągnięcia
Przycisk | Połączenie |
---|---|
Jedna strona | Arduino Pin 2 |
Druga strona | 5v |
Rezystor (10k) | Arduino Pin 2 do GND |
Krok 3: Czytanie stanu przycisku
Użyj digitalRead()
funkcja, aby ustalić, czy przycisk jest naciśnięty (wysoki), czy nie (niski).
Przykładowy kod: Podstawowy odczyt przycisku
#define buttonPin 2 // Button connected to pin 2
void setup() {
pinMode(buttonPin, INPUT); // Set pin 2 as input
Serial.begin(9600);
Serial.println("Button Test");
}
void loop() {
int buttonState = digitalRead(buttonPin); // Read the button state
if (buttonState == HIGH) {
Serial.println("Button Pressed");
} else {
Serial.println("Button Released");
}
delay(100); // Small delay for readability
}
Krok 4: Używanie wewnętrznego rezystora podciągania
Arduino ma wbudowane rezystory podciągające, które mogą uprościć okablowanie, eliminując potrzebę zewnętrznego rezystora.
Okablowanie do podciągania wewnętrznego
Przycisk | Połączenie |
---|---|
Jedna strona | Arduino Pin 2 |
Druga strona | GND |
Przykładowy kod: za pomocą wewnętrznego podciągania
#define buttonPin 2 // Button connected to pin 2
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Enable internal pull-up resistor
Serial.begin(9600);
Serial.println("Button Test with Pull-Up");
}
void loop() {
int buttonState = digitalRead(buttonPin); // Read the button state
if (buttonState == LOW) { // LOW means button is pressed
Serial.println("Button Pressed");
} else {
Serial.println("Button Released");
}
delay(100); // Small delay for readability
}
Krok 5: Zadłużenie przycisku
Po naciśnięciu przyciski mechaniczne często wytwarzają hałas lub „podskakiwanie”, powodując wiele odczytów. Debuina zapewnia stabilne odczyty.
Przykładowy kod: Zabranie przycisku
#define buttonPin 2 // Button connected to pin 2
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50; // 50ms debounce time
int lastButtonState = HIGH;
int buttonState;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
int reading = digitalRead(buttonPin);
// If the button state has changed, reset the debounce timer
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
// Check if the debounce time has passed
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
Serial.println("Button Pressed");
}
}
}
lastButtonState = reading;
}
Krok 6: Kontrolowanie diody LED za pomocą przycisku
Możesz użyć przycisku do kontrolowania diody LED. Na przykład przełącz stan LED przy naciśnięciu każdego przycisku.
Przykładowy kod: przycisk przełącza diodę LED
#define buttonPin 2 // Button connected to pin 2
#define ledPin 13 // LED connected to pin 13
bool ledState = false;
bool lastButtonState = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW && lastButtonState == HIGH) {
ledState = !ledState; // Toggle LED state
digitalWrite(ledPin, ledState ? HIGH : LOW);
delay(200); // Debounce delay
}
lastButtonState = buttonState;
}
Zastosowania przycisków
- Przełączniki start/stop
- Wejście użytkownika do wyboru trybów
- Zresetuj przyciski w obwodach
- Oświetlenie kontrolne lub urządzenia
Rozwiązywanie problemów
- Przycisk nie odpowiada: Sprawdź okablowanie i upewnij się, że używany jest odpowiedni pinmod.
- Niestabilne odczyty: Dodaj logikę debuncia lub użyj rezystora podciągania/rozciągania.
- LED, a nie oświetlenie: Potwierdź orientację LED i użyj rezystora, aby ograniczyć prąd.
Wniosek
Nauczyłeś się, jak korzystać z przełącznika przycisku z Arduino, w tym czytaniem jego stanu, debunowania i sterowania urządzeniami, takimi jak diody LED. Przyciski naciśnięcia są fundamentalnym elementem elektroniki, a opanowanie ich użycia otworzy niekończące się PO