Prosty projekt Arduino: Sterowanie serwem za pomocą przycisku 180 stopni do 0 i z powrotem
Wprowadzenie
Ten artykuł wyjaśnia prosty projekt Arduino, który wykorzystuje przycisk do sterowania serwomotorem. Serwomotor to precyzyjny silnik, który może obracać się do określonej pozycji, co czyni go idealnym do zastosowań takich jak robotyka i automatyka. Ten projekt sprawi, że serwo przesunie się od 0 do 180 stopni po naciśnięciu przycisku i wróci do 0 po jego zwolnieniu.
Elementy projektu i podłączenie
Będziesz potrzebować płytki Arduino, serwomotoru oraz przycisku.
Instrukcje podłączenia:
- Serwomotor: Podłącz przewód sygnałowy (zwykle żółty/pomarańczowy) do pinu 3 Arduino, przewód zasilający (czerwony) do 5V, a przewód masy (czarny/brązowy) do GND.
- Przycisk: Podłącz jedną nóżkę do pinu cyfrowego 2, a drugą do pinu GND. To wszystko! Dzięki wewnętrznemu rezystorowi podciągającemu Arduino nie potrzebujesz zewnętrznego rezystora.
Wyjaśnienie kodu
Program jest podzielony na trzy główne części: definicje pinów, funkcję setup() oraz funkcję loop().
Definicje pinów
Ta sekcja konfiguruje wymagane biblioteki i przypisuje znaczące nazwy do używanych pinów.
#include <Servo.h>
const int servoPin = 3;
const int buttonPin = 2;
Servo myServo;
Funkcja setup()
Funkcja setup() zawiera kod, który wykonuje się tylko raz po włączeniu lub zresetowaniu płytki Arduino. Służy do wstępnej konfiguracji.
void setup() {
myServo.attach(servoPin);
pinMode(buttonPin, INPUT_PULLUP);
myServo.write(0);
}
Kluczową zmianą jest pinMode(buttonPin, INPUT_PULLUP);. Aktywuje to wewnętrzny rezystor, który podciąga napięcie pinu do stanu HIGH. Po naciśnięciu przycisku pin jest łączony z masą, a napięcie spada do stanu LOW.
Funkcja loop()
Funkcja loop() zawiera główną logikę programu i wykonuje się wielokrotnie w nieskończoność po zakończeniu funkcji setup().
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
myServo.write(180);
} else {
myServo.write(0);
}
}
Logika jest tutaj odwrócona. Ponieważ naciśnięcie przycisku powoduje sygnał LOW, warunek if (buttonState == LOW) jest używany do przesunięcia serwa o 180 stopni.
#include <Servo.h>
/*
This is sketch for controlling servo motor. when push button is pressed, the servo moves to 180 degreees and stays there. when the push button is released, the servo motor returns back to 0 degree.
*/
// Define the pin for the servo motor
const int servoPin = 3;
// Define the pin for the push button
const int buttonPin = 2;
// Create a Servo object
Servo myServo;
void setup() {
// Attach the Servo object to the servo pin
myServo.attach(servoPin);
// Set the button pin as an input
pinMode(buttonPin, INPUT);
// Start the servo at 0 degrees
myServo.write(0);
}
void loop() {
// Read the state of the push button
int buttonState = digitalRead(buttonPin);
// If the button is pressed (HIGH)
if (buttonState == HIGH) {
// Move the servo to 180 degrees
myServo.write(180);
} else {
// If the button is released (LOW), move the servo back to 0 degrees
myServo.write(0);
}
}
Rzeczy, których możesz potrzebować
-
AmazonServo motor on Amazonamzn.to
-
AliExpressPurchase SG90 Servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Zasoby i odniesienia
Brak zasobów.
Pliki📁
Brak dostępnych plików.