Lab 01-Arduino Programming Basics

The group worked on becoming familiar with the system hardware components, setting up the AEV software, programming basic function calls for the AEV, and uploading as well as testing the code written on the Arduino Nano microcontroller. The code was written after basic function calls were learned, which included celerate, motorSpeed, goFor, brake, and reverse. These commands were used to control when, how fast, and for how long the propeller was powered. This was accomplished by writing the code for the motor in the Sketchbook on the computer, then transferring that data to the Arduino to power the motor and spin the propellers.

After compiling as well as uploading both scenarios of code onto the Arduino, the team observed that the propellers moved based on how the code was set up. Whenever the command was set up to accelerate or move motor 1 or motor 2, only one of the motors was observed moving the propeller. When the code was set up to move all the motors, both motors were seen to move the propellers. There was a slight delay between when the Arduino was started and when the propellers began to rotate. It took about two seconds after the button on the Arduino was pressed for the motor to begin whirring, and it took about an additional two after the motor began to whir for the propellers to begin to spin. This delay between the motor and propeller spinning occurred whenever the motor turned off and turned back on again.  Therefore, there seemed to be a visible delay before the motors began spinning after the Arduino code was uploaded onto the microcontroller.

Codes Used in Lab

Code 1:

celerate(1,0,15,2.5); // Accelerated motor 1 from 0% to 15% in 2.5 seconds.

motorSpeed(1,15);    // Ran motor 1 at a constant speed of 15%.

goFor(1);     // For 1 second.

brake(1);     // Then, motor one was stopped.

celerate(2,0,27,4);      // Accelerated motor 2 from 0% to 27% speed in 4 seconds.

motorSpeed(2,27);    // Ran motor 2 at a constant speed of 27%

goFor(2.7);     // For 2.7 seconds.

celerate(2,27,15,1); // Decelerated motor 2 from 27% to 15% in 1 second.

brake(2);     // Motor two was stopped.

reverse(2);     // Motor two was reversed (direction was changed).

celerate(4,0,31,2);      // Both motors were accelerated from 0% to 31% in 2 seconds.

motorSpeed(4,35);    // Both motors were run at a constant speed of 35%

goFor(1);     // For one second

brake(2);     // Only motor two was stopped.

goFor(3);     // Motor was made to go for another 3 seconds.

brake(4);     // All motors were stopped.

goFor(1);     // For one second.

reverse(1);     // The direction of motor 1 was changed.

celerate(1,0,19,2);      // Motor 1 was accelerated from 0% to 19% peed in 2 seconds.

motorSpeed(2,35);    // Motor 2 was run at a constant speed of 35% simultaneously.

motorSpeed(1,19);    // Motor 1 was run at a constant speed of 19% simultaneously.

goFor(2);     // For 2 seconds.

motorSpeed(4,19);    // Both motors were run at a constant speed of 19%

goFor(2);     // For 2 seconds.

celerate(4,19,0,3);      // Motors 1&2 were decelerated from 19% to 0% in 3 seconds.

brake(4);     // All motors were stopped.

Code 2:

reverse(4);     // Both motors were reversed (direction was changed).

celerate(4,0,25,.5); // Both motors were accelerated from 0% to 25% in 5 seconds.

brake(4);     // Both motors were stopped.

goFor(0.1);     // For 0.1 seconds.

celerate(4,0,25,.5); // Initial code was repeated once

brake(4);

goFor(0.1);

celerate(4,0,25,.5); // Repeated twice

brake(4);

goFor(0.1);

celerate(4,0,15,0.3);    // Both motors were accelerated from 0% to 15% in 0.3 seconds.

brake(4);     // All motors were stopped.

goFor(0.05);     // For 0.05 seconds.

celerate(4,0,40,0.3);    // Both motors were accelerated from 0% to 40% in 0.3 seconds.

celerate(4,40,25,0.5);   // Both motors were decelerated from 40% to 25% in 0.5 seconds.

celerate(4,25,15,0.3);   // Both motors were decelerated from 25% to 15% in 0.3 seconds.

brake(4);     // All motors were stopped.

goFor(0.05);     // For 0.05 seconds.

celerate(4,0,40,0.3);     // Both motors were accelerated from 0% to 40% in 0.3 seconds.

celerate(4,40,25,0.5);   // Both motors were decelerated from 40% to 25% in 0.5 seconds.

brake(4);     // All motors were stopped.

goFor(0.5);     // For 0.5 seconds.

celerate(4,0,55,0.5);     // Both motors were accelerated from 0% to 55% in 0.5 seconds.

brake(4);     // All motors were stopped.

goFor(0.1);     // For 0.1 seconds.

celerate(4,0,55,0.5);     // Both motors were accelerated from 0% to 55% in 0.5 seconds.

brake(4);     // All motors were stopped.

goFor(0.1);     // For 0.1 seconds.

celerate(4,0,55,0.5);     // Both motors were accelerated from 0% to 55% in 0.5 seconds.

brake(4);     // All motors were stopped.

goFor(0.1);     // For 0.1 seconds.

celerate(4,0,65,0.3);     // Both motors were accelerated from 0% to 65% in 0.3 seconds.

brake(4);     // All motors were stopped.

goFor(0.05);     // For 0.05 seconds.

celerate(4,0,40,0.3);     // Both motors were accelerated from 0% to 40% in 0.3 seconds.

celerate(4,40,25,0.5);   // Both motors were decelerated from 40% to 25% in 0.5 seconds.

celerate(4,25,15,0.3);   // Both motors were decelerated from 25% to 15% in 0.3 seconds.

brake(4);     // All motors were stopped.

goFor(0.05);     // For 0.05 seconds.

celerate(4,0,40,0.3);      // Both motors were accelerated from 0% to 40% in 0.3 seconds.

celerate(4,40,25,0.5);    // Both motors were decelerated from 40% to 25% in 0.5 seconds.

brake(4);     // All motors were stopped.

Team Meeting Notes

Meeting 1

Date: 20 January 2017

Time: 5:30-7:00pm

Location: HI 324

Members Present: Eric Fogle, Omar Mahboob, Xander Riggio, Matthew Spishakoff

Method: Face-to-Face

Meeting Objectives: Work on the Lab 2 Progress Report and create a u.osu webpage for the group.

Roles for Meeting 1:

Eric: Week 1 Situation, Results & Analysis, and Takeaways

Omar: Creating Week 2’s Schedule and Goals, Working on Appendix, Editing the Document.

Xander: Situation (Forward Looking Plan), Arduino Code, Meeting Notes

Matthew: Project Portfolio, Lab progress report page, Website

There was no previous meeting, the group’s last action together was completing lab 1.

Tasks For upcoming week:

o Finish Progress report 1.

o Prepare 3D model of AEV for next lab.

o Complete Labs 2a and 2b.

Decisions made by the group:

o Role responsibilities for meeting 1.

o The team will finish the report through individual work throughout the next week.

o The group will communicate  to ensure the progress report is finished in a timely manner.

o The team will meet next Friday to work on the next progress report, discuss the project’s status, and complete any other future work that will be required for lab 3.

 

Reflections: Lab 1 was completed in a very efficient manner. There were no major problems. The biggest issues was that the motors feel out of their holding apparatus on the first experiment because they had not been fastened well enough. This was fixed and did not happen again. The coding for the first situation required some debugging, but it was only minor errors. Otherwise, the setup was efficient, the rest of the coding went well, and running the motors worked very well after the first run. Overall, the lab was very straightforward and does not need any improvement. Future groups will likely be able to complete it efficiently, even if there are few mishaps along the way.