NXC Programming - Embedded Intelligent Robotics - Lecture Slides, Slides of Robotics

Course title is Embedded Intelligent Robotics. This course is for Electrical engineering students. Though good thing is everyone can learn about robotics in this course. This lecture includes: Nxc Programming, Firmware, Next Byte Code, Threading Model, Nxc Sample Program, Rotatemotor, Mimicking a Servo Motor, Lcd Display

Typology: Slides

2013/2014

Uploaded on 01/29/2014

surii
surii 🇮🇳

3.5

(13)

121 documents

1 / 23

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
NXC (and NBC)
NXC (Not eXactly C) is a language
similar to NQC, which was the most
popular way to program the RCX
Built on NBC, the Next Byte Code
‘assembler’
Uses the built in firmware, and p-code
system
docsity.com
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Partial preview of the text

Download NXC Programming - Embedded Intelligent Robotics - Lecture Slides and more Slides Robotics in PDF only on Docsity!

NXC (and NBC)

NXC ( N ot e X actly C ) is a language similar to NQC, which was the most popular way to program the RCX Built on NBC, the Next Byte Code ‘assembler’ Uses the built in firmware, and p-code system

NXC uses BricxCC

Reasonably stable development environment Provides support for all LEGO robotic platforms Free!

NXC Programs

NXC is based on C Restrictions because it’s based on the built-in P-Code system There’s no stack Limited memory Limited number of tasks (256)  And subroutines, which are also ‘tasks’

NXC program skeleton

#include "NXCDefs.h" task main() { }

NXC Sensors

#include "NXCDefs.h" task main() { SetSensor( IN_1, SENSOR_TOUCH ); }

NXC Sensors

To read a sensor use x = Sensor( IN_1 );

NXC Motors

Simple motor commands are available  OnFwd(), OnRev(), Off(), Float()

NXC Motors

To use the built-in rotation sensors, you need to use the new motor commands Easiest to use is RotateMotor()

Mimicking a Servo Motor

Read the current motor angle  Current = MotorRotationCount( OUT_A ); Calculate how far you need to turn  Delta = Target – Current; Turn that amount  RotateMotor( OUT_A, speed, Delta );

Displaying Text

The LCD display is useful for  Debugging  Setting parameters  Runtime messages  Graphics  Games  … and more

LCD display

The origin is the bottom left So TextOut( 0,0, “hi” ) will display in the bottom left corner Use the LCD_LINEn macros if you like to make it easier

Text Example

y = 42; TextOut(0, LCD_LINE5, "Answer:" ); NumOut( 8*6, LCD_LINE5, y ); // characters are 6 pixels wide

Tasks and Subroutines

Multiple tasks are possible, but don’t work like you might expect Scheduling is different – tasks start when a ‘dependant’ task finishes  There is no easy way of stopping a task Use Precedes() or Follows() in a task to define task dependencies

Tasks

task FooTask() { // will start executing when main() finishes } task main() { // program starts here Precedes ( FooTask ); } task BarTask() { Follows ( main ); // will also start executing when main() finishes } docsity.com