Marmor labyrint löpare (2 / 5 steg)
Steg 2: kod
* Du behöver programmet Arduino
* Du behöver också App SensoDuino
Antar att du fick den Arduino ansökan samt allt annat som behövs i steg ett, du kommer att ansluta din Ardunio till din dator och ladda upp koden. (Om du inte vet hur man gör det kan du klicka här hur.)
Vi använde denna kod:
< p > #include < br >< /p >< p > #define START_CMD_CHAR ' >'
#define END_CMD_CHAR "\n"
#define DIV_CMD_CHAR ',' < /p >< p > #define DEBUG 1 / / Set till 0 om du inte vill seriella produktionen av sensordata < /p >< p > / / Skapa servo objekt
Servo panServo;
Servo tiltServo; < /p >< p > / / Starta motorerna i mitten
int tiltVal = 90.
int panVal = 90. < /p >< p > / / sensoduino värden
Sträng inText;
float value0, värde1, värde2; < /p >< p > void setup() {< /p >< p > / / koppla servo objekt till Arduino pins
panServo.attach(9);
tiltServo.attach(10); < /p >< p > Serial.begin(9600); Den antagna hastigheten av HC-05 Bluetooth seriell moduler
Serial.println("\nSensoDuino 0.18 by TechBitar.com (2013).\n");
Serial.println ("Android Sensor typ nr:");
Serial.println ("1-ACCELEROMETER (m/s ^ 2 - X, Y, Z)"); < /p >< p > Serial.println ("\n\nNotera: ignorerar värden av 99.99\n\n");
Serial.flush();
} < /p >< p > void loop()
{
Serial.flush();
int inCommand = 0;
int sensorType = 0;
osignerade långa logCount = 0L; < /p >< p > char getChar = ""; Läs seriell < /p >< p > / / vänta på inkommande data
om (Serial.available() < 1) återvända; om seriell tomma, tillbaka till loop(). < /p >< p > / / tolka inkommande kommandot start flagga
getChar = Serial.read();
om (getChar! = START_CMD_CHAR) återvända; om inget kommando startar flagga, tillbaka till loop(). < /p >< p > / / tolka inkommande pin # och värde
sensorType = Serial.parseInt(); Läs sensor typr
logCount = Serial.parseInt(); Läs totala loggade sensormätningar
value0 = Serial.parseFloat(); 1. sensor värde
värde1 = Serial.parseFloat(); 2rd sensor värde om det finns
value2 = Serial.parseFloat(); 3. sensor värde om finns < /p >< p > / / Skicka sensoduino avläsningar till seriell monitor/terminal
om (DEBUG) {
Serial.Print ("sensortyp:");
Serial.println(sensorType);
Serial.Print ("Sensor log #:");
Serial.println(logCount);
Serial.Print ("Val [0]:");
Serial.println(value0);
Serial.Print ("Val [1]:");
Serial.println(value1);
Serial.Print ("Val [2]:");
Serial.println(value2);
Serial.println("---");
Delay(10);
} < /p >< p > / / inställd Accelerometer sensor
sensorType 1 är Accelerometer sensor < /p >< p > om (sensorType! = 1) återvända; < /p >< p > panVal = value0; value0 = X sensor behandlingen
tiltVal = värde1; värde1 = Y sensor läsa < /p >< p > tiltVal = karta (tiltVal, 10 -10, 0, 179); Mappa Accelerometer Y-värde för att luta servo vinkel.
tiltServo.write(tiltVal);
Delay(10); < /p >< p > panVal = karta (panVal, -10, 10, 0, 179); Mappa Accelerometer X-värde för att panorera servo vinkel.
panServo.write(panVal);
Delay(10);
} < /p >