//L293D
// connect motor controller pins to Arduino digital pins
// motor one
char input;
boolean x = false;
boolean timer = true;
int enA = 12;
int in1 = 11;
int in2 = 10;
// motor two
int enB = 8;
int in3 = 9;
int in4 = 7;
void setup()
{
// set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
Serial.println(">> START <<");
}
void demoOne()
{
if(Serial.available() >= 0)
{
input = Serial.read();
if(input=='k')
{
Serial.println("ON");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, 200);
analogWrite(enB, 200);
}
else if(input == 'q')
{
Serial.println("REVERSE");
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, 200);
analogWrite(enB, 200);
}
else if(input == 'l')
{
x = false;
Serial.println("OFF");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
else if(input == 'c')
{
Serial.println("CIRCLE MODE");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enA, 200);
analogWrite(enB, 200);
}
// THIS IS THE HIGHLIGHTED CODE THAT I NEED HELP WITH
else if(input == 'i')
{
for(x == true; x = true;)
{
if(x == false)
{
break;
}
Serial.println("FIGURE EIGHT MODE");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, 200);
analogWrite(enB, 200);
delay(1000);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enA, 200);
analogWrite(enB, 200);
delay(1000);
}
}
else if(input == 'r')
{
Serial.println("CIRCLE MODE");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, 200);
analogWrite(enB, 200);
}
else
{
Serial.println("NO INPUT");
Serial.println(input);
delay(1000);
}
}
/* this function will run the motors in both directions at a fixed speed
// turn on motor A
// digitalWrite(in1, HIGH);
// digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
// analogWrite(enA, 200);
// turn on motor B
// digitalWrite(in3, HIGH);
// digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 200);
delay(2000);
// now change motor directions
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW); */
}
void demoTwo()
{
/* this function will run the motors across the range of possible speeds
// note that maximum speed is determined by the motor itself and the operating voltage
// the PWM values sent by analogWrite() are fractions of the maximum speed possible
// by your hardware
// turn on motors
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// accelerate from zero to maximum speed
for (int i = 0; i < 256; i++)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// decelerate from maximum speed to zero
for (int i = 255; i >= 0; --i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW); */
}
void loop()
{
demoOne();
}
答案 0 :(得分:0)
Arduino循环与您在正常代码段中编写的循环不完全相同。我喜欢为我的arduino程序做的是声明一个名为&#34; isOn&#34;的全局布尔变量。或类似的东西。如果用if语句包围整个循环,检查是否为真,那么你将能够通过改变这个全局变量的值来关闭你的数字8循环,这样你的循环就会停止运行。 Break语句不会像你在过去做过的其他编程一样对整个循环起作用。