Paso 4: Cómo funciona y el lado de Arduino
Cada vez que se presiona un botón en la página, sucede la sentencia case y el "fichero" (realmente el puerto) se abre, poner en modo de escritura, se escribe un número ASCII y luego se cierra. Tienes que cerrarla cada vez que lo contrario no funcionará. En el lado de Arduino, simplemente leer en el puerto serie usando Serial.read() en el loop(). Usé un gran si declaración para verificar cada número de ASCII, así que si se envía 1, luego hacer una cosa, si se envía 2, hacer otra cosa, etc.. Puesto que se está ejecutando un servidor PHP, puede acceder a la página en el servidor desde cualquier lugar del mundo y se controlará el Arduino. Aquí está algún código de arduino de ejemplo que utiliza para controlar algunos motores:#include < Servo.h >
En primer lugar, establecer los servos
Servo1 servo;
Servo servo2;
int debugPin = 13; utiliza para un led para probar cosas
int motor1Pin = 9; número de puerto del primer motor
int motor2Pin = 10; número de puerto del 2 ° motor
int usbnumber = 0; Esta variable es lo que nosotros estamos leyendo de la serie
void setup() {//call una vez al principio
pinMode (motor1Pin, salida);
pinMode (debugPin, salida);
pinMode (motor2Pin, salida);
servo1.Attach(motor1Pin,1000,2000);
servo2.Attach(motor2Pin,1000,2000);
Serial.Begin(9600); puesta en marcha de puerto serie
}
void loop() {//main lazo
Si (Serial.available() > 0) {//if allí es cualquier cosa en el puerto serie, leer
usbnumber = Serial.read(); almacenarlo en la variable usbnumber
}
Si (usbnumber > 0) {//if leemos algo
Si (usbnumber == 49) {}
servo1.Write(93);
servo2.Write (93); //if leemos una 1, parada
analogWrite (debugPin, 0);
}
Si (usbnumber == 50) {}
servo1.Write(120);
servo2.Write(120); Si leemos un 2, lento
analogWrite (debugPin, 85);
}
Si (usbnumber == 51) {}
servo1.Write(150);
servo2.Write(150); Si leemos una media de 3,
analogWrite (debugPin, 170);
}
Si (usbnumber == 52) {}
servo1.Write(179);
servo2.Write(179); Si leemos un 4, rápido
analogWrite (debugPin, 255);
}
Si (usbnumber == 53) {}
servo1.Write(130);
servo2.Write(50); Si leemos un 5, derecho
analogWrite (debugPin, 255);
}
Si (usbnumber == 54) {}
servo1.Write(50);
servo2.Write(130); Si leemos a 6, de la izquierda
analogWrite (debugPin, 255);
}
}
usbnumber = 0; RESET
}