I helped Andrew work on an early version of the robot drive chassis. It is mainly used to be an idea of what the size could be for the final robot with the supplies that we could find in our lab. There is a possibility that we might need to modify and machine some of the parts to get the chassis to a point of satisfaction.
This Is the Blog for Ret 260 Robotic Systems Project "Project Palmer" designed by Nicholas Alioto, Andrew Baden and Matt Mannino. Ret 260 is a final project for the Robotic Engineering Technology degree at California University of Pennsylvania.
Tuesday, February 18, 2014
Ultrasonic Programming- Matt Mannino
While we are in the process of waiting for parts to come in, we started working on some of the programming. Since we already have the Ultrasonic sensor, I started working on a program for the "hopper". This program uses the Parallax 2x16 Serial LCD backlit display, the Parallax Ultrasonic Ping sensor, and the Arduino Mega. The current version displays current readings from the Ultrasonic Sensor on the LCD display. It is in the process of being able to detect if the hopper is full or not.
#include <SoftwareSerial.h>
const int TxPin = 18;
const int pingPin = 30;
SoftwareSerial mySerial = SoftwareSerial(255, TxPin);
void setup()
{
// initialize serial communication:
Serial.begin(9600);
}
void loop()
{
// establish variables for duration of the ping,
// and the distance result in inches and centimeters:
long duration, inches, cm;
int timer = 0;
pinMode(TxPin, OUTPUT);
digitalWrite(TxPin, HIGH);
mySerial.begin(9600);
delay(100);
mySerial.write(12); // Clear
mySerial.write(17); // Turn backlight on
delay(5); // Required delay
// The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
// The same pin is used to read the signal from the PING))): a HIGH
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
mySerial.print(inches);
mySerial.print("in, ");
mySerial.print(cm);
mySerial.print("cm");
mySerial.println();
delay(5);
if(inches < 3)
{
mySerial.write(13);
mySerial.print("Filling");
if(timer > 10)
{
mySerial.write(13);
mySerial.write(12); // Clear
mySerial.print("Hopper Full");
}
timer ++;
}
else
{
mySerial.write(13);
mySerial.print("Empty");
}
}
long microsecondsToInches(long microseconds)
{
// According to Parallax's datasheet for the PING))), there are
// 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
// second). This gives the distance travelled by the ping, outbound
// and return, so we divide by 2 to get the distance of the obstacle.
// See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}
![]() |
The setup with the Ping sensor and LCD display |
![]() |
LCD display showing current status |
#include <SoftwareSerial.h>
const int TxPin = 18;
const int pingPin = 30;
SoftwareSerial mySerial = SoftwareSerial(255, TxPin);
void setup()
{
// initialize serial communication:
Serial.begin(9600);
}
void loop()
{
// establish variables for duration of the ping,
// and the distance result in inches and centimeters:
long duration, inches, cm;
int timer = 0;
pinMode(TxPin, OUTPUT);
digitalWrite(TxPin, HIGH);
mySerial.begin(9600);
delay(100);
mySerial.write(12); // Clear
mySerial.write(17); // Turn backlight on
delay(5); // Required delay
// The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
// The same pin is used to read the signal from the PING))): a HIGH
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
mySerial.print(inches);
mySerial.print("in, ");
mySerial.print(cm);
mySerial.print("cm");
mySerial.println();
delay(5);
if(inches < 3)
{
mySerial.write(13);
mySerial.print("Filling");
if(timer > 10)
{
mySerial.write(13);
mySerial.write(12); // Clear
mySerial.print("Hopper Full");
}
timer ++;
}
else
{
mySerial.write(13);
mySerial.print("Empty");
}
}
long microsecondsToInches(long microseconds)
{
// According to Parallax's datasheet for the PING))), there are
// 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
// second). This gives the distance travelled by the ping, outbound
// and return, so we divide by 2 to get the distance of the obstacle.
// See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}
Prototype Video - Nick Alioto
The main reason on why we built the prototype was to see if the collection mechanism can work. This video is proof that the concept does work.
Arduino programming- Nick Alioto
Andrew has been working on the programming of the arduino mega. He has manage to get motors running and the ultra sonic sensor to sense. Matt has been helping with the electrical setup to the arduino.
Prototyping Vex- Nick Alioto
For the past week we have been working on a prototype for our robot. We choose to make it out of vex because we can build easily and fast. Andrew worked on the prototype chassis. Matt worked on the collection mechanism mount. I (Nick) worked on the collection mechanism discs and hopper.
Subscribe to:
Posts (Atom)