Styra en Arduino med PHP (4 / 4 steg)
Steg 4: Hur det fungerar och den Arduino sidan
Varje gång trycker på en knapp på sidan case-sats händer och "fil" (egentligen port) öppnas i skrivläge, ett enda ASCII nummer är skrivna, och sedan är det stängt. Du måste stänga den varje gång, annars fungerar det inte. På Arduino sida, bara läsa i från den seriella porten med Serial.read() i loop(). Jag använde en stor om uttalande att kontrollera för varje ASCII nummer, så om 1 skickas, sedan göra en sak, om 2 skickas, göra en annan sak, etc. Eftersom du kör en PHP-server, du kan komma åt sidan på servern från var som helst i världen och det kommer att kontrollera Arduino. Här är några exempel arduino kod jag används för att styra vissa motorer:
#include < Servo.h >
Skapa först servon
Servo servo1;
Servo servo2;
int debugPin = 13. används för en led för att testa saker
int motor1Pin = 9; den första motorn portnummer
int motor2Pin = 10; den andra motorn portnummer
int usbnumber = 0; Denna variabel har vad vi läser just nu från seriell
void setup() {//call detta en gång i början
pinMode (motor1Pin, produktionen);
pinMode (debugPin, produktionen);
pinMode (motor2Pin, produktionen);
servo1.attach(motor1Pin,1000,2000);
servo2.attach(motor2Pin,1000,2000);
Serial.BEGIN(9600); Starta serieport
}
void loop() {//main loop
om (Serial.available() > 0) {//if det är något på den seriella porten, Läs det
usbnumber = Serial.read(); lagra det i variabeln usbnumber
}
om (usbnumber > 0) {//if läser vi något
om (usbnumber == 49) {
servo1.write(93);
servo2.write (93); //if läser vi 1, stopp
analogWrite (debugPin, 0);
}
om (usbnumber == 50) {
servo1.write(120);
servo2.write(120); om vi läser en 2, långsam
analogWrite (debugPin, 85);
}
om (usbnumber == 51) {
servo1.write(150);
servo2.write(150); om vi läser 3, medium
analogWrite (debugPin, 170);
}
om (usbnumber == 52) {
servo1.write(179);
servo2.write(179); om vi läser en 4, snabbt
analogWrite (debugPin, 255);
}
om (usbnumber == 53) {
servo1.write(130);
servo2.write(50); om vi läser 5, rätt
analogWrite (debugPin, 255);
}
om (usbnumber == 54) {
servo1.write(50);
servo2.write(130); om vi läser en 6, vänster
analogWrite (debugPin, 255);
}
}
usbnumber = 0; återställa
}