Hercules: Rörelse kontrollerade Android roboten (8 / 10 steg)
Steg 8: Steg 8: programmera Arduino
1. Hämta Amarino bibliotek för Arduino (länk).
2. extrahera zip-filen till mappen: arduino_install_dir/libraries/extract_meetandroid.zip_here 3.
4. du kan fortsätta med Arduino Uno programmering.
Följande är källkoden för Arduino. Kopiera koden nedan och ladda den på Arduino:-
#include < MeetAndroid.h >
CONST int EnablePin1 = 3;
CONST int EnablePin2 = 6;
CONST int Motor_1_A = 2;
CONST int Motor_1_B = 4;
CONST int Motor_2_A = 5;
CONST int Motor_2_B = 7.
flyta data [3] = {0}.
int intdata [3] = {0}.
int jag = 1;
MeetAndroid meetAndroid(error);
makulera fel (uint8_t flagga, uint8_t värden)
{
Serial.Print ("fel:");
Serial.Print(Flag);
}
void setup() {
Serial.BEGIN(9600);
Serial.println("\t\t\t.---.");
Serial.println ("\t\t\t| Starta upp... |");
Serial.println("\t\t\t'---'");
pinMode (EnablePin1, OUTPUT);
pinMode (EnablePin2, OUTPUT);
pinMode (Motor_1_A, OUTPUT);
pinMode (Motor_1_B, OUTPUT);
pinMode (Motor_2_A, OUTPUT);
pinMode (Motor_2_B, OUTPUT);
Delay(1000);
meetAndroid.registerFunction (floatValues, "A");
}
void loop()
{
meetAndroid.receive();
}
void floatValues (byte flagga, byte numOfValues)
{
meetAndroid.getFloatValues(data);
för (int jag = 0; jag < 3; i ++)
{
meetAndroid.send(data[i]);
}
om (-10 < = data [0] < = 10) / / Detta är för framåt/bakåt
{
intdata [0] = int(data[0]);
intdata [0] = intdata [0] * 24;
om (data [0] < = -2)
{
intdata [0] = abs(intdata[0]);
digitalWrite (Motor_1_A, hög);
digitalWrite (Motor_2_A, hög);
digitalWrite (Motor_1_B, låg);
digitalWrite (Motor_2_B, låg);
analogWrite (EnablePin1, intdata[0]);
analogWrite (EnablePin2, intdata[0]);
}
annars om (data [0] > = 2)
{
digitalWrite (Motor_1_A, låg);
digitalWrite (Motor_2_A, låg);
digitalWrite (Motor_1_B, hög);
digitalWrite (Motor_2_B, hög);
analogWrite (EnablePin1, intdata[0]);
analogWrite (EnablePin2, intdata[0]);
}
annars om (-1 < = data [0] < = 1)
{
digitalWrite (Motor_1_A, låg);
digitalWrite (Motor_2_A, låg);
digitalWrite (Motor_1_B, låg);
digitalWrite (Motor_2_B, låg);
digitalWrite (EnablePin1, låg);
digitalWrite (EnablePin2, låg);
}
}
om (-10 < = data [1] < = 10) / / Detta är för sväng vänster/sväng höger
{
om (data [1] < = -2)
{
digitalWrite (Motor_1_A, hög);
digitalWrite (Motor_2_B, hög);
digitalWrite (Motor_1_B, låg);
digitalWrite (Motor_2_A, låg);
analogWrite (EnablePin1, intdata[0]);
analogWrite (EnablePin2, intdata[0]);
}
annars om (data [1] > = 2).
{
digitalWrite (Motor_1_A, låg);
digitalWrite (Motor_2_B, låg);
digitalWrite (Motor_1_B, hög);
digitalWrite (Motor_2_A, hög);
analogWrite (EnablePin1, intdata[0]);
analogWrite (EnablePin2, intdata[0]);
}
annars om (-1 < = data [1] < = 1)
{
digitalWrite (Motor_1_A, låg);
digitalWrite (Motor_2_A, låg);
digitalWrite (Motor_1_B, låg);
digitalWrite (Motor_2_B, låg);
digitalWrite (EnablePin1, låg);
digitalWrite (EnablePin2, låg);
}
}
}