Problema con velocidad de motor

Hola: soy nuevo en esto pero ya hice algunas practicas y voy entendiendo como funciona. Mi pregunta es si para controlar la velocidad de un motor con PWM siempre se va a repetir la secuencia ( void loop ) o sea el motor incrementa su velocida desde 0 a 255 para y vuelve ha hacer lo mismo o logre que no parara de golpe y desincrementara su velocidad. Lo que necesito saber si se puede y como hacerlo que el motor incremente la velocidad de 0 a 255 y quede ahi hasta que decida pararlo. Muchas gracias.-

Bueno hay muchas formas de hacerlo, la más simple es leyendo el estado de un botón. Si esté es "1" entonces se realizará la condición que necesitas, esto es un ejemplo pero como no das mas info. fue lo que primero que pensé

ajp57: Lo que necesito saber si se puede y como hacerlo que el motor incremente la velocidad de 0 a 255 y quede ahi hasta que decida pararlo. Muchas gracias.-

Haces un for (u otro bucle) de 0 a 255 y se incrementa en X siendo el incremento del bucle. Si necesitas que no sea rápido la progresión necesitarás pequeñas paradas, pero no uses delay() o estarás también parando el resto de código hasta que finalice. Usa millis() y haz un timer.

Otra cuestión, que hagas PWM de 0 a 255 no significa que dando un valor 50 necesariamente tu motor se mueva. En ocasiones con valores bajos oirás un pitido y el motor irá muy lento o ni se moverá, por tanto no siempre será para todos los motores 0 = parado , a veces será por ejemplo entre 80 y 255.

Un saludo.

Hola: Muchas gracias por la respuestas, no entendi bien lo de hacer otro bucle y que se incrementa x, ni lo de usar millis y hacer un timer. Si comprendo que con PWM algunos motores no arrancan de cero. Si me lo pudieras escribir el bucle o toda la secuencia ahi lo entenderia bien. Muchas gracias.

Porque no explicas bien que quieres que haga tu programa? Que vaya de 0 a máxima velocidad. Ya sabemos que usa PWM. Luego quieres que cuando presiones un pulsador se detenga. Eso es lo que deseas?

Pues publica tu programa, tu esquema y veremos por donde vas y que debes corregir.

Hola: a ver yo lo que quiero es que con un pulsador el motor arranque vaya de cero a maxima velocidad y se mantenga hasta que vuelva a pulsar y pare. Yo lo que logre hasta ahora es que arranque de cero a maxima y ahi pase de maxima a cero y empiece otra vez. Este es el Codigo. Muchas gracias.

int MOTOR=3;
int i ;

void setup(){
pinMode(MOTOR, OUTPUT);
Serial.begin(9600);
analogWrite(MOTOR, 0);
}

void loop(){
for(i=0; i<=255; i++){
analogWrite(MOTOR, i);
Serial.println(i);
delay (50);
}
for(i=255; i>=0; i–){
analogWrite(MOTOR, i);
Serial.println(i);
delay (50);
}
}

vamos que sólo tienes que poner if(digitalRead(número del pin del botón)) ¿Verdad? y un solo for claro. También tendrás que hacer tu botón funcione similar a un "interruptor" porque con los rebotes vas a tener problemas salvo que deba detenerse al soltar, en ese caso con el if tienes.

Porque tienes un código que sube y baja la PWM.

El sentido común dice que eso solo es un ejemplo para comandar un LED que brille de 0 a máximo y de nuevo hasta apagarse.

Con usar la primera parte y luego algo que le diga analgWrite(MOTOR, 0); lograrás que se apague.

Si ademas quiere que sea con un botón pues como te dijo Arduinito.