Motor de passo com 2 velocidades/ uma em cada botão. AJUDA!

olá, sou novo nessa assunto, estou precisando fazer uma lógica para que o motor rode em 2 velocidades de deslocamento, e outro botão que inverta a rotação, numa velocidade qualquer.

fiz alguns testes, más, sem sucesso. peguei o IDE de controle de velocidade e fui mexendo, sem sucesso.

Se alguém poder me dar uma luz, de como posso fazer.

desde já agradeço.

Se mostrares o que já tentaste é mais fácil de ajudar...

#define sentido_horario digitalWrite(7, HIGH); // define comando para sentido horário
#define sentido_antihorario digitalWrite(7, LOW); // define comando para sentido anti-horário
#define habilita_motor digitalWrite(9, LOW); // define comando para habilitar motor
#define inibe_motor digitalWrite(9, HIGH); // define comando para desligar motor

int velocidade = 900; // Variável que informa a velocidade do motor
// 0 = motor parado e 1024 = velocidade máxima;

int habilita = 0; //Variável que guarda o resultado dos comando dos botões de liga e desliga
// Se 0 = Para Motor // Se 1 = Roda o Motor

int sentido = 1; // Variável que informa o sentido de giro do motor
// se 1 = Sentido Horário // Se 2 = Sentido anti-horário

int modo_de_operacao = 0; // Variável que guarda a combinação dos botões para o programa saber o que fazer
// Essa variável pode ter 3 valores
// 0 -> desliga motor
// 1 -> Liga o Motor no Sentido Horário
// 2 -> Liga o Motor no sentido Anti-horário

void setup()
// put your setup code here, to run once:
{
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);

pinMode(2,INPUT_PULLUP);
pinMode(4,INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
}

void loop() {
if ( !digitalRead(2))
{
habilita_motor
sentido_horario
velocidade = 200;
tone(8, velocidade);
}
if ( !digitalRead(4))
{

habilita_motor
sentido_horario
velocidade = 500;
tone(8, velocidade);
}

if ( !digitalRead(6))
{
habilita_motor
sentido_antihorario
velocidade = 500;
tone(8, velocidade);
}
else

{
inibe_motor
digitalWrite(8, LOW);

}}

basicamente é isso, quero saber também, se tem outros métodos de declarar a velocidade para subir o rpm

Onde é que viste que era boa ideia usar a função tone() para controlar motores de passo?

cara, estou usando um desse (link abaixo), para "controlar ele" tive a ideia de fazer como se fosse um gerador de pulsos. como eu disse, não tenho muita moral. preciso de algum método de aumentar a velocidade.

https://produto.mercadolivre.com.br/MLB-1072300983-driver-dm542-42a20-50v-motor-passo-200khz-cnc-promoco-_JM?quantity=1#position=13&type=item&tracking_id=901341a9-222a-4412-b471-bdefa3b6a2f3

O driver aceita frequências até 200kHz. A função tone() aceita a frequência em Hz... no entanto, o tipo de dados vai apenas até 65000.

Outra libraria que podes usar é a Timer1. Arduino Playground - Timer1

Esta dá-te muito mais controlo sobre a forma de onda que colocas e também permite atingir 200kHz que supostamente o driver aceita. De qualquer forma, vai tentando aos poucos.