Visual, real-time, agent based programming for Arduino. Now available for Windows, Mac, and Linux.

Embrio is a different kind of visual programming environment which doesn’t try to mimic traditional programming, instead you create your program out of multiple “agents” which each have one job and all run at the same time in parallel. Agents attach to each other, activating and suppressing other agents similar to neurons in a brain. Agents are implemented by adding and connecting visual nodes, and you can write your own custom nodes giving you the full power of traditional coding wrapped in an easy to use graphical interface. Work with a live connection to your Arduino to get real time feedback and interaction, avoiding the cumbersome compile, upload, and test loop of traditional programming.

Agent Based Programming

An agent is a little piece of a program that has one job. Agents connect to and turn on and off other agents. An Embrio program is made up of multiple agents running in parallel.

Real Time Connection

Work with a live connection to your Arduino, see how your program works as you build it!

See the list of compatible boards.

Compiles To Arduino

When your program is done it can be compiled to run entirely on your Arduino! The profiler tool gives you accurate resource usage information while you work.

Learn more by going through the growing library of video tutorials, for example:

Beginner

Servo And Distance Switch - This short tutorial combines the IR Distance Sensor Switch example with a Servo as another example of putting together what you've learned so far to make useful programs.

Intermediate

Print to LCD - This project uses a custom Arduino node and some Text Activator nodes to print text to an LCD. It cycles through 3 messages with the push of a button.

Advanced

Simon Style Memory Game - This project shows the entire process of programming a Simon style memory game using agents. The video is fairly long, but goes in full detail how to create a program like this using Agent Based programming. The video starts with a quick explan...

Recent Activity

5/23/2019 - New Forum Post

Startup error after install

lautin: Hi. cant start Embrio after install, only gets this error message. any idea? windows 7 x64 Embrio 2.2.4.1 [img=http://lautin.eu/elfinder/files/embrio_startup_error.png]error message[/img]

3/29/2019 - New Forum Post

pwm

EmbrioAdmin: 1. In what way isn't it working? Are you getting any error messages in the message log at the bottom of the screen? I did find recently that there was an error in the timing program, which gets up

3/2/2019 - New Forum Post

Serial Monitor

scott@scottelford.biz: So is this correct. Arduino serial print is like this Serial.print("Input"); // this prints Input as a label Serial.Print(input); // this prints the input value Input input value. Embrio

2/14/2019 - Embrio Software Update

Version 2.2.4.1

Bugs Fixed
Fixed a compile bug when there were multiple instances of a node with an IO set with connected inputs.

2/12/2019 - Embrio Software Update

Version 2.2.4.0

New Features
!!!!!! IMPORTANT !!!!!! Please do a full uninstall and reinstall of the new version, the update effects files that cannot be updated by the updater program !!!!!! IMPORTANT !!!!!!
Better performance and easier install on Mac and Linux.
Press Control + G to replace the selected nodes with a new Reusable Node Group
Press Control + D to duplicated the selected nodes and move the new copy to the mouse cursor.
Can hide or unhide node inputs and output that don’t have any connection, to clean up busy node screens
Auto arrange a node screen by pressing A
Inputs and outputs can be sorted by clicking and dragging
C# array declaration compiles to Arduino so you don’t need to implement nodes that need arrays in both languages
Node selection outline is a pixel bigger making it much more noticeable.

Bugs Fixed
Don’t use exposed input values when nothing set or connected, instead use the disconnected value on the root agent
Arrays in the declaration section were causing a compile bug in the timing program
Don’t show an empty tooltip on a node screen tab if there is no note to show

10/18/2018 - New Tutorial

Simon Style Memory Game

This project shows the entire process of programming a Simon style memory game using agents. The video is fairly long, but goes in full detail how to create a program like this using Agent Based programming. The video starts with a quick explanation of how the physical box was made, but most of it goes over creating the entire project from start to finish.

9/26/2018 - Embrio Software Update

Version 2.2.3.4

Bugs Fixed
Fixed a bug on Linux where only one plus sign could be in a code definition.

7/5/2018 - New Library Item

EasyDriver Stepper

This node lets you control a stepper motor, like the Nema 17 Bipolar Stepper Motor, with the EasyDriver - Stepper Motor Driver.

3/16/2018 - New Tutorial

Bezier Curve Node

The bezier curve node lets you convert a linear input to a curved output. It is especially useful for working with physical devices that have a non linear response, or adding ease in and out throughout a project for a more natural look.

3/5/2018 - New Library Item

I2C 20x4 LCD

This node works with any standard I2C 20x4 LCD module.

2/24/2018 - New Library Item

Pololu Maestro Servo Controllers

This node lets you control a bunch of servos with the Pololu Maestro family of servo control boards using the maestro-arduino library. A servo control board is great because it moves all of the hardware and software resources needed to control servo motors off of the Arduino and only takes up 2 pins to control a large number of servos. The board creates the smooth PWM signals needed to run the servos. You can also use these boards to control anything that's controlled by a PWM signal like LEDs.

1/2/2018 - New Tutorial

Servo Control with UI

This tutorial shows how to control a Servo with an Arduino via a user interface running on a PC, connected by a serial cable. The project contains two controllers, one to run on the Arduino, and one to run on the PC with a UI made with HTML, CSS, and jQuery. The two controllers communicate with built in serial communication nodes.