The teensy robot has to be able to follow the outside walls of room 4 either clockwise or counterclockwise.

Does your robot need a wall on the opposite to the one it is following?

The teensy robot has to be able to follow the outside walls of room 4 either clockwise or counterclockwise.

Does your robot need a wall on the opposite to the one it is following?



What is PWM? What is the benefit of using PWM pins? Which pins can be used for PWM output?
Look at this video below around 12:48 minutes into it and follow what he does.
Now try again the square pattern with more accurate performance. Copy and paste your program here.
// Square Pattern with "PWM" is pulse width modulation.
// Using the PWM pins allows the programmer to control the pulses sent to the motors.
// Pins 5 and 6 are used for PWM output.
// Darcy Chang
// 6/6/19
// Arduino 1.8.5
// Set up pins
const int OnBoardLED = 13;
int Dlay = 500;
void setup()
{
pinMode(9,OUTPUT); // set the pin modes to output
pinMode(10, OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(OnBoardLED,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}
void loop()
{
blinky(); // blink the light
forward(1000,120,120); // move forward
stopBot(1000); // briefly pause
turnRight(1,80); // turn at a right angle
}
void blinky()
{
digitalWrite(OnBoardLED, LOW); // flash on board LED
delay(Dlay);
digitalWrite(OnBoardLED, HIGH);
delay(Dlay);
}
void forward(int amt, int lWheel, int rWheel)
{
analogWrite(6,lWheel);
analogWrite(5,rWheel);
digitalWrite(9,HIGH); // make left motor move forward
digitalWrite(10,LOW);
digitalWrite(11,HIGH); // make right motor move forward
digitalWrite(12,LOW);
delay(amt);
stopBot(500);
}
void stopBot(int pause)
{
digitalWrite(9,LOW); // stop both motors
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
void turnRight(int dlay,int lWheelSpeed)
{
analogWrite(6,lWheelSpeed);
digitalWrite(9,HIGH); // make the left motor move forward
digitalWrite(10,LOW);
digitalWrite(11,LOW); // stop the right motor
digitalWrite(12,LOW);
delay(dlay);
}
Make your robot walk around a square pattern.
// Square Pattern
// 6/6/19
// Arduino 1.8.5
// Set up pins
const int OnBoardLED = 13;
int Dlay = 500;
void setup()
{
pinMode(9,OUTPUT); // set the pin modes to output
pinMode(10, OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(OnBoardLED,OUTPUT);
}
void loop()
{
blinky(); // blink the light
forward(1000); // move forward
stopBot(1000); // briefly pause
turnRight(1); // turn at a right angle
}
void blinky()
{
digitalWrite(OnBoardLED, LOW); // flash on board LED
delay(Dlay);
digitalWrite(OnBoardLED, HIGH);
delay(Dlay);
}
void forward(int amt)
{
digitalWrite(9,HIGH); // make left motor move forward
digitalWrite(10,LOW);
digitalWrite(11,HIGH); // make right motor move forward
digitalWrite(12,LOW);
delay(amt);
}
void stopBot(int pause)
{
digitalWrite(9,LOW); // stop both motors
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
void turnRight(double dlay)
{
digitalWrite(9,HIGH); // make the left motor move forward
digitalWrite(10,LOW);
digitalWrite(11,LOW); // stop the right motor
digitalWrite(12,LOW);
delay(dlay);
}
This video will show you both how to install it (if it is not installed in yours or you want to add a 2nd one) and how to program it. Mr. Patton will also talk about how ultrasonic sensors work to detect objects.
Use pin # 14 for “trig” Use pin #15 for “echo” Once you get your ultrasonic sensor working, have it moving forward and when the robot detects an object at about 15 cm, it should avoid it by changing direction.
https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/



/*
* Ultrasonic Sensor HC-SR04 and Arduino Tutorial
*
* by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
// defines variables
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}