Xojo Dojo - Free and Easy Way to Program Raspberry Pi
Tags: raspberrypi, scripting, learn
Published: 2018-07-23 18:10:08

---
title: Xojo Dojo - Free and Easy Way to Program Raspberry Pi
published: true
description: Use Xojo Dojo on the Pi to make your own programs.
tags: RaspberryPi, Scripting, Learn
---

Xojo Dojo is a free and easy way to get started with programming on the Raspberry Pi. With Xojo Dojo you can use the Xojo programming language, along with a few other special commands to make simple Pi programs that can use text, graphics and GPIO.

[Download Xojo Dojo](http://cdn.xojo.com/Documentation/XojoDojo-a1.zip)

![](https://dzf8vqv24eqhg.cloudfront.net/userfiles/1539/2321/ckfinder/images/XojoDojo.png)

![](https://dzf8vqv24eqhg.cloudfront.net/userfiles/1539/2321/ckfinder/images/XojoDojoDragonCode.png)

## Get Started
Download Xojo Dojo to your Raspberry Pi and unzip it. Go to the XojoDojo folder and double-click the XojoDojo executable.

**If the file is nor marked as an executable file, you may have to manually do this by right-clicking on it, and selecting "Properties". Switch to the Permissions tab and in the Access Control section make sure Executable is set to "Anyone". Click OK.**

When Xojo Dojo starts it displays an empty window that is the code editor.

![](https://dzf8vqv24eqhg.cloudfront.net/userfiles/1539/2321/ckfinder/images/XojoDojoMain.png)

You can type some code to get started. For example, this simple code displays text:

    Print "Hello, World!"

Type that code and click Run in the toolbar. Xojo Dojo will switch to the Text tab and you'll see the output "Hello, World!".

Xojo Dojo includes several sample projects to show you some of its commands and capabilities. To look at an example project, click Open in the File menu and go to the Scripts folder in the XojoDojo folder. These are the included examples:
* **Bounce**: A graphics demo that draws a ball that leaves a multi-colored trail as it bounces around the screen. Press the Stop button on the toolbar to stop the demo.
* **Boxes**: A graphics demo that draws 1000 multi-colored boxes of varying sizes on the screen.
* **BubbleSort**: An implemention of the Bubble Sort sorting algorithm.
* **DiceRoll**: Simulates the rolling of two dice a certain number of times and then tells you how often each dice total amount occurred.
* **DragonSweep**: A graphics demo that draws a fractal "dragon". Based on an IBM PCjr BASIC program from Compute! magazine in March 1986.
* **GPIOAlarm**: With a piezo speaker wired to your Pi using the GPIO, this program makes it sound like an alarm. [View the wiring diagram](https://medium.com/r/?url=http%3A%2F%2Fdeveloper.xojo.com%2Frpi-using-a-buzzer).
* **GPIOButtonLED**: With a a button and LED wired to your Pi using the GPIO, this program lights the LED when the button is pressed. [View the wiring diagram](https://medium.com/r/?url=http%3A%2F%2Fdeveloper.xojo.com%2Fbutton-led-circuit).
* **GPIOLEDBlink**: With an LED wired to your Pi using GPIO, this program makes the LED blink. [View the wiring diagram](http://developer.xojo.com/creating-an-led-circuit).
* **GPIOTune**: With a piezo speaker wired to your Pi using the GPIO, this program plays a short tune. [View the wiring diagram](https://medium.com/r/?url=http%3A%2F%2Fdeveloper.xojo.com%2Frpi-using-a-buzzer).
* **GuessTheNumber**: Try to guess a number picked by the program.
* **HelloWorld**: Simple display of text.
* **LongLoop**: A long-running loop that outputs text.
* **MazePattern**: Displays a text output that looks like a maze (but is not a maze). Based on a Commodore 64 BASIC program from 10 PRINT.
* **Olympic**: Draws the Olympic rings.
* **ShowPicture**: Prompts you to choose a picture on your drive and displays it.
* **Sieve**: Calculates the Sieve of Eratosthenes, popular benchmarking program in the 1980s.
* **SineWave**: Displays a text-based sine wave.

## Xojo Dojo Commands
Xojo Dojo uses XojoScript and can thus use all the language commands that are part of Xojo. Xojo Dojo cannot use any of the Xojo frameworks.

Xojo Dojo has its own small set of custom commands it can use, which are described below.

### ClearGraphicsOutput
Clears the Graphics output screen.
### ClearTextOutput
Clears the Text output screen.
### DrawLine(x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer)
Draws a line from position x1, y1 to position x2, y2.
### DrawOval(x As Integer, y As Integer, w As Integer, h As Integer)
Draws an oval at position x, y and using with w and height h. To draw a circle, make w and h the same.
### DrawPicture(x As Integer, y As Integer, picturePath As String)
Draw the picture at the specified path at position x, y.
### DrawRect(x As Integer, y As Integer, w As Integer, h As Integer)
Draws a rectangle at position x, y using width w and height h.
### DrawString(s As String, x As Integer, y As Integer, w As Integer = 0, condense As Boolean = False)
Draws a string s on the graphics screen at position x, y. Optionally specify a width and whether the string is condensed if it cannot fit.
### EndOfLine As String
The end of line character to use with strings.
### EndTimer As Double
Stops a timer started with StartTimer, returning the milliseconds of the elapsed time.
### FillOval(x As Integer, y As Integer, w As Integer, h As Integer)
Draws a filled oval at position x, y and using with w and height h. To draw a circle, make w and h the same. Change the fill color using the ForeColor command.
### FillRect(x As Integer, y As Integer, w As Integer, h As Integer)
Draws a filled rectangle rectangle at position x, y using width w and height h. Change the fill color using the ForeColor command.
### ForeColor(Assigns c As Color)
Sets the color to use for drawing and fill commands.
### GPIODigitalRead(pin As Integer) as Integer
Read a value from a GPIO pin.
### GPIODigitalWrite(pin As Integer, mode As Integer)
Write a value to a GPIO pin.
### GPIOPinMode(pin As Integer, mode As Integer)
Set a GPIO pin as either input or output.
### GPIOSetupGPIO
Initialize GPIO. [WiringPi library](http://wiringpi.com) must be installed on the Pi.
### GPIOSoftToneCreate(pin As Integer) as Integer
Sets up tones for a pin.
### GPIOSoftToneWrite(pin As Integer, freq As Integer)
Sends a tone to a pin.
### GPIO_INPUT
Used with GPIO DigitalRead and DigitalWrite commands to indicate a pin is for input. 
### GPIO_OFF
Used with GPIO DigitalRead and DigitalWrite commands to indicate a pin is off.
### GPIO_ON
Used with GPIO DigitalRead and DigitalWrite commands to indicate a pin is on.
### GPIO_OUTPUT
Used with GPIO DigitalRead and DigitalWrite commands to indicate a pin is for output.
### RandomInt(startValue As Integer, endValue As Integer) as Integer
Generates a random integer between startValue and endValue (inclusive).
### ShowGraphicsOutput
Switches to the graphics output screen.
### StartTimer
Starts a timer.
### UserCancelled As Boolean
Returns True when the user has clicked the Stop button on the toolbar. Use it to end your programs that run in a long loop.
### Wait(ms As Double = 10)
Pauses your program execution. The default is 10 milliseconds, but you can specify your own value.

## Learn More About Xojo and Raspberry Pi
If you want to make full-featured apps for the Raspberry Pi you can try the full version of [Xojo](http://www.xojo.com/download). You can also check out the free book: [Programming the Raspberry Pi with Xojo](http://developer.xojo.com/pibook) and the [Raspberry Pi topic of the User Guide](http://developer.xojo.com/userguide/raspberry-pi).