EasyC Programming Workshop
-
Upload
uriah-fowler -
Category
Documents
-
view
97 -
download
1
description
Transcript of EasyC Programming Workshop
![Page 1: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/1.jpg)
EasyC Programming EasyC Programming Workshop Workshop
January 30, 2008Hauppauge High School
SPBLI - FIRST
Mark McLeodMark McLeodAdvisorAdvisor
Hauppauge Team 358Hauppauge Team 358Northrop Grumman Corp.Northrop Grumman [email protected]@ngc.com
![Page 2: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/2.jpg)
AgendaAgenda
FIRST Control SystemFIRST Control System C BasicsC Basics EasyC EnvironmentEasyC Environment EasyC BasicsEasyC Basics
– Robot Driver ControlRobot Driver Control Demonstration of Basic OI Controls Demonstration of Basic OI Controls
– Robot Autonomous ControlRobot Autonomous Control Demonstration of Dead ReckoningDemonstration of Dead Reckoning
![Page 3: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/3.jpg)
FIRST Control SystemFIRST Control System
solenoid motor
![Page 4: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/4.jpg)
FIRST Control ElementsFIRST Control Elements
HardwareHardware– Robot Controller (RC)Robot Controller (RC)
User Processor vs. Master ProcessorUser Processor vs. Master Processor PWM, Relay, Digital I/O, Analog, Misc.PWM, Relay, Digital I/O, Analog, Misc.
– Operator Interface (OI)Operator Interface (OI)– Tether cable / Programming cableTether cable / Programming cable– LaptopLaptop
ProgrammingProgramming– C Language BasedC Language Based– Application Programmer Interface (API)Application Programmer Interface (API)– Dashboard (optional)Dashboard (optional)
![Page 5: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/5.jpg)
Robot Controller Robot Controller ArchitectureArchitecture User ProcessorUser Processor
– What we download toWhat we download to– Runs our codeRuns our code– Reads the digital/analog I/O directlyReads the digital/analog I/O directly
Master ProcessorMaster Processor– Controls Disable/Autonomous/Driver modesControls Disable/Autonomous/Driver modes– Disables OI inputs & most RC outputsDisables OI inputs & most RC outputs– Must hear from User periodically or shuts it downMust hear from User periodically or shuts it down– Master Code Software is updated each yearMaster Code Software is updated each year
![Page 6: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/6.jpg)
Robot Controller I/ORobot Controller I/O
Banner Sensor
Touch Sensor
Switch
Gyroscope
CameraLimit Switch
Analog Rangefinder
Encoder
Potentiometer
Pressure Sensor
Servo
Solenoid Compressor
Analog
Digital
Motors
Relays
TeamLEDs
TTL
![Page 7: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/7.jpg)
Getting StartedGetting Started
TutorialsTutorials– Help -> TutorialsHelp -> Tutorials
Create/Open an EasyC ProjectCreate/Open an EasyC Project– New Competition TemplateNew Competition Template– Controller ConfigurationController Configuration
Drag & Drop EditingDrag & Drop Editing Build & DownloadBuild & Download
– Loader Setup to select serial/USB portLoader Setup to select serial/USB port– Online Window to test & check RC Online Window to test & check RC
config.config.
![Page 8: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/8.jpg)
.hex file
Robot Controller
Operator Interface
Dashboard (optional)
MechanicsMechanics
Prog Button
Build & Download
![Page 9: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/9.jpg)
ProjectProject
Controller ConfigurationController Configuration– Set Digital as input or outputSet Digital as input or output
![Page 10: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/10.jpg)
Function BlocksFunction Blocks
Add VariablesAdd Variables Inputs – Digital & Analog I/OInputs – Digital & Analog I/O Outputs – PWM, RelayOutputs – PWM, Relay Program Flow – C statementsProgram Flow – C statements RC Control – Drive style (tank, arcade)RC Control – Drive style (tank, arcade) CameraCamera Control – Know status (disable, auto)Control – Know status (disable, auto) User Functions (Initialize, Auto, User Functions (Initialize, Auto,
Operator)Operator)
![Page 11: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/11.jpg)
Simple Operator ModeSimple Operator Mode
While (1) { // From “Program Flow – While”
Tank4(1,2,2,2,1,3,2,4,0,1,0,1);
// From “RC Control – Tank – 4 motor”
}
![Page 12: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/12.jpg)
More Complex More Complex Operator ModeOperator Modeunsigned char LeftJoystick; // Double click “Variables”
while (1) {
LeftJoystick = GetOIAInput(1,2); // From “RC Control”
if(LeftJoystick > 137 || LeftJoystick < 117) // From “Program Flow”
{
SetPWM(1, LeftJoystick); // From “Outputs”
}
else
{
SetPWM(1, 127);
}
}
![Page 13: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/13.jpg)
Simple AutonomousSimple Autonomous
SetPWM(1,200); // From “Outputs”
SetPWM(2,55);
Wait(10000); // From “Program Flow” (10 secs in milliseconds)
SetPWM(1,127); //Be sure to stop the robot at the end
SetPWM(2,127);
![Page 14: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/14.jpg)
Sample IR Sensor UseSample IR Sensor Use
While(1) { if (GetDigitalInput(1) == 1) {
SetOILED(1,1); //Turn 1st OI light onSetOILED(3,0); //Turn other OI lights offSetOILED(5,0);SetOILED(7,0);
SetPWM(1,200); //Drive the robotSetPWM(2,55);
} if (GetDigitalInput(2) == 1) {
SetOILED(1,0); //Turn other OI lights offSetOILED(3,1); //Turn 2nd OI light on
SetOILED(5,0); SetOILED(7,0);
SetPWM(1,127); //Stop the robotSetPWM(2,127);
}}
![Page 15: EasyC Programming Workshop](https://reader035.fdocuments.us/reader035/viewer/2022062722/5681392b550346895da0d2b8/html5/thumbnails/15.jpg)
More InformationMore Information
Presentation slides at: Presentation slides at:
Team358.orgTeam358.org
Questions/Help please email us. Questions/Help please email us.
[email protected]@ngc.com