I want to have a sonic sensor report a value, and if that value is smaller than a certain number, I want the code to switch to a certain case.
Code:
#include <PRIZM.h> // Includes the PRIZM Library
PRIZM prizm;
int batteryVoltage;
int leftDistance;
int centerDistance;
int rightDistance;
int frontDistance;
int lineSensor;
int driveDirection;
int difference = 0;
// int difference = leftDistance - rightDistance;
u8 sensorValue[4];
float distanceForward = 30.48; // target distance forward (cm)
float wheelRadius = 4.091; // radius of drive wheels (cm)
int encoderStepsPerRevolution = 3955; // number of steps per revolution (3955 for ARC motors, 1440 for Tetrix Torqnado motors) ***Tune this number for your robot.***
int speed = 150;
void setup() {
prizm.PrizmBegin();
prizm.setMotorInvert(1, 0);
prizm.setMotorInvert(2, 1);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
sensorReadings();
if(frontDistance <= 18)
switch(driveDirection) {
case 1:
if(leftDistance >= 5.5) {
move_left();
} else {
move_right();
}
break;
}
if(rightDistance >= 4.5) {
move_left();
} else {
move_right();
}
if(difference <= 0) {
move_forwards();
}
if(centerDistance <= 18) {
move_backwards();
}
prizm.resetEncoders();
}
void sensorReadings(){
batteryVoltage = prizm.readBatteryVoltage();
leftDistance = prizm.readSonicSensorIN(2);
centerDistance = prizm.readSonicSensorIN(3);
rightDistance = prizm.readSonicSensorIN(4);
// lineSensor = prizm.readLineSensor(5);
frontDistance = prizm.readSonicSensorIN(5);
}
void move_right(){
prizm.setMotorPowers(20, 25);
delay(90);
}
void move_forwards(){
prizm.setMotorPowers(30, 30);
delay(10);
}
void move_left(){
prizm.setMotorPowers(25, 20);
delay(90);
}