Example Programs in C
Ex1: Our hello world example
a simple demostration of how to write to the LCD
demo/helloworld.c
#include <conio.h>
#include <unistd.h>
int main(int argc, char **argv) {
cputs("hello");
sleep(1);
cputs("world");
sleep(1);
cls();
return 0;
}
Ex2: generating sounds
a simple demostration of the RCX playing music
demo/sound.c
/*sound.c*/
#include <config.h>
#if defined(CONF_DSOUND)
#include <dsound.h>
#include <tm.h>
/*array of notes that make up the refrain*/
/*of Devil with a Blue Dress*/
static const note_t devil[] = {
{ PITCH_G4, HALF },
{ PITCH_G4, HALF },
{ PITCH_G4, HALF },
{ PITCH_G4, HALF },
{ PITCH_G4, HALF },
{ PITCH_G4, HALF },
{ PITCH_F4, HALF },
{ PITCH_F4, HALF },
{ PITCH_F4, HALF },
{ PITCH_F4, HALF },
{ PITCH_F4, HALF },
{ PITCH_E4, HALF },
{ PITCH_E4, HALF },
{ PITCH_F4, HALF },
{ PITCH_F4, HALF },
{ PITCH_F4, HALF },
{ PITCH_F4, HALF },
{ PITCH_E4, HALF },
{ PITCH_END, 0 }
};
int main(int argc,char *argv[]) {
/*The default makes this a really, really slow song*/
/*So, we speed it up a little bit.*/
/*now, we play it*/
while (!shutdown_requested()) {
dsound_play(devil);
sleep(1);
}
return 0;
}
#else
#warning sound.c requires CONF_DSOUND which is not set
#warning sound demo will do nothing
int main(int argc, char *argv[]) {
return 0;
}
#endif // CONF_DSOUND
Ex3: A line following robot
a simple demostration of
demo/linetrack.c
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is legOS code, released October 17, 1999.
*
* The Initial Developer of the Original Code is Markus L. Noga.
* Portions created by Markus L. Noga are Copyright (C) 1999
* Markus L. Noga. All Rights Reserved.
*
* Contributor(s): Markus L. Noga <markus@noga.de>
*/
#include <config.h>
#if defined(CONF_DSENSOR) && defined(CONF_DMOTOR)
#include <conio.h>
#include <unistd.h>
#include <tm.h>
#include <dsensor.h>
#include <dmotor.h>
#define LIGHTSENS SENSOR_2
#define DARK_THRESH 0x40
#define BRIGHT_THRESH 0x48
#define NORMAL_SPEED (2*MAX_SPEED/3)
#define TURN_SPEED (MAX_SPEED)
// #define STRAIGHT_LINE
static wakeup_t dark_found(wakeup_t data) {
return LIGHT(LIGHTSENS)<(unsigned short)data;
}
static wakeup_t bright_found(wakeup_t data) {
return LIGHT(LIGHTSENS)>(unsigned short)data;
}
static void locate_line() {
motor_a_speed(NORMAL_SPEED);
motor_c_speed(NORMAL_SPEED);
wait_event(dark_found,DARK_THRESH);
}
static void follow_line() {
int dir=0;
while (!shutdown_requested()) {
motor_a_speed(NORMAL_SPEED);
motor_c_speed(NORMAL_SPEED);
if (wait_event(bright_found,BRIGHT_THRESH) != 0)
{
if(dir==0)
else
#ifdef STRAIGHT_LINE
dir=!dir;
#endif
motor_a_speed(TURN_SPEED);
motor_c_speed(TURN_SPEED);
wait_event(dark_found,DARK_THRESH);
}
}
}
int main(int argc, char *argv[]) {
ds_active(&LIGHTSENS);
locate_line();
follow_line();
return 0;
}
#else
#warning linetrack.c requires CONF_DSENSOR and CONF_DMOTOR
#warning linetrack demo will do nothing
int main(int argc, char *argv[]) {
return 0;
}
#endif // defined(CONF_DSENSOR) && defined(CONF_DMOTOR)

brickOS is released under the Mozilla Public License.
Original code copyright 1998-2005 by the authors.

Generated on Sat Mar 15 2014 11:28:21 for brickOS Kernel Developer by doxygen 1.8.1.2