Browse Source

examples: added Arduino hello-world example

Hauke Petersen 7 years ago
  1. 20
  2. 43
  3. 63


@ -0,0 +1,20 @@
# name of your application
APPLICATION = arduino_hello-world
# If no BOARD is found in the environment, use this default:
BOARD ?= native
# This has to be the absolute path to the RIOT base directory:
USEMODULE += arduino
# Comment this out to disable code in RIOT that does safety checking
# which is not needed in a production environment but helps in the
# development process:
# Change this to 0 show compiler invocation lines by default:
QUIET ?= 1
include $(RIOTBASE)/Makefile.include


@ -0,0 +1,43 @@
This application demonstrates the usage of Arduino sketches in RIOT.
The sketch itself is fairly simple. On startup, it initializes the LED pin to
output mode, starts the serial port with a baudrate of 115200 and prints
"Hello Arduino!" on the serial port. When running, the application echoes any
newline terminated string that was received on the serial port, while toggling
the default LED with a 1Hz frequency.
The sketch just uses some very primitive Arduino API elements for demonstration
- control of digital pins (pinMode(), digital read and write)
- the delay() function
- reading and writing the serial port using the Serial class
Arduino and RIOT
For information on the Arduino support in RIOT please refer to the API
documentation at
Just send any newline terminated string to the board's serial port, and the
board will echo this string.
Example output
When using pyterm, the output will look similar to this:
2015-11-26 14:04:58,307 - INFO # main(): This is RIOT! (Version: xxx)
2015-11-26 14:04:58,308 - INFO # Hello Arduino!
hello again
2015-11-26 14:06:29,800 - INFO # Echo: hello again
are you still there?
2015-11-26 14:06:48,301 - INFO # Echo: are you still there?
If your board is equipped with an on-board LED, you should see this LED toggling
every half a second.
NOTE: if your board's STDIO baudrate is not configured to be 115200 (see your
board's `board.h`), the first line of the output may not be shown or scrambled.


@ -0,0 +1,63 @@
Arduino Hello-World @ RIOT
Prints 'Hello Arduino!' once on the serial port during startup, toggles the
default LED twice each seconds and echoes incoming characters on the serial
// Per convention, RIOT defines a macro that is assigned the pin number of an
// on-board LED. If no LED is available, the pin number defaults to 0. For
// compatibility with the Arduino IDE, we also fall back to pin 0 here, if the
// RIOT macro is not available
#define ARDUINO_LED (0)
// Assign the default LED pin
int ledPin = ARDUINO_LED;
// input buffer for receiving chars on the serial port
int buf[64];
// counter that counts the number of received chars
int count = 0;
void setup(void)
// configure the LED pin to be output
pinMode(ledPin, OUTPUT);
// configure the first serial port to run with a baudrate of 115200
// say hello
Serial.println("Hello Arduino!");
void loop(void)
// toggle the LED
digitalWrite(ledPin, !digitalRead(ledPin));
// test if some chars were received
while (Serial.available() > 0) {
// read a single character
int tmp =;
// if we got a line end, we echo the buffer
if (tmp == '\n') {
// start with printing 'ECHO: '
Serial.write("Echo: ");
// echo the buffer
for (int i = 0; i < count; i++) {
// terminate the string with a newline
// reset the count variable
count = 0;
// else we just remember the incoming char
else {
buf[count++] = tmp;
// wait for half a second