I'm trying to implement it based on the questions you asked and answered I'm struggling because I can't understand the expression of the queue accurately...
#define FORWARD 1
#define BACKWARD 2
#define LEFT 3
#define RIGHT 4
#define MAX 10
constant buttonPin0 = 7; // Start button
constant buttonPin1 = 8; //front button
constant buttonPin2 = 9; //Back button
constint buttonPin3 = 10; // right button
constant buttonPin4 = 11; // Left button
constint in1pin = 2; //left motor
constint in2pin = 3; //left motor
constint in3pin = 4; // right motor
constint in4pin = 5; // right motor
int buttonStateOK = 1;
int buttonStateGO = 1;
int buttonStateBACK = 1;
int buttonStateLEFT = 1;
int buttonStateRIGHT = 1;
int queue_array[MAX];
int rear = 0; //Position to write
int front = -1;//Position to read
int nextPosition(int position) {
return (position + 1) % MAX;
}
void insert(int add_item)
{
if (queue_array[rear] == BLANK)
{
if (front == -1)
{
front = 0;
}
queue_array[rear] = add_item;
rear = nextPosition(rear);
printf("insert %d\n", add_item);
}
else {
printf("insert %d ignored\n", add_item);
}
}
int read() {
if (front >= 0) {
if (queue_array[front] != BLANK) {
int ret = queue_array[front];
queue_array[front] = BLANK;
front = nextPosition(front);
return ret;
}
}
return BLANK;
}
void reset() {
rear = 0;
front = -1;
for (int i = 0; i<MAX; i++) {
queue_array[i] = BLANK;
}
}
void setup() {
int queue_array[MAX];
pinMode(buttonPin0, INPUT_PULLUP);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);
pinMode(buttonPin4, INPUT_PULLUP);
pinMode(buttonPin5, INPUT_PULLUP);
pinMode(in1pin, OUTPUT);
pinMode(in2pin, OUTPUT);
pinMode(in3pin, OUTPUT);
pinMode(in4pin, OUTPUT);
}
void loop() {
// Read button(s) status
buttonStateOK = digitalRead(buttonPin0);
buttonStateGO = digitalRead(buttonPin1);
buttonStateBACK = digitalRead(buttonPin2);
buttonStateLEFT = digitalRead(buttonPin3);
buttonStateRIGHT = digitalRead(buttonPin4);
buttonStateSTART = digitalRead(buttonPin5);
if (buttonStateGO == LOW) {
insert(FORWARD);
}
else if (buttonStateBACK == LOW) {
insert(BACKWARD);
}
else if (buttonStateLEFT == LOW) {
insert(LEFT);
}
else if (buttonStateRIGHT == LOW) {
insert(RIGHT);
}
else if (buttonStateOK == LOW) {
while (read() != BLANK) {
if (read() == FORWARD) {
// Motor Operation - Forward
digitalWrite(in1pin, HIGH);
digitalWrite(in2pin, LOW);
digitalWrite(in3pin, HIGH);
digitalWrite(in4pin, LOW);
delay(1500);
digitalWrite(in1pin, HIGH);
digitalWrite(in2pin, HIGH);
digitalWrite(in3pin, HIGH);
digitalWrite(in4pin, HIGH);
} } else if (read() == BACKWARD) {
// Motor motion - reverse.
digitalWrite(in1pin, LOW);
digitalWrite(in2pin, HIGH);
digitalWrite(in3pin, LOW);
digitalWrite(in4pin, HIGH);
delay(2000);
digitalWrite(in1pin, HIGH);
digitalWrite(in2pin, HIGH);
digitalWrite(in3pin, HIGH);
digitalWrite(in4pin, HIGH);
} } else if (read() == LEFT) {
// Motor Operation - Left
digitalWrite(in1pin, LOW);
digitalWrite(in2pin, HIGH);
digitalWrite(in3pin, HIGH);
digitalWrite(in4pin, LOW);
delay(995);
digitalWrite(in1pin, HIGH);
digitalWrite(in2pin, HIGH);
digitalWrite(in3pin, HIGH);
digitalWrite(in4pin, HIGH);
} } else if (read() == RIGHT) {
// Motor Operation - Right
digitalWrite(in1pin, HIGH);
digitalWrite(in2pin, LOW);
digitalWrite(in3pin, LOW);
digitalWrite(in4pin, HIGH);
delay(995);
digitalWrite(in1pin, HIGH);
digitalWrite(in2pin, HIGH);
digitalWrite(in3pin, HIGH);
digitalWrite(in4pin, HIGH);
}
}
reset();
}
}
Please give me some advice.
arduino
First of all, I think you need to understand Q.
We're using a queue to take out the input value and write it down one by one. Please refer to the following link.
http://www.logonluv.com/2015/02/datastructure-queue.html?m=1
The code I uploaded last time is an array of simple circulation queues.
573 rails db:create error: Could not find mysql2-0.5.4 in any of the sources
916 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
582 PHP ssh2_scp_send fails to send files as intended
613 GDB gets version error when attempting to debug with the Presense SDK (IDE)
© 2024 OneMinuteCode. All rights reserved.