Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Arduino is a project and community wich creates open-source software and open-source hardware. The Arduino boards and software are well suited for novices and expierenced programmers alike to create digital devices. In the following we will see how to develop applications for the Arduino boards using SCCharts together with the Arduino Eclipse Plugin. Therefore we will first download and setup the development environment and afterwards create and upload a small example project.

If you want to learn the SCCharts langugage first, you can follow these links:

...

Download and Configure KIELER

...

You have to install the plugin manually via Help > Install new Software... . Use the following update site: http://eclipse.baeyens.it/update/V4/nightly

The installation might take a few minutes because it will install the Arduino Tools as well as required software such as the CDT. Furthermore it will download the newest version of the Arduino software and libraries.

...

Code Block
languagesct
themeEclipse
titleFloodlight.sct
scchart BlinkyModel {
    
    @Wrapper Clock, "500"
    input bool clock;
    
    @Wrapper DigitalWrite, "13"
    output bool light;
    
    initial state lightOff
    --> lightOn with clock / light = true;
    
    state lightOn
    --> lightOff with clock / light = false;
}

...

The available wrapper code snippets are defined in the snippets assets directory of the project in ftl files (FreeMarker template files). In the default configuration of a new SCCharts project for Arduino, the file main.ftl is processed to create the entry point of the program. Thus it includes other templates containing the available code snippets. The table below gives an overview of the available wrapper code snippets.

Note: To view ftl files with highlighting, you may want to install the FreeMarker IDE feature from the JBoss Tools. However, this is not necessary to work with KIELER. JBoss Tools is available in the Eclipse Market Place and via update site. The update site for Eclipse Luna is stable releases is http://download.jboss.org/jbosstools/updatesneon/stable/lunaupdates/ . Note that only the FreeMarker IDE feature is required (Abridged JBoss Tools > FreeMarker IDE).

...

Build the project:

With the mouse over the SCT file in the project explorer, perform Right Click > Run As > KiCo Compilation.

A launch config is created, which compiles the model to C code and creates wrapper code from the annotations in the model file. Afterwards this output is compiled and deployed to the Arduino board, by using the launch shortcut from the Arduino Plugin. If any errors occur, you can see them in the Console View.

For a deeper understanding of the project launch and initialization, take a look at the wiki page for PromAfter the modeling is done, the project can be built. Select Project > Build Project. This will create a new folder kieler-gen with the compiled model file. Further the wrapper code for the model is processed. After the build finished sucessfully, the ino file for the project has been updated with the new wrapper code for the model, and thus the project can be deployed to the Arduino board. The Eclipse Arduino Plugin provides an upload button for this task in the toolbar.

Excluding the simulation folder from the CDT build

A simulation of models is created as part of a build inside kieler-gen/sim/bin. The files inside the sim folder are compiled separately and should not be compiled using the CDT. Otherwise errors will occur, for example because every simulation has its own main function and the CDT expects only one for the project.

Thus the folder kieler-gen/sim has to be excluded from the CDT build. Therefore select the folder and do Right Click > Resource Configurations > Exclude From Build.

Simulating the model

To use the simulation inside the folder kieler-gen/sim/bin, first change to the Simulation Perspective, which provides new buttons in the toolbar. The executables in the bin folder can then be launched via Right Click > KIELER Simulation. The output of a running simulation can be seen in the Data Pool View.

Available Wrapper Code Snippets

There are several wrapper code snippets that can be used as annotations on input and output variables in the model file. These snippets are inserted in the main file template as part of the project launch. The available snippets are listed below.

Snippet Name and ParametersDescriptionUse onVariable typeRemarkDefined in File
Clock, millisecondsSets a variable to true if the time in milliseconds passed.inputboolSee also ResetClock.timing.ftl
ResetClock, clockVariableName, autoFalse

Resets a clock, such that the full time intervall of the clock has to elapse, before the clock will be set to true again.

If autoFalse is true, the reset variable will be set to false automatically.

outputboolautoFalse is true per default.timing.ftl
TimeReads the elapsed time since program start in milliseconds.inputunsigned
 

timing.ftl
TickDuration, targetInMilliseconds

Delays the execution until the tick loop takes at least as long as the given target duration.

The input variable is set to the actual tick loop duration.

inputunsignedShould be used on the very first input variable in the model, so that waiting is the last action in the tick loop.timing.ftl
Delay
Lets the program delay the time in milliseconds of the variable value.outputunsigned
 

timing.ftl
SerialRate, baud
Sets the baud rate for communication. This is done only in the initilization, not in the loop.outputunsigned
 

print.ftl
PrintPrints a string variable if the string is not 0.outputstring
 

print.ftl
DigitalWrite, pinSets the pin value to HIGH if the variable is true and to LOW otherwise.outputbool
 

read_and_write.ftl
DigitalRead, pinSets the variable value to the pin state (HIGH or LOW).inputbool
 

read_and_write.ftl
AnalogWrite, pin

Sets the voltage of the given analog IO pin via pulse-width modulation (PWM). Integers from 0 to 1023 are linearly mapped to an pseudo voltage from 0V to 5V.

outputint
 

read_and_write.ftl
AnalogRead, pin

Reads the value of the given analog IO pin. Voltage from 0V to 5V is linearly mapped to an integer value from 0 to 1023.

inputint
 

read_and_write.ftl

...

Using the Serial Monitor

The Arduino Eclipse Plugin has a Serial Monitor (Window > Show View > Other > Arduino > Serial monitor view). Here you can open connections to serial ports and read and write to them.

...

The following presents typical issues and how to solve them.

IssueTypical Error MessagesDescriptionSolution
The upload protocol is not setavrdude: Error: Could not find USBtiny device (0x1781/0xc9f)

You launch a project and there is no different behaviour on your Arduino device, although there are changes in code.

You try to launch the project and compilation finishes successful. However The upload fails because the upload protocol is not correctly configured.

Go to the project properties and select Default in the field Upload Protocol (Right click on project > Properties > Arduino > Arduino Board Selection)
The sim folder is not excluded from the CDT buildProblem markers on files inside the folder kieler-gen/simThe CDT tries to compile the simulation of models as part of a build, which causes problems.Select the sim folder and do Right Click > Resource Configurations > Exclude From Build