Controle o servo com botões Arduino em três etapas_Custom Drive_Industry Insights_Kpower
Lar > Informações do setor >Unidade personalizada
SUPORTE TÉCNICO

Suporte ao produto

Controle o servo com botões do Arduino em três etapas

Publicado 2026-04-29

Use uma placa de desenvolvimento Arduino para controlar o ângulo de rotação do servo com a ajuda de um botão. Esta é uma das funções básicas mais práticas na produção eletrônica. Este artigo fornece diretamente uma solução completa. Use um botão comum. Quando pressionado, o servo gira 90 graus e, quando liberado, retorna a 0 graus. Você só precisa de uma placa de desenvolvimento Arduino, um servo 9g, um botão, alguns fios Dupont e uma placa de ensaio. De acordo com o diagrama de fiação e código abaixo, pode ser concluído em 30 minutos.

01Métodos de hardware e fiação necessários (operações principais)

Lista de hardware necessária:

Placa de desenvolvimento Arduino (qualquer modelo é aceitável, este artigo toma o modelo mais comum como exemplo)

Servo SG90 9g (servo de baixa potência, adequado para nível básico)

Botão de toque (6x6x5mm de quatro pinos)

Resistor de 10kΩ (para resistor pull-down)

Tábua de ensaio e um pouco de fio Dupont

Etapas de fiação (devem ser precisas):

1. Conecte a linha de sinal do servo (geralmente laranja ou amarela) ao pino 9 do Arduino

2. Conecte o cabo de alimentação do servo (vermelho) ao pino 5V

3. Conecte o fio terra do servo (marrom ou preto) ao pino GND

按键控制舵机程序_arduino按键控制舵机_arduino舵机控制板

4. Um pino do botão está conectado a 5V e o outro pino está conectado ao pino 2.

5. Conecte um resistor pull-down de dez kΩ em paralelo entre o pino 2 e o GND para garantir que a entrada esteja BAIXA quando não for pressionada.

Um erro comum é que a omissão do resistor pull-down fará com que o estado do botão salte erraticamente. Uma extremidade do resistor está conectada ao pino 2 e a outra extremidade está conectada ao GND.

02Código completo (copie-o diretamente e use-o)

#incluirservomeuservo; //Cria objeto servo int buttonPin = 2; //Pino de conexão do botão int buttonState = 0; //Estado do botão de armazenamento intservoPos = 0; // Ângulo atual do servo void setup() { myServo.attach(9); // Conecte a linha de sinal do servo ao pino 9 pinMode(buttonPin, INPUT); // Defina o pino do botão como input myServo.write(0); // Inicializa o ângulo do servo em 0 graus } void loop() { buttonState = digitalRead(buttonPin); // Ler o estado do botão if (buttonState == HIGH) { // Quando pressionado myServo.write(90); // O servo gira para 90 graus delay(15); // Aguarde o servo atingir a posição } else { // Quando não pressionado myServo.write(0); // O servo retorna para 0 graus delay(15); } }

A lógica do código principal é usar digitalRead() para detectar continuamente o nível do pino 2Uma vez pressionado o botão, ou seja, quando o pino está no estado HIGH, o servo realiza a operação write(90).Quando o botão é liberado, o servo retorna à operação write(0).. Através da escrita estruturada, dividimos o programa em quatro módulos claramente organizados: inicialização, leitura, julgamento e execução, para que você possa expandi-lo para um modo de controle multichave ou multiângulo nas etapas subsequentes.

03Perguntas frequentes e solução de problemas (formato Q/A)

P: O servo não se move. Qual poderia ser o motivo?

Fonte de energia insuficiente. O servo deve ser alimentado separadamente. O servo 9g pode usar diretamente os 5V do Arduino, e o servo maior deve ser alimentado por uma fonte de alimentação externa.

P: Pressione o botão uma vez e o servo girará uma vez. Ele retornará a zero quando for lançado?

R: Há um erro lógico no código. Certifique-se de usar a estrutura if-else fornecida acima, em vez de apenas determinar as condições após pressionar.

P: O que devo fazer se a caixa de direção tremer ou a direção estiver incorreta?

按键控制舵机程序_arduino舵机控制板_arduino按键控制舵机

1. Verifique se a linha de sinal está solta. 2. Adicione delay(15) após write(). 3. Isto proporcionará tempo de ação suficiente para o servo.

P: Como alterá-lo para girar 90 graus pressionando uma vez e retornar a zero pressionando novamente?

Variáveis ​​precisam ser adicionadas para registrar o status. Sempre que for detectado que o botão está pressionado, o bit da bandeira é alterado e o ângulo correspondente é escrito.

P: Os botões demoram a responder e às vezes não ocorre resposta?

Devido ao jitter mecânico das teclas, você pode adicionar delay(10) após detectar a mudança de nível para eliminar o jitter, ou usar a biblioteca Bounce2

04Aplicações expandidas: desde botão único até controle multimodo

Depois de dominar o controle básico de botão único, você pode implementar facilmente as seguintes funções avançadas:

1. Dois botões controlam para frente e para trás, respectivamente.

Botão A: Pressione para ir a 180 graus, solte para voltar a 0 graus

Botão B: Pressione para voltar a 45 graus, solte para voltar a 0 graus

Modifique o código: adicione um segundo pino de botão e julgue separadamente

2. Botão único para percorrer três ângulos

// O ângulo é acumulado cada vez que é pressionado, 0→60→120→0 loop int angles[] = {0, 60, 120}; índice interno = 0; if (buttonState == HIGH && !flag) { // Índice anti-clique duplo = (index+1) % 3; myServo.write(ângulos[índice]); bandeira = verdadeiro; }

3. Pressione e segure para girar continuamente

Detecte a duração do botão e continue a aumentar o ângulo após exceder 500ms até ser liberado.

A seguir estão exemplos de código completos com funções estendidas. Os princípios são todos baseados na lógica de redação estruturada deste artigo, ou seja, entrada clara. Esta entrada consiste em estados principais, seguido pelo processamento, que é o cálculo do ângulo, e finalmente pela saída, que é usada como um comando servo.

05Repetir ideias centrais e sugestões de ação

Ênfase no ponto central: A essência do controle do servo com botão Arduino é a transformação de "sinais digitais em sinais PWM". Os botões fornecem níveis alto e baixo, e o servo gira para o ângulo predefinido de acordo com o valor do nível.Contanto que a fiação esteja correta (o resistor pull-down não deve ser omitido) e a lógica do código use if-else ou máquina de estado, o controle estável pode ser alcançado.

Aqui estão três sugestões de ação que você pode executar imediatamente:

1. Esta noite, construirei uma versão básica: com base no diagrama de fiação e no código deste artigo, usarei a placa de ensaio para construir um circuito completo e testemunharei pessoalmente a cena do servo girando quando o botão for pressionado.

2. Explorando o experimento alterando o valor do ângulo: mude o estado de 90 graus para formas numéricas aleatórias, como 45 graus, 135 graus, 180 graus, etc., preste atenção cuidadosamente às mudanças na posição de direção causadas pela observação e, em seguida, entenda que o intervalo de parâmetros da função write() é de zero a 180 graus.

3. Adicione um segundo botão e confie no código atual para copiar o módulo de leitura do botão para obter um protótipo de produto com características interativas reais que podem ser controladas por diferentes botões em diferentes ângulos.

Você já tem todo o conhecimento essencial para obter servos controlados por botão do zero. Agora abra o Arduino IDE, conecte o hardware e verifique cada etapa você mesmo.

Hora de atualização: 29/04/2026

Impulsionando o Futuro

Entre em contato com o especialista de produtos da Kpower para recomendar um motor ou caixa de engrenagens adequado para o seu produto.

Correio para Kpower
Enviar consulta
Mensagem do WhatsApp
+86 0769 8399 3238
 
kpowerMap