Hardware necesario control motor

Buenos días a todos, realmente es una cuestión de hardware y software pero no sabía donde ponerla.

Soy novato en esto, perdonad si no utilizo los términos correctos.

Con el arduino MEGA he programado el ARDUINO, para que vía internet, mediante unha página HTML, poder encender y apagar un motor de 3V. Me funciona correctamente.

Mi pregunta es la siguiente: Cómo podría configurar el código, y que hardware necesitaría para, activando un pin u otro, variar la potencia al motor? Es decir, por ejemplo, activar PIN 1 potencia 50% activar PIN 2 pontencia 100%. El código que tengo ahora es este...

#include <SPI.h> 
#include <Ethernet.h> //Declaración de la direcciones MAC e IP. También del puerto 80 
byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC 
IPAddress ip(192, 168, 0, 9); //IP 
EthernetServer servidor(80); 
int PIN_LED=8; 
String readString=String(30); //lee los caracteres de una secuencia en una cadena.
//Los strings se representan como arrays de caracteres (tipo char) 
String state=String(3);
void setup() {
Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas 
servidor.begin(); 
pinMode(PIN_LED,OUTPUT);
digitalWrite(PIN_LED,LOW);
state="OFF";
}
void loop() {
  //EthernetClient Crea un cliente que se puede conectar a 
  //una dirección específica de Internet IP
EthernetClient cliente= servidor.available(); 
if(cliente) {
boolean lineaenblanco=true; 
while(cliente.connected()) {
if(cliente.available()) {
char c=cliente.read(); 
if(readString.length()<30) {
readString.concat(c);
//Cliente conectado
//Leemos petición HTTP caracter a caracter
//Almacenar los caracteres en la variable readString
} 
if(c=='\n' && lineaenblanco) //Si la petición HTTP ha finalizado 
{
int LED = readString.indexOf("LED="); 
if(readString.substring(LED,LED+5)=="LED=T") {
digitalWrite(PIN_LED,HIGH);
state="ENCENDIDO"; } 
else if (readString.substring(LED,LED+5)=="LED=F") {
digitalWrite(PIN_LED,LOW); 
state="APAGADO";
}
//Cabecera HTTP estándar
cliente.println("HTTP/1.1 200 OK"); 
cliente.println("Content-Type: text/html"); 
cliente.println(); //Página Web en HTML 
cliente.println("<html>"); 
cliente.println("<head>"); 
cliente.println("<title>MOTOR</title>"); 
cliente.println("</head>");
cliente.println("<body width=100% height=100%>"); 
cliente.println("<center>"); 
cliente.println("<h1>MOTOR</h1>");
cliente.print("

"); 
cliente.print("Posición motor: "); 
cliente.print(state); 
cliente.print("



"); 
cliente.println("<input type=submit value= ENCENDIDO style=width:200px;height:75px onClick=location.href='./?LED=T\'>"); 
cliente.println("<input type=submit value= APAGADO style=width:200px;height:75px onClick=location.href='./?LED=F\'>"); 
cliente.println("</center>"); 
cliente.println("</body>"); 
cliente.println("</html>"); 
cliente.stop();
//Cierro conexión con el cliente 
readString="";
}

Lo que tu necesitas es un PWM. (Pulse width modultion)

e parece que hay multitud de ejemplos en la web, incluso en el IDE debe de haber alguno.

Tendras que usar los pines con salida PWM del arduino y usar un TIP o un transistor para proteger el arduino de las cargas inductivas.

Suerte, googlea;
como variar el brillo de una tira led, usando un TIP y arduino, algo de eso te va a servir, es lo mismo.

-Alex.

Gracias, me hago con un PWM, y a ver qué consigo, lo comentaré por aquí.

Como que te haces con un PWM?
El PWM esta disponible en el Arduino, es simplemente hacer que una salida cambie el tiempo ON y OFF de acuerdo a lo que tu le indiques.
Lo que si necesitas es un driver de motor para comandar dicho motor.
Cualqueir motor DC se controla usando un driver como el L297 o el 298 segun la corriente.
Busca Arduino L298 o L297 y tendrás muchos tutoriales que te ubicarán en el tema.
Hay librerías y todo eso se resuelve facilmente.