LINE FOLLOWER
int edge = 700;
int leftMotor[] = {2, 3};
int rightMotor[] = {4, 5};
int irPin[] = {6, 7, 8, 9};
bool irOutput[] = {0, 0, 0, 0};
void setMotors(int l, int r)
{
if (l >= 0 && r >= 0) {
analogWrite(leftMotor[0], l);
digitalWrite(leftMotor[1], LOW);
analogWrite(rightMotor[0], r);
digitalWrite(rightMotor[1], LOW);
}
else if (l < 0 && r < 0) {
l = -l;
r = -r;
analogWrite(leftMotor[1], l);
digitalWrite(leftMotor[0], LOW);
analogWrite(rightMotor[1], r);
digitalWrite(rightMotor[0], LOW);
}
else if (l < 0 && r > 0) {
l = -l;
analogWrite(leftMotor[1], l);
digitalWrite(leftMotor[0], LOW);
analogWrite(rightMotor[0], r);
digitalWrite(rightMotor[1], LOW);
}
else if (l > 0 && r < 0) {
r = -r;
analogWrite(leftMotor[0], l);
digitalWrite(leftMotor[1], LOW);
analogWrite(rightMotor[1], r);
digitalWrite(rightMotor[0], LOW);
}
else {
analogWrite(leftMotor[0], LOW);
digitalWrite(leftMotor[1], LOW);
analogWrite(rightMotor[0], LOW);
digitalWrite(rightMotor[1], LOW);
}
}
void stop(){
setMotors(0,0);
delay(5);
}
void forword(){
setMotors(255,255);
delay(5);
}
void left(){
setMotors(0,255);
delay(5);
}
void right(){
setMotors(255,0);
delay(5);
}
void setup() {
Serial.begin(9600);
for (int i = 0; i < 2; i++) {
pinMode(leftMotor[i], OUTPUT);
pinMode(rightMotor[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(irPin[i], INPUT);
}
}
void loop() {
for(int i=0; i < 4; i++){
if(analogRead(irPin[i]) >= edge) irOutput[i] = 1;
else irOutput[i] = 0;
Serial.println("ir " + String(i+1) + " = " + String(analogRead(irPin[i])) + "\n");
//Serial.println("ir " + String(i+1) + " = " + String(irOutput[i]) + "\n");
}
delay(1000);
//conditional work
if(irOutput[0] == irOutput[3]){
if(irOutput[0] == irOutput[1]) stop();
else forword();
}
else{
if(irOutput[0] == 1) left();
else right();
}
}
int edge = 700;
int leftMotor[] = {2, 3};
int rightMotor[] = {4, 5};
int irPin[] = {6, 7, 8, 9};
bool irOutput[] = {0, 0, 0, 0};
void setMotors(int l, int r)
{
if (l >= 0 && r >= 0) {
analogWrite(leftMotor[0], l);
digitalWrite(leftMotor[1], LOW);
analogWrite(rightMotor[0], r);
digitalWrite(rightMotor[1], LOW);
}
else if (l < 0 && r < 0) {
l = -l;
r = -r;
analogWrite(leftMotor[1], l);
digitalWrite(leftMotor[0], LOW);
analogWrite(rightMotor[1], r);
digitalWrite(rightMotor[0], LOW);
}
else if (l < 0 && r > 0) {
l = -l;
analogWrite(leftMotor[1], l);
digitalWrite(leftMotor[0], LOW);
analogWrite(rightMotor[0], r);
digitalWrite(rightMotor[1], LOW);
}
else if (l > 0 && r < 0) {
r = -r;
analogWrite(leftMotor[0], l);
digitalWrite(leftMotor[1], LOW);
analogWrite(rightMotor[1], r);
digitalWrite(rightMotor[0], LOW);
}
else {
analogWrite(leftMotor[0], LOW);
digitalWrite(leftMotor[1], LOW);
analogWrite(rightMotor[0], LOW);
digitalWrite(rightMotor[1], LOW);
}
}
void stop(){
setMotors(0,0);
delay(5);
}
void forword(){
setMotors(255,255);
delay(5);
}
void left(){
setMotors(0,255);
delay(5);
}
void right(){
setMotors(255,0);
delay(5);
}
void setup() {
Serial.begin(9600);
for (int i = 0; i < 2; i++) {
pinMode(leftMotor[i], OUTPUT);
pinMode(rightMotor[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(irPin[i], INPUT);
}
}
void loop() {
for(int i=0; i < 4; i++){
if(analogRead(irPin[i]) >= edge) irOutput[i] = 1;
else irOutput[i] = 0;
Serial.println("ir " + String(i+1) + " = " + String(analogRead(irPin[i])) + "\n");
//Serial.println("ir " + String(i+1) + " = " + String(irOutput[i]) + "\n");
}
delay(1000);
//conditional work
if(irOutput[0] == irOutput[3]){
if(irOutput[0] == irOutput[1]) stop();
else forword();
}
else{
if(irOutput[0] == 1) left();
else right();
}
}
No comments :
Post a Comment
Note: Only a member of this blog may post a comment.