Servo de 360 graus (FS90R): velocidade e direção com Arduino
Como funciona o servo de 360 graus FS90R? Parada com write(90), controle de velocidade e direção, trimpot de parada, uso como roda de robô e código PWM para ESP32 e Pico.
Um servo de 360 graus pode ter o nome de servo, mas na verdade é um pequeno motor com redução que gira continuamente, em vez de ir até um ângulo e parar ali. O mais conhecido é o FEETECH FS90R: ele tem o mesmo tamanho e os mesmos três fios de um SG90, mas o sinal enviado define sua velocidade e direção de rotação em vez de um ângulo. Como se conecta diretamente a um pino do Arduino sem driver de motor, é muito prático para rodas de pequenos robôs, plataformas giratórias e projetos como alimentadores para animais de estimação.
Neste guia, você vai aprender o que muda dentro do FS90R em comparação com um servo normal, por que o comando write(90) para o motor, como definir a velocidade e a direção pela largura do pulso e como usar o trimpot de parada para ajustar um servo que continua girando lentamente. Depois, vai movimentar um pequeno robô com dois FS90R, controlar a velocidade com um potenciômetro e experimentar a mesma coisa no ESP32 e no Raspberry Pi Pico. Por fim, vai entender por que esse servo não consegue controlar a posição e o que escolher no lugar dele.

O que é um servo de 360 graus e como ele difere de um servo normal?
Um servo normal contém um pequeno motor CC, uma caixa de redução, um circuito de controle e um potenciômetro ligado ao eixo de saída. O circuito de controle compara o ângulo solicitado pelo pulso recebido com o ângulo real lido pelo potenciômetro e gira o motor até que a diferença seja zero; quando o eixo chega ao alvo, ele para. Em um servo de rotação contínua, essa ligação de realimentação é interrompida: o potenciômetro é desconectado do eixo e fixado na posição central, e o batente mecânico das engrenagens é removido. O circuito continua calculando a “diferença entre a posição desejada e a real”, mas, como a posição real nunca muda, a diferença nunca desaparece. Assim, quanto maior a diferença, mais rápido o motor gira, e o sinal da diferença define a direção.
| Característica | SG90 (servo de 180°) | FS90R (rotação contínua de 360°) |
|---|---|---|
| O que o sinal define? | O ângulo do eixo (0–180°) | Velocidade e direção de rotação |
| Pulso de 1.500 µs | Vai até o centro (90°) e permanece ali | Para |
| 1000 µs / 2000 µs | Vai até uma extremidade ou a outra | Velocidade máxima em uma direção ou na outra |
| Realimentação interna | Potenciômetro ligado ao eixo | Nenhuma; o potenciômetro só ajusta o ponto de parada |
| Batente mecânico | Sim | Não, gira sem limite |
| Manutenção da posição | Mantém o ângulo sob carga | Não consegue; não sabe onde parou |
| Uso típico | Braços, tampas, direcionamento | Rodas, plataformas giratórias, alimentadores de rosca |
Especificações do FS90R
| Característica | Valor |
|---|---|
| Tensão de operação | 4,8–6 V |
| Velocidade sem carga | Cerca de 100–110 rpm a 4,8 V, cerca de 130 rpm a 6 V |
| Torque de travamento | Cerca de 1,3 kg·cm a 4,8 V, cerca de 1,5 kg·cm a 6 V |
| Corrente | 100–130 mA sem carga, até 800 mA a 6 V com o eixo travado |
| Sinal de controle | PWM de 50 Hz; parada em 1.500 µs, faixa útil de cerca de 900–2.100 µs |
| Nível do sinal | Funciona com sinais de 5 V e 3,3 V |
| Direção | Acima de 1.500 µs em uma direção, abaixo na outra (visto pelo eixo de saída, acima de 1.500 µs é o sentido anti-horário) |
| Peso e dimensões | 9 g, cerca de 23 × 12 × 22 mm (mesmo corpo do SG90) |
| Fios | Marrom GND, vermelho VCC, laranja sinal |
Ligação do FS90R: Arduino Uno, ESP32 e Pico
| Fio do servo | Função | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|---|
| Marrom | GND | GND | GND | GND |
| Vermelho | Alimentação de 4,8–6 V | 5V (um único servo) ou fonte externa de 5 V | VIN / 5V ou fonte externa de 5 V | VBUS (5 V) ou fonte externa de 5 V |
| Laranja | Sinal PWM | D9 | GPIO 18 | GP15 |
O pino 5V do Uno é suficiente para acionar um único FS90R sem carga. Quando a roda do servo encosta no chão ou dois servos partem juntos, a corrente sobe para algumas centenas de miliampères; a tensão do USB cai, o Arduino pode reiniciar ou os servos podem tremer. Por isso, em um robô, alimente os servos com uma fonte separada de 5 V (4 pilhas NiMH, um regulador de 5 V ou uma fonte de alimentação adequada), sempre conecte o GND da alimentação dos servos ao GND do Arduino e adicione um capacitor de 470 µF perto dos fios dos servos. O sinal de 3,3 V do ESP32 e do Pico é suficiente para o FS90R; o servo em si ainda deve ser alimentado com 5 V, não pelo pino de 3,3 V.
write(90) = parar: como a largura do pulso se transforma em velocidade?
O sinal de controle do servo é um pulso enviado 50 vezes por segundo (a cada 20 ms), e o que importa é a duração do pulso. Para o FS90R, 1.500 µs significa “parar”. Conforme o pulso fica mais longo que 1.500 µs, o servo acelera em uma direção; conforme fica mais curto, acelera na outra; ele atinge a velocidade máxima por volta de 1.000 µs e 2.000 µs, e além disso a velocidade quase não aumenta. Por isso, write(90) na biblioteca Servo do Arduino significa parar, e write(0) e write(180) significam velocidade máxima em cada direção. Há uma pequena armadilha aqui: por padrão, a biblioteca mapeia 0–180 para a faixa de 544–2.400 µs, então write(90) na verdade gera 1.472 µs. Essa diferença pode ser suficiente para o servo girar lentamente mesmo com write(90). A solução é reduzir a faixa com attach(9, 1000, 2000) ou usar writeMicroseconds(1500) diretamente.
| Pulso | Equivalente em Servo.write (com attach(pin, 1000, 2000)) | Comportamento do FS90R |
|---|---|---|
| 1000 µs | write(0) | Velocidade máxima, sentido horário |
| 1300 µs | write(54) | Velocidade média, sentido horário |
| 1461 µs | write(83) | Muito devagar, sentido horário |
| 1500 µs | write(90) | Parado (se o trimpot estiver ajustado corretamente) |
| 1538 µs | write(97) | Muito devagar, sentido anti-horário |
| 1700 µs | write(126) | Velocidade média, sentido anti-horário |
| 2000 µs | write(180) | Velocidade máxima, sentido anti-horário |
Primeiro sketch: avançar, parar, recuar
1// FS90R ilk test: ileri, dur, geri / FS90R first test: forward, stop, backward
2#include <Servo.h>
3
4Servo teker; // sürekli dönüş servosu / continuous rotation servo
5
6void setup() {
7 teker.attach(9, 1000, 2000); // write(0..180) artık 1000..2000 µs üretir / write(0..180) now outputs 1000..2000 µs
8}
9
10void loop() {
11 teker.write(180); // tam hız bir yöne / full speed one way
12 delay(2000);
13 teker.write(90); // 1500 µs: dur / 1500 µs: stop
14 delay(1000);
15 teker.write(0); // tam hız ters yöne / full speed the other way
16 delay(2000);
17 teker.write(110); // yavaş / slow
18 delay(2000);
19 teker.writeMicroseconds(1500); // durmanın en kesin yolu / the most precise way to stop
20 delay(1000);
21}O sketch associa o servo ao D9 e, com attach(9, 1000, 2000), mapeia a escala de write() para a faixa que o FS90R realmente usa, de modo que write(90) seja exatamente 1.500 µs. A velocidade não acompanha o pulso de forma linear: bem perto de 1.500 µs há uma zona morta de algumas dezenas de microssegundos em que o servo não se move; na faixa de 1.500 ± 300 µs, a velocidade sobe rapidamente e, perto das extremidades, fica quase constante. Se você quer um movimento lento e preciso, mantenha os valores próximos de 1.500 µs. A ideia geral da largura de pulso está em O que é PWM, e o controle de ângulo com servos normais em O que é um servo motor.
Ajuste do trimpot de parada (centro)
- Carregue o sketch de calibração abaixo; o servo recebe um sinal de 1.500 µs e normalmente deve parar.
- Se o servo girar lentamente, encontre o pequeno orifício na lateral da carcaça, perto da saída do cabo; dentro dele fica o trimpot que ajusta o ponto de parada.
- Gire o trimpot bem pouco com uma pequena chave de fenda ou Phillips; se o servo desacelerar, você está girando na direção certa.
- Continue em pequenos passos até o servo parar completamente e até o zumbido fraco desaparecer. O trimpot é muito sensível; mesmo um quarto de volta já é demais.
- Se preferir não mexer no trimpot, envie + e - pelo Monitor Serial para encontrar o valor de pulso em que o servo para e use esse valor no lugar de 1500 no código.
1// Durma noktası ayarı: Serial Monitor'den µs değeri gönder
2// Stop point calibration: send a µs value from the Serial Monitor
3#include <Servo.h>
4
5Servo teker;
6int darbe = 1500; // başlangıç: teorik durma noktası / start: theoretical stop point
7
8void setup() {
9 Serial.begin(9600);
10 teker.attach(9);
11 teker.writeMicroseconds(darbe);
12 Serial.println(F("Sayi yaz (900-2100) ya da + / - gonder"));
13 Serial.println(F("Type a number (900-2100) or send + / -"));
14}
15
16void loop() {
17 if (Serial.available()) {
18 char c = Serial.peek();
19 if (c == '+') { Serial.read(); darbe += 5; } // 5 µs artır / add 5 µs
20 else if (c == '-') { Serial.read(); darbe -= 5; } // 5 µs azalt / subtract 5 µs
21 else if (isDigit(c)) darbe = Serial.parseInt(); // doğrudan değer / direct value
22 else { Serial.read(); return; } // satır sonu vb. atla / skip line endings etc.
23
24 darbe = constrain(darbe, 900, 2100);
25 teker.writeMicroseconds(darbe);
26 Serial.print(F("Darbe / pulse: "));
27 Serial.print(darbe);
28 Serial.println(F(" us"));
29 }
30}Controle de velocidade e direção com potenciômetro
1// Potansiyometreyle hız ve yön: ortada dur, sağa ileri, sola geri
2// Speed and direction with a pot: centre = stop, right = forward, left = backward
3#include <Servo.h>
4
5const int POT_PIN = A0;
6const int OLU_BOLGE = 40; // ortadaki ±40 adım: kesin dur / ±40 steps in the middle: solid stop
7Servo teker;
8
9void setup() {
10 teker.attach(9);
11}
12
13void loop() {
14 int okuma = analogRead(POT_PIN) - 512; // -512 ... +511
15 int darbe = 1500; // varsayılan: dur / default: stop
16 if (okuma > OLU_BOLGE) {
17 darbe = map(okuma, OLU_BOLGE, 511, 1540, 2000); // ileri, yavaştan hızlıya / forward, slow to fast
18 } else if (okuma < -OLU_BOLGE) {
19 darbe = map(okuma, -OLU_BOLGE, -512, 1460, 1000); // geri / backward
20 }
21 teker.writeMicroseconds(darbe);
22 delay(20); // servo periyodu kadar / one servo period
23}Com o potenciômetro conectado entre 5V, A0 e GND, a posição central significa parar, girar para a direita significa avançar e girar para a esquerda significa recuar. O código define uma zona morta de ±40 passos no centro, para que o servo pare de forma confiável mesmo que o potenciômetro não esteja exatamente centralizado ou que as leituras oscilem um pouco. Fora da zona morta, o valor é mapeado para 1.540–2.000 µs ou 1.460–1.000 µs, de modo que girar um pouco o botão faça o servo girar devagar, e girá-lo até o fim dê velocidade máxima. Você pode aplicar a mesma ideia com um joystick; a ligação do potenciômetro está em O que é um potenciômetro.
O FS90R como roda de um pequeno robô
O FS90R é tão popular em robôs por ser simples: com a caixa de redução e o circuito de acionamento integrados, você não precisa de driver de motor, ponte H ou encoder separados; um pino de sinal por roda é suficiente. Os dois servos são montados em lados opostos do chassi, espelhados, então, para avançar, um deve girar no sentido horário e o outro no anti-horário. O código abaixo trata disso dentro da função surus(); você só informa uma velocidade entre -100 e +100. Uma roda de 60 mm girando a 130 rpm com 6 V percorre cerca de 0,4 metro por segundo; a 4,8 V, isso cai para cerca de 0,3 m/s.
1// İki FS90R ile küçük robot: tekerlekler ayna gibi takılır
2// A small robot with two FS90Rs: the wheels are mounted as mirror images
3#include <Servo.h>
4
5Servo sol, sag;
6const int DUR_SOL = 1500; // kalibrasyonla bulduğun değerler / values you found during calibration
7const int DUR_SAG = 1500;
8
9// hiz: -100 (tam geri) ... +100 (tam ileri) / speed: -100 (full back) ... +100 (full forward)
10void surus(int hizSol, int hizSag) {
11 sol.writeMicroseconds(DUR_SOL + hizSol * 5); // sol teker normal yönde / left wheel normal direction
12 sag.writeMicroseconds(DUR_SAG - hizSag * 5); // sağ teker ters takılı / right wheel is mounted reversed
13}
14
15void setup() {
16 sol.attach(9);
17 sag.attach(10);
18 surus(0, 0);
19 delay(1000);
20}
21
22void loop() {
23 surus(80, 80); delay(1500); // ileri / forward
24 surus(0, 0); delay(500); // dur / stop
25 surus(-60, 60); delay(600); // yerinde sola dön / spin left in place
26 surus(60, 60); delay(1000);
27 surus(30, 80); delay(1500); // sola doğru yay çiz / curve to the left
28 surus(-80, -80); delay(1000); // geri / backward
29 surus(0, 0); delay(2000);
30}Dois servos nunca giram exatamente na mesma velocidade; se o robô desviar para um lado em vez de seguir reto, calibre o valor de parada de cada servo (DUR_SOL, DUR_SAG) separadamente e reduza um pouco o fator do mais rápido. O torque de 1,5 kg·cm do FS90R é adequado para pequenos robôs que pesem no máximo algumas centenas de gramas; para um chassi mais pesado ou rodas grandes, um motor CC com L298N ou motores com redução são a melhor escolha. Com pilhas, 4 células NiMH (4,8 V) fornecem a tensão ideal; 4 pilhas alcalinas novas podem chegar a 6,4 V e ultrapassar o limite do servo. Para uma montagem completa com chassi e sensores, veja Como fazer um carrinho robô com Arduino.
FS90R com ESP32
A biblioteca Servo do Arduino não funciona no ESP32; instale a biblioteca ESP32Servo pelo Gerenciador de Bibliotecas. O uso é quase igual, exceto por definir explicitamente 50 Hz com setPeriodHertz(50). Quase qualquer GPIO capaz de gerar PWM serve para o sinal; apenas GPIO 34–39, que são somente entradas, não podem ser usados para isso. Conecte o fio vermelho do servo ao pino VIN (5 V do USB) do ESP32 ou a uma fonte externa de 5 V, não ao pino 3V3. O código abaixo acelera o servo suavemente da parada até a velocidade máxima, depois desacelera e inverte a direção; o Monitor Serial mostra a duração do pulso a cada passo.
1// ESP32 + FS90R: ESP32Servo kütüphanesiyle hız rampası
2// ESP32 + FS90R: a speed ramp with the ESP32Servo library
3#include <ESP32Servo.h>
4
5const int SERVO_PIN = 18; // PWM verebilen herhangi bir GPIO / any PWM-capable GPIO
6Servo teker;
7
8void setup() {
9 Serial.begin(115200);
10 teker.setPeriodHertz(50); // standart servo frekansı / standard servo frequency
11 teker.attach(SERVO_PIN, 1000, 2000);
12 teker.writeMicroseconds(1500); // dur / stop
13 delay(1000);
14}
15
16void loop() {
17 for (int us = 1500; us <= 2000; us += 25) { // yavaşça hızlan / speed up gently
18 teker.writeMicroseconds(us);
19 Serial.println(us);
20 delay(200);
21 }
22 for (int us = 2000; us >= 1000; us -= 25) { // yavaşla, dur, ters yöne hızlan / slow down, stop, reverse
23 teker.writeMicroseconds(us);
24 Serial.println(us);
25 delay(200);
26 }
27 teker.writeMicroseconds(1500);
28 delay(2000);
29}FS90R com Raspberry Pi Pico e MicroPython
No Pico, você não precisa de biblioteca extra: configure o objeto machine.PWM para 50 Hz e informe a duração do pulso em nanossegundos com duty_ns(). A função hiz() no código converte um valor entre -100 e +100 em 1.000–2.000 µs; basta colocar o valor de parada encontrado na sua calibração na linha DUR_US. Quando o programa é interrompido com Ctrl+C, o servo também para; caso contrário, o PWM continua funcionando com o último valor e a roda continua girando. Alimente o servo pelo pino VBUS do Pico (os 5 V do USB). Se você está começando com MicroPython, leia primeiro Fundamentos de MicroPython.
1# Raspberry Pi Pico (MicroPython) + FS90R: hız -100 ... +100
2# Raspberry Pi Pico (MicroPython) + FS90R: speed -100 ... +100
3from machine import Pin, PWM
4import time
5
6servo = PWM(Pin(15))
7servo.freq(50) # 20 ms periyot / 20 ms period
8DUR_US = 1500 # kalibrasyonla bulduğun durma noktası / your calibrated stop point
9
10def hiz(yuzde):
11 yuzde = max(-100, min(100, yuzde))
12 us = DUR_US + yuzde * 5 # -100 -> 1000 µs, +100 -> 2000 µs
13 servo.duty_ns(us * 1000)
14
15try:
16 while True:
17 for h in (50, 100, 0, -50, -100, 0):
18 hiz(h)
19 print("Hiz / speed:", h)
20 time.sleep(2)
21except KeyboardInterrupt:
22 hiz(0) # durdurunca teker dönmeye devam etmesin / stop the wheel on exit
23 servo.deinit()Ideias de projetos com servo de 360 graus
- Mini robô seguidor de linha: Um chassi leve com dois FS90R e dois sensores infravermelhos; a lógica está em robô seguidor de linha.
- Robô que desvia de obstáculos: Adicione um HC-SR04 na frente para que ele gire no lugar e mude de direção ao detectar um obstáculo.
- Carrinho controlado pelo celular: Envie comandos pelo celular com um módulo Bluetooth HC-05.
- Alimentador para animais de estimação: Faça o FS90R girar uma rosca sem-fim para que a ração caia em horários definidos por um temporizador.
- Plataforma giratória de exposição: Uma plataforma que gira bem devagar para fotos de produtos ou tomadas em time-lapse; ajuste a velocidade com valores próximos de 1.500 µs.
- Pequeno guincho ou acionador de cortina: Enrole um cordão leve, com duas chaves de fim de curso nas extremidades para parar o motor no lugar certo.
Problemas comuns e soluções
| Sintoma | Causa provável | Solução |
|---|---|---|
| Gira lentamente mesmo com write(90) | A escala padrão gera 1.472 µs ou o trimpot de parada está desajustado | Use attach(pin, 1000, 2000) ou writeMicroseconds(1500) e ajuste o trimpot |
| O servo não gira de jeito nenhum | Pino de sinal errado, GND não compartilhado ou o produto é, na verdade, um servo de posição | Confira o número do pino e a conexão do GND e verifique se é um servo de rotação contínua |
| O servo treme e o Arduino reinicia | A alimentação USB não suporta os picos de corrente | Alimente os servos com uma fonte externa de 5 V, una os GNDs e adicione um capacitor de 470 µF |
| Mudar o pulso de 1.000 µs para 1.200 µs quase não altera a velocidade | Perto das extremidades, o servo já está na velocidade máxima; a velocidade satura | Para controle fino de velocidade, use a faixa de 1.500 ± 300 µs |
| O robô não segue reto | Os dois servos diferem na velocidade e no ponto de parada | Calibre cada servo separadamente e reduza o fator do mais rápido |
| O servo esquenta e faz zumbido, mas não gira | O eixo está bloqueado ou a carga é pesada demais | Remova a obstrução e reduza a carga; o travamento danifica as engrenagens e o motor |
| Erro de compilação ou ausência de sinal no ESP32 | Foi usada a biblioteca Servo exclusiva para AVR ou foram escolhidos GPIO 34–39 | Instale a biblioteca ESP32Servo e escolha um GPIO que possa funcionar como saída |
O FS90R é a maneira mais fácil de controlar um mecanismo que gira continuamente com um único pino e sem driver de motor: ele para em 1.500 µs, gira nos dois sentidos na velocidade que você quiser e já vem pronto para acionar rodas de pequenos robôs. Ajuste o ponto de parada uma vez, lembre-se de usar um servo normal ou um motor de passo para tarefas que exigem controle de posição, e ele funcionará sem problemas por muito tempo. No app BlueGrays, você encontra fundamentos de servos, controle de servo com potenciômetro e joystick, construção de um servo de 360 graus a partir de um motor de passo e projetos de carrinhos robôs, com diagramas de fiação passo a passo e código pronto para usar.
Perguntas frequentes
Como parar um servo de 360 graus?
Servos de rotação contínua como o FS90R param ao receber um pulso de 1.500 µs; no Arduino, você usa writeMicroseconds(1500), ou write(90) depois de associar o servo com attach(pin, 1000, 2000). Se ele ainda girar lentamente com esse valor, ajuste o pequeno trimpot na carcaça com uma chave de fenda ou use no código o valor em que o seu servo realmente para.
Qual é a diferença entre um servo de 360 graus e um servo normal?
Um servo normal vai até um ângulo específico de acordo com o sinal e permanece ali, porque o potenciômetro interno mede a posição do eixo. Um servo de rotação contínua de 360 graus não tem essa realimentação; o sinal define a velocidade e a direção em vez de um ângulo, e o servo gira sem limite.
Um servo de 360 graus pode controlar o ângulo?
Não. O FS90R não sabe onde seu eixo está, então não consegue ir até um ângulo específico e parar. Fazê-lo girar por um tempo definido dá um resultado aproximado, mas que varia com a tensão e a carga. Se precisar de um ângulo, use um servo normal, um motor de passo ou um motor com encoder.
Com qual tensão o FS90R funciona?
O FS90R funciona com 4,8–6 V; em projetos com Arduino, normalmente é alimentado com 5 V. Sua linha de sinal aceita níveis de 5 V e 3,3 V, então pode ser usado diretamente com ESP32 e Raspberry Pi Pico, mas a alimentação ainda deve ser de 5 V.
Quantos FS90R posso conectar a um Arduino?
A biblioteca Servo suporta até 12 servos no Arduino Uno, mas o limite real é a corrente. Cada FS90R pode consumir algumas centenas de miliampères sob carga e até 800 mA com o eixo travado, então sempre alimente mais de dois servos com uma fonte externa de 5 V e una os GNDs.
É possível converter um SG90 em um servo de 360 graus?
Sim, mas é uma mudança permanente. Você abre o servo, corta o batente mecânico da engrenagem e desconecta o potenciômetro do eixo, substituindo-o por dois resistores iguais ou fixando-o na posição central. O resultado funciona como um FS90R, mas a garantia é perdida e o servo nunca mais consegue manter um ângulo; comprar um FS90R pronto costuma dar menos trabalho.
Projetos para montar depois desta leitura
Ver todos os projetos
Uso de servo motor
O braço de um pequeno servo motor gira para três posições em sequência: o início, o meio e o fim do percurso, esperando dois segundos em cada parada. O Arduino informa ao motor em qual ângulo ficar, e

Uso de servo motor com potenciômetro
Conforme você gira o botão do potenciômetro, o braço do servo motor gira junto: uma extremidade do botão corresponde a zero grau, e a outra, a meia volta. O Arduino lê continuamente a posição do botão

Servo motor com ESP32 (controle por potenciômetro)
Neste projeto, controlamos um servo motor SG90 com um potenciômetro. Ajustamos o ângulo do servo mapeando o valor analógico lido do potenciômetro para a faixa de 0 a 180 graus. A biblioteca ESP32Servo gera sinais para o servo nos GPIOs do ESP32 adequados e capazes de operar como saída; este projeto usa o GPIO 18. Esse é um método básico de controle para braços robóticos, estabilizadores de câmera e mecanismos de portas automáticas.

Controle de servos com joystick
Controle dois motores com um joystick, como ao girar uma câmera de segurança. Empurre a alavanca para os lados e o servo motor inferior gira lentamente; mova para cima ou para baixo e o servo superior

Servo motor de 360 graus com motor de passo
Ensine um motor de passo comum a ir até qualquer ângulo que você quiser, ao longo de uma volta completa. O Arduino calcula quantos passos correspondem a cada ângulo; o motor vai para 0, 90, 45, 180, 1

Carrinho controlado por Bluetooth com L298N
Transforme seu celular em um controle remoto e dirija seu próprio carrinho robô. O Arduino recebe os comandos de um aplicativo de controle remoto no celular por meio de um módulo Bluetooth e aciona as

Robô que desvia de obstáculos
Que tal construir um veículo inteligente que encontra seu próprio caminho? O robô que desvia de obstáculos monitora o ambiente constantemente com o sensor ultrassônico na parte da frente. Ao encontrar
Mais artigos
App BlueGrays
Monte este circuito passo a passo pelo celular
Esquema do circuito, código e lista de componentes em uma só tela. Mais de 200 projetos com Arduino, ESP32 e Pico prontos para montar.
Escaneie com seu celular
Aponte a câmera para o código para abrir a loja de aplicativos do seu celular.
ou abrir a loja

