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.
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.
Download Embrio now for Windows, Mac, or Linux to try it out.
Without a license you can work in connected mode as much as you want, you only need to compile a program when your project is done and you want to run the Arduino disconnected from your computer.
If you find Embrio useful please support its development by getting a license which allows you to upload your programs to an Arduino to run detached from your computer.
IR Distance Sensor
- This video shows how to use a value lag and transform number node to clean up a noisy input signal.
Color Fading RGB LEDs
- This project shows how to randomly fade the colors of RGB LEDs, as well as control their speed and brightness with potentiometers. The project also demonstrates how to encapsulate groups of nodes as Functions which can be reused multiple times.
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
12/18/2022 - New Forum Post
Can't connect to the Arduino
janmon@kolumbus.fi: Hi,
I can get the Arduino IDE to connect to the Arduino, but Embrio does not find it. File path should be OK.
I get this error message:
Error uploading to Arduino: Error starting Arduino uplo
1/10/2022 - Embrio Software Update
Version 2.4.0.0
New Features
Updated libraries and fixed cross platform issues. Should work on Linux and Mac now... again.
!!! For Windows users - you don't need to get this update. If you are doing a new install, use this version, but if you already have 2.3 you don't need this upgrade!!!
3/24/2020 - Embrio Software Update
Version 2.3.2.0
New Features
!!!!! IMPORTANT !!!!! Please download a new installer from www.embrio.io. This update has lots of deep down changes.
Agent Connection Visualizer - press Space on an Agent or Input/Output to see connections to other Agents.
Pin Panel - Press P to toggle showing the pin panel. Right click on any node input and select "Pin Input" to pin that input to the pin panel for easy access.
Project Tree Search.
Project tree nodes maintain alphabetical sort order.
Project tree settings page added.
Can duplicate project items and node definitions.
Backspace goes to last used editor.
Right click on an exposed input or output and select “Replace exposed Input (or output)” then click a different input or output to expose and move all of the external connections to.
Removed ETO cross platform library, now entire program runs in a single web browser control.
Lots of optimizations and small bug fixes and improvements.
Bugs Fixed
Sometimes opening a project would leave open the old projects documents.
When making the project tree active, would have to click twice before you could drag the scroll bar. Now you can just click and drag the scroll bar.
Fixed a bug where you sometimes couldn’t delete a node after deleting a connection because the deleted connection stayed “selected” internally.
Fixed Fit Nodes To Screen editor command, was positioning nodes off the screen.
12/27/2019 - Embrio Software Update
Version 2.3.1.0
Bugs Fixed
Fixed compile bug some might experience on Mac
Fixed some display issues
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.
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.