<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://studio.cse.chalmers.se/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Studio+Director</id>
	<title>IxD Studio - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://studio.cse.chalmers.se/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Studio+Director"/>
	<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Special:Contributions/Studio_Director"/>
	<updated>2026-05-02T19:16:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=157</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=157"/>
		<updated>2026-05-02T04:23:23Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Xl330-horn-modular.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-horn-modular.png&amp;diff=156</id>
		<title>File:Xl330-horn-modular.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-horn-modular.png&amp;diff=156"/>
		<updated>2026-05-02T04:23:03Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dynamixel XL330 servo horn.&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=155</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=155"/>
		<updated>2026-05-02T04:21:09Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:xl330-rotating-horn-modular.png.png|thumb|Dynamixel XL330 horn]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=154</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=154"/>
		<updated>2026-05-02T04:20:51Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* XL330 horns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:xl330-rotating-horn-modular.png|thumb|Dynamixel XL330 horn]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=153</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=153"/>
		<updated>2026-05-02T04:20:33Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:xl330-rotating-hornet-modular.png|thumb|Dynamixel XL330 horn]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=152</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=152"/>
		<updated>2026-05-02T04:20:05Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:xl330-rotating-hornet-modular.png.png|thumb|Dynamixel XL330 horn]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=151</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=151"/>
		<updated>2026-05-02T04:18:41Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;= XL330 horns =  OpenSCAD code  &amp;lt;pre&amp;gt; $fn=32;  inner = 6; // 6mm inner empty space for front hornet screw outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet  r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet) l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm t = 2; // t=2mm, global thickness d = 16; // d=16mm, front/back hand distance h = 30; // h=30mm, upper hand distance  module pins(r, l, t){     /* r: radius, l: length, t: thickne...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Dynamixel-xl330-rotating-horn.png.png&amp;diff=150</id>
		<title>File:Dynamixel-xl330-rotating-horn.png.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Dynamixel-xl330-rotating-horn.png.png&amp;diff=150"/>
		<updated>2026-05-02T04:18:18Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rotating horn for XL330&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&amp;diff=149</id>
		<title>Servo accessories</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&amp;diff=149"/>
		<updated>2026-04-30T12:43:13Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* Dynamixel XL330 horns * Dynamixel XL330 mounts&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Dynamixel XL330 horns]]&lt;br /&gt;
* [[Dynamixel XL330 mounts]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing_models&amp;diff=148</id>
		<title>3D printing models</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing_models&amp;diff=148"/>
		<updated>2026-04-30T12:40:18Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* Servo accessories&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Servo accessories]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Main_Page&amp;diff=147</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Main_Page&amp;diff=147"/>
		<updated>2026-04-30T12:33:39Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Useful Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IxD Studio Equipment ==&lt;br /&gt;
&lt;br /&gt;
The wiki mostly serves as technical support and inquiry for available equipment related to:&lt;br /&gt;
&lt;br /&gt;
* [[3D printing]]&lt;br /&gt;
* [[Electronics]]&lt;br /&gt;
* [[Laser cutting]]&lt;br /&gt;
* [[Printers]]&lt;br /&gt;
&amp;lt;!-- [[Wood workshop]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful Documents ==&lt;br /&gt;
&lt;br /&gt;
* [[Studio internal]]&lt;br /&gt;
* [[3D printing models]]&lt;br /&gt;
&lt;br /&gt;
== Useful Software ==&lt;br /&gt;
&lt;br /&gt;
* [[CAD]]&lt;br /&gt;
* [[Programming]]&lt;br /&gt;
* [[Simulators]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=146</id>
		<title>Dynamixel XL330</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=146"/>
		<updated>2026-04-25T17:56:02Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330-M288-T =&lt;br /&gt;
&lt;br /&gt;
Manual: https://emanual.robotis.com/docs/en/dxl/x/xl330-m288/&lt;br /&gt;
&lt;br /&gt;
== Dimensions == &lt;br /&gt;
See the mechanical diagram: https://www.robotis.com/service/download.php?no=1986&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=145</id>
		<title>Dynamixel XL330</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=145"/>
		<updated>2026-04-25T17:55:27Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* XL330-M288-T */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330-M288-T =&lt;br /&gt;
&lt;br /&gt;
== Dimensions == &lt;br /&gt;
See the mechanical diagram: https://www.robotis.com/service/download.php?no=1986&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Programming_Dynamixel_servos&amp;diff=144</id>
		<title>Programming Dynamixel servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Programming_Dynamixel_servos&amp;diff=144"/>
		<updated>2026-04-25T17:37:21Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* OpenRB-150 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Dynamixel Wizard Software =&lt;br /&gt;
&lt;br /&gt;
Dynamixel servos have an assigned ID that ranges from 0-252. In order to control each servo individually when interconnected in a daisy-chain manner, each servo must have a unique ID.&lt;br /&gt;
&lt;br /&gt;
= OpenRB-150 =&lt;br /&gt;
&lt;br /&gt;
To assign unique ID to the servos we use the Dynamixel Wizard software and the OpenRB-150 board. After installation of the OpenRB-150 board using the Arduino board manager, we can find the example &amp;quot;usb_2_dynamixel&amp;quot;. We upload via the example to the board, then quit the Arduino IDE and open the Dynamixel Wizard software.&lt;br /&gt;
&lt;br /&gt;
Search the following videos on the ROBOTIS OpenSourceTeam Youtube channel:&lt;br /&gt;
  - DYNAMIXEL Quick Start Guide with Arduino &lt;br /&gt;
  - DYNAMIXEL Tips | Use ID Inspection to resolve duplicated ID collision&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Programming_Dynamixel_servos&amp;diff=143</id>
		<title>Programming Dynamixel servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Programming_Dynamixel_servos&amp;diff=143"/>
		<updated>2026-04-25T17:33:38Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;= Dynamixel Wizard Software =  Dynamixel servos have an assigned ID that ranges from 0-252. In order to control each servo individually when interconnected in a daisy-chain manner, each servo must have a unique ID.  = OpenRB-150 =  To assign unique ID to the servos we use the Dynamixel Wizard software and the OpenRB-150 board. After installation of the OpenRB-150 board using the Arduino board manager, we can find the example &amp;quot;usb_2_dynamixel&amp;quot;. We upload via the example t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Dynamixel Wizard Software =&lt;br /&gt;
&lt;br /&gt;
Dynamixel servos have an assigned ID that ranges from 0-252. In order to control each servo individually when interconnected in a daisy-chain manner, each servo must have a unique ID.&lt;br /&gt;
&lt;br /&gt;
= OpenRB-150 =&lt;br /&gt;
&lt;br /&gt;
To assign unique ID to the servos we use the Dynamixel Wizard software and the OpenRB-150 board. After installation of the OpenRB-150 board using the Arduino board manager, we can find the example &amp;quot;usb_2_dynamixel&amp;quot;. We upload via the example to the board, then quit the Arduino IDE and open the Dynamixel Wizard software.&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Digital_servos&amp;diff=142</id>
		<title>Digital servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Digital_servos&amp;diff=142"/>
		<updated>2026-04-25T17:28:18Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Dynamixel XL320]]&lt;br /&gt;
* [[Dynamixel XL330]]&lt;br /&gt;
* [[Programming Dynamixel servos]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=141</id>
		<title>Dynamixel XL330</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=141"/>
		<updated>2026-04-25T17:27:34Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;= XL330-M288-T =&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330-M288-T =&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Digital_servos&amp;diff=140</id>
		<title>Digital servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Digital_servos&amp;diff=140"/>
		<updated>2026-04-25T17:26:19Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* Dynamixel XL320 * Dynamixel XL330&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Dynamixel XL320]]&lt;br /&gt;
* [[Dynamixel XL330]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Servos&amp;diff=139</id>
		<title>Servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Servos&amp;diff=139"/>
		<updated>2026-04-25T17:25:38Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[DYNAMIXEL servos]]&lt;br /&gt;
* [[Digital servos]]&lt;br /&gt;
* [[Standard servos]]&lt;br /&gt;
* [[Continuous servos]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Simulators&amp;diff=138</id>
		<title>Simulators</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Simulators&amp;diff=138"/>
		<updated>2026-04-14T15:28:10Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Circuit Simulators&lt;br /&gt;
&lt;br /&gt;
* [[WOKWI]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=WOKWI&amp;diff=137</id>
		<title>WOKWI</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=WOKWI&amp;diff=137"/>
		<updated>2026-04-11T13:24:58Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;https://wokwi.com&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://wokwi.com&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Simulators&amp;diff=136</id>
		<title>Simulators</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Simulators&amp;diff=136"/>
		<updated>2026-04-11T13:24:40Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* WOKWI&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[WOKWI]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Main_Page&amp;diff=135</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Main_Page&amp;diff=135"/>
		<updated>2026-04-11T13:24:07Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Useful Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IxD Studio Equipment ==&lt;br /&gt;
&lt;br /&gt;
The wiki mostly serves as technical support and inquiry for available equipment related to:&lt;br /&gt;
&lt;br /&gt;
* [[3D printing]]&lt;br /&gt;
* [[Electronics]]&lt;br /&gt;
* [[Laser cutting]]&lt;br /&gt;
* [[Printers]]&lt;br /&gt;
&amp;lt;!-- [[Wood workshop]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful Documents ==&lt;br /&gt;
&lt;br /&gt;
* [[Studio internal]]&lt;br /&gt;
&lt;br /&gt;
== Useful Software ==&lt;br /&gt;
&lt;br /&gt;
* [[CAD]]&lt;br /&gt;
* [[Programming]]&lt;br /&gt;
* [[Simulators]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Microprocessors&amp;diff=134</id>
		<title>Microprocessors</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Microprocessors&amp;diff=134"/>
		<updated>2026-03-12T10:18:09Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Arduino =&lt;br /&gt;
&lt;br /&gt;
- [[Arduino UNO]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Leonardo]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Mega]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Due]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino MKR WiFi 1010]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino MKR Zero]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Nano 33 BLE Sense]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Nano RP2040 Connect]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Rasperry Pi =&lt;br /&gt;
&lt;br /&gt;
- [[Raspberry Pi 3 Model B]]&lt;br /&gt;
&lt;br /&gt;
- [[Raspberry Pi 4]]&lt;br /&gt;
&lt;br /&gt;
- [[Raspberry Pico]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Microprocessors&amp;diff=133</id>
		<title>Microprocessors</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Microprocessors&amp;diff=133"/>
		<updated>2026-03-12T10:16:36Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Arduino =&lt;br /&gt;
&lt;br /&gt;
- [[Arduino UNO]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Mega]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Due]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Nano 33 BLE Sense]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino MKR WiFi 1010]]&lt;br /&gt;
&lt;br /&gt;
- [[Arduino Nano RP2040 Connect]]&lt;br /&gt;
&lt;br /&gt;
= Rasperry Pi =&lt;br /&gt;
&lt;br /&gt;
- [[Raspberry Pi 4]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=132</id>
		<title>3D printing</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=132"/>
		<updated>2026-03-11T14:16:44Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* How the settings look like in the PrusaSlicer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 3D printers ==&lt;br /&gt;
&lt;br /&gt;
We have three Prusa printers in the Studio, one MK4 and two [https://www.prusa3d.com/product/original-prusa-mk4s/ MK4S].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Install Prusa Software - PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Download and install the PrusaSlicer software -- the software translates your 3D model into machine readable instructions for the 3D printer.&lt;br /&gt;
* https://github.com/prusa3d/PrusaSlicer/releases&lt;br /&gt;
* https://www.prusa3d.com/page/prusaslicer_424/ &lt;br /&gt;
&lt;br /&gt;
A configuration wizard might open up when install is complete, if this happens click through all steps and make sure the correct Prusa is selected in step 4 (see image).&lt;br /&gt;
[[File:ConfigurationWizard.png|thumb|Correct setting for PrusaSlicer for MK4 and MK4S]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to print&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Export your 3D model into .stl or .f3d file format&lt;br /&gt;
* Open 3D model with PrusaSlicer&lt;br /&gt;
* Check that all settings are correct, make sure to add support when needed&lt;br /&gt;
* Press button &amp;quot;Slice now&amp;quot; in the bottom right corner&lt;br /&gt;
* If everything looks ok, export the file by pressing &amp;quot;Export G-code&amp;quot; in the bottom right corner&lt;br /&gt;
* Now you have a .gcode file, put the file into a USB stick and plug it into the 3D printer&lt;br /&gt;
** After plugging the USB stick you should see your model on the Prusa screen&lt;br /&gt;
** If you don&#039;t see your model on the Prusa screen turn the knob on the screen panel to find your file&lt;br /&gt;
* Press the knob to start printing your model&lt;br /&gt;
* Stay and check that the print start correctly. If the print fails, something with the settings on the slice is wrong and you need to go back and change the settings&lt;br /&gt;
&lt;br /&gt;
[[File:MK4S-1.png|thumb|Prusa MK4S]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[File:MK4S-head-1.png|thumb|Prusa MK4S head]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How the settings look like in the PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Settings for the Prusa MK4 on the Prusaslicer:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Print settings&#039;&#039;&#039;: 0.20mm SPEED&lt;br /&gt;
* &#039;&#039;&#039;Filament&#039;&#039;&#039;: Generic PLA&lt;br /&gt;
* &#039;&#039;&#039;Printer&#039;&#039;&#039;: Original Prusa MK4 Input Shaper 0.4 nozzle&lt;br /&gt;
* &#039;&#039;&#039;Supports&#039;&#039;&#039;: None (change to &amp;quot;Support on the build plate only&amp;quot; in case you get error messages after the slicing is done -- this setting depends on your geometry)&lt;br /&gt;
* &#039;&#039;&#039;Infill&#039;&#039;&#039;: 15% (recommended)&lt;br /&gt;
* &#039;&#039;&#039;Brim&#039;&#039;&#039;: [unticked] (Select to print a so-called brim in case is necessary for your geometry, typically when you have little touching surface with the build plate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:prusa-slicer-settings.png|thumb|Prusaslicer settings for MK4]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=131</id>
		<title>3D printing</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=131"/>
		<updated>2026-03-11T14:14:47Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 3D printers ==&lt;br /&gt;
&lt;br /&gt;
We have three Prusa printers in the Studio, one MK4 and two [https://www.prusa3d.com/product/original-prusa-mk4s/ MK4S].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Install Prusa Software - PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Download and install the PrusaSlicer software -- the software translates your 3D model into machine readable instructions for the 3D printer.&lt;br /&gt;
* https://github.com/prusa3d/PrusaSlicer/releases&lt;br /&gt;
* https://www.prusa3d.com/page/prusaslicer_424/ &lt;br /&gt;
&lt;br /&gt;
A configuration wizard might open up when install is complete, if this happens click through all steps and make sure the correct Prusa is selected in step 4 (see image).&lt;br /&gt;
[[File:ConfigurationWizard.png|thumb|Correct setting for PrusaSlicer for MK4 and MK4S]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to print&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Export your 3D model into .stl or .f3d file format&lt;br /&gt;
* Open 3D model with PrusaSlicer&lt;br /&gt;
* Check that all settings are correct, make sure to add support when needed&lt;br /&gt;
* Press button &amp;quot;Slice now&amp;quot; in the bottom right corner&lt;br /&gt;
* If everything looks ok, export the file by pressing &amp;quot;Export G-code&amp;quot; in the bottom right corner&lt;br /&gt;
* Now you have a .gcode file, put the file into a USB stick and plug it into the 3D printer&lt;br /&gt;
** After plugging the USB stick you should see your model on the Prusa screen&lt;br /&gt;
** If you don&#039;t see your model on the Prusa screen turn the knob on the screen panel to find your file&lt;br /&gt;
* Press the knob to start printing your model&lt;br /&gt;
* Stay and check that the print start correctly. If the print fails, something with the settings on the slice is wrong and you need to go back and change the settings&lt;br /&gt;
&lt;br /&gt;
[[File:MK4S-1.png|thumb|Prusa MK4S]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[File:MK4S-head-1.png|thumb|Prusa MK4S head]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How the settings look like in the PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Settings for the Prusa MK4 on the Prusaslicer:&lt;br /&gt;
&lt;br /&gt;
* Print settings: 0.20mm SPEED&lt;br /&gt;
* Filament: Generic PLA&lt;br /&gt;
* Printer: Original Prusa MK4 Input Shaper 0.4 nozzle&lt;br /&gt;
* Supports: None (change to &amp;quot;Support on the build plate only&amp;quot; in case you get error messages after the slicing is done -- this setting depends on your geometry)&lt;br /&gt;
* Infill: 15% (recommended)&lt;br /&gt;
* Brim: [unticked] (Select to print a so-called brim in case is necessary for your geometry, typically when you have little touching surface with the build plate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:prusa-slicer-settings.png|thumb|Prusaslicer settings for MK4]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=130</id>
		<title>3D printing</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=130"/>
		<updated>2026-03-11T14:08:48Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* How the settings look like in the PrusaSlicer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 3D printers ==&lt;br /&gt;
&lt;br /&gt;
We have three Prusa printers in the Studio, one MK4 and two [https://www.prusa3d.com/product/original-prusa-mk4s/ MK4S].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Install Prusa Software - PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Download and install the PrusaSlicer software -- the software translates your 3D model into machine readable instructions for the 3D printer.&lt;br /&gt;
* https://github.com/prusa3d/PrusaSlicer/releases&lt;br /&gt;
* https://www.prusa3d.com/page/prusaslicer_424/ &lt;br /&gt;
&lt;br /&gt;
A configuration wizard might open up when install is complete, if this happens click through all steps and make sure the correct Prusa is selected in step 4 (see image).&lt;br /&gt;
[[File:ConfigurationWizard.png|thumb|Correct setting for PrusaSlicer for MK4 and MK4S]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to print&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Export your 3D model into .stl or .f3d file format&lt;br /&gt;
* Open 3D model with PrusaSlicer&lt;br /&gt;
* Check that all settings are correct, make sure to add support when needed&lt;br /&gt;
* Press button &amp;quot;Slice now&amp;quot; in the bottom right corner&lt;br /&gt;
* If everything looks ok, export the file by pressing &amp;quot;Export G-code&amp;quot; in the bottom right corner&lt;br /&gt;
* Now you have a .gcode file, put the file into a USB stick and plug it into the 3D printer&lt;br /&gt;
** After plugging the USB stick you should see your model on the Prusa screen&lt;br /&gt;
** If you don&#039;t see your model on the Prusa screen turn the knob on the screen panel to find your file&lt;br /&gt;
* Press the knob to start printing your model&lt;br /&gt;
* Stay and check that the print start correctly. If the print fails, something with the settings on the slice is wrong and you need to go back and change the settings&lt;br /&gt;
&lt;br /&gt;
[[File:MK4S-1.png|thumb|Prusa MK4S]]&lt;br /&gt;
&lt;br /&gt;
[[File:MK4S-head-1.png|thumb|Prusa MK4S head]]&lt;br /&gt;
&lt;br /&gt;
==== How the settings look like in the PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Settings for the Prusa MK4 on the Prusaslicer:&lt;br /&gt;
&lt;br /&gt;
* Print settings: 0.20mm SPEED&lt;br /&gt;
* Filament: Generic PLA&lt;br /&gt;
* Printer: Original Prusa MK4 Input Shaper 0.4 nozzle&lt;br /&gt;
* Supports: None (change to &amp;quot;Support on the build plate only&amp;quot; in case you get error messages after the slicing is done -- this setting depends on your geometry)&lt;br /&gt;
* Infill: 15% (recommended)&lt;br /&gt;
* Brim: [unticked] (Select to print a so-called brim in case is necessary for your geometry, typically when you have little touching surface with the build plate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:prusa-slicer-settings.png|thumb|Prusaslicer settings for MK4]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=129</id>
		<title>3D printing</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=129"/>
		<updated>2026-03-11T14:00:29Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 3D printers ==&lt;br /&gt;
&lt;br /&gt;
We have three Prusa printers in the Studio, one MK4 and two [https://www.prusa3d.com/product/original-prusa-mk4s/ MK4S].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Install Prusa Software - PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Download and install the PrusaSlicer software -- the software translates your 3D model into machine readable instructions for the 3D printer.&lt;br /&gt;
* https://github.com/prusa3d/PrusaSlicer/releases&lt;br /&gt;
* https://www.prusa3d.com/page/prusaslicer_424/ &lt;br /&gt;
&lt;br /&gt;
A configuration wizard might open up when install is complete, if this happens click through all steps and make sure the correct Prusa is selected in step 4 (see image).&lt;br /&gt;
[[File:ConfigurationWizard.png|thumb|Correct setting for PrusaSlicer for MK4 and MK4S]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to print&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Export your 3D model into .stl or .f3d file format&lt;br /&gt;
* Open 3D model with PrusaSlicer&lt;br /&gt;
* Check that all settings are correct, make sure to add support when needed&lt;br /&gt;
* Press button &amp;quot;Slice now&amp;quot; in the bottom right corner&lt;br /&gt;
* If everything looks ok, export the file by pressing &amp;quot;Export G-code&amp;quot; in the bottom right corner&lt;br /&gt;
* Now you have a .gcode file, put the file into a USB stick and plug it into the 3D printer&lt;br /&gt;
** After plugging the USB stick you should see your model on the Prusa screen&lt;br /&gt;
** If you don&#039;t see your model on the Prusa screen turn the knob on the screen panel to find your file&lt;br /&gt;
* Press the knob to start printing your model&lt;br /&gt;
* Stay and check that the print start correctly. If the print fails, something with the settings on the slice is wrong and you need to go back and change the settings&lt;br /&gt;
&lt;br /&gt;
[[File:MK4S-1.png|thumb|Prusa MK4S]]&lt;br /&gt;
&lt;br /&gt;
[[File:MK4S-head-1.png|thumb|Prusa MK4S head]]&lt;br /&gt;
&lt;br /&gt;
==== How the settings look like in the PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
[[File:prusa-slicer-settings.png|thumb|Prusaslicer settings for MK4]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Prusa-slicer-settings.png&amp;diff=128</id>
		<title>File:Prusa-slicer-settings.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Prusa-slicer-settings.png&amp;diff=128"/>
		<updated>2026-03-11T13:59:33Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prusa slicer settings on Prusa MK4&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=DYNAMIXEL_servos&amp;diff=127</id>
		<title>DYNAMIXEL servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=DYNAMIXEL_servos&amp;diff=127"/>
		<updated>2026-03-07T02:22:09Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Dynamixel motor control (MKR Zero) =&lt;br /&gt;
&lt;br /&gt;
* Product DYNAMIXEL Shield for Arduino MKR Series: https://store.arduino.cc/products/dynamixel-shield-for-arduino-mkr-series?srsltid=AfmBOoq7ptPLfwzykpUecfmQo3vii_8N3padSzJVAQ7RiUqJHuECxUOW&lt;br /&gt;
* Product Dynamixel XL-320 Servo: https://store.arduino.cc/products/dynamixel-xl-320&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
* Install the library DynamixelShield in the Arduino IDE&lt;br /&gt;
** GitHub: https://github.com/ROBOTIS-GIT/DynamixelShield&lt;br /&gt;
** Documentation: https://emanual.robotis.com/docs/en/parts/interface/mkr_shield/&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
This script is based on the example code provided with the DynamixelShield Arduino library.  &lt;br /&gt;
Some modifications were required to make it work with the MKR Zero board, the MKR shield, and the Dynamixel motor used in this setup.&lt;br /&gt;
&lt;br /&gt;
The main changes are:&lt;br /&gt;
&lt;br /&gt;
* The shield communicates through &#039;&#039;&#039;Serial1&#039;&#039;&#039; on the MKR Zero.&lt;br /&gt;
* The port baudrate had to be set to &#039;&#039;&#039;1,000,000&#039;&#039;&#039; because the motor did not respond when using the default baudrate in the original example.&lt;br /&gt;
* Debug output is sent to the Arduino Serial Monitor.&lt;br /&gt;
&lt;br /&gt;
The script first checks if the motor is connected using &#039;&#039;&#039;ping()&#039;&#039;&#039;.  &lt;br /&gt;
If the motor responds, torque is enabled and the operating mode is set to &#039;&#039;&#039;position control&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In the loop the motor is commanded to move to different positions.  &lt;br /&gt;
The position is set once using a raw value and once using degrees, and the current motor position is printed to the Serial Monitor.&lt;br /&gt;
&lt;br /&gt;
A raw position value corresponds to the internal encoder value of the motor, while &#039;&#039;&#039;UNIT_DEGREE&#039;&#039;&#039; allows the position to be set using degrees.&lt;br /&gt;
&lt;br /&gt;
== Useful commands in Dynamixel2Arduino library ==&lt;br /&gt;
&lt;br /&gt;
https://emanual.robotis.com/docs/en/parts/interface/mkr_shield/#dynamixel2arduino-class&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;setOperatingMode&#039;&#039;&#039;: Set whether you control the position, velocity or other parameters.&lt;br /&gt;
* &#039;&#039;&#039;setGoalPosition&#039;&#039;&#039;: Set the end position using angles.&lt;br /&gt;
* &#039;&#039;&#039;setGoalVelocity&#039;&#039;&#039;: Set the velocity of the motor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
* ROBOTIS Example - Fixed for MKR Zero&lt;br /&gt;
*******************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;DynamixelShield.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DXL_SERIAL Serial1&lt;br /&gt;
#define DEBUG_SERIAL Serial&lt;br /&gt;
&lt;br /&gt;
const uint8_t DXL_ID = 1;&lt;br /&gt;
const float DXL_PROTOCOL_VERSION = 2.0;&lt;br /&gt;
&lt;br /&gt;
DynamixelShield dxl(DXL_SERIAL);&lt;br /&gt;
&lt;br /&gt;
//This namespace is required to use Control table item names&lt;br /&gt;
using namespace ControlTableItem;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.begin(115200);&lt;br /&gt;
  while(!DEBUG_SERIAL);&lt;br /&gt;
&lt;br /&gt;
  // Set Port baudrate (motor responded at 1,000,000)&lt;br /&gt;
  dxl.begin(1000000);&lt;br /&gt;
&lt;br /&gt;
  dxl.setPortProtocolVersion(DXL_PROTOCOL_VERSION);&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.println(&amp;quot;Pinging motor...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  if(dxl.ping(DXL_ID))&lt;br /&gt;
    DEBUG_SERIAL.println(&amp;quot;Motor connected!&amp;quot;);&lt;br /&gt;
  else&lt;br /&gt;
    DEBUG_SERIAL.println(&amp;quot;Motor NOT detected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  dxl.torqueOff(DXL_ID);&lt;br /&gt;
  dxl.setOperatingMode(DXL_ID, OP_POSITION);&lt;br /&gt;
  dxl.torqueOn(DXL_ID);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
  dxl.setGoalPosition(DXL_ID, 512);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.print(&amp;quot;Present Position(raw) : &amp;quot;);&lt;br /&gt;
  DEBUG_SERIAL.println(dxl.getPresentPosition(DXL_ID));&lt;br /&gt;
&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  dxl.setGoalPosition(DXL_ID, 90, UNIT_DEGREE);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.print(&amp;quot;Present Position(degree) : &amp;quot;);&lt;br /&gt;
  DEBUG_SERIAL.println(dxl.getPresentPosition(DXL_ID, UNIT_DEGREE));&lt;br /&gt;
&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternative simple test ==&lt;br /&gt;
&lt;br /&gt;
The following script is a simpler test program that only moves the motor between two positions (0° and 90°).  &lt;br /&gt;
This can be useful to quickly verify that the motor and shield are working correctly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;DynamixelShield.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DXL_SERIAL Serial1&lt;br /&gt;
#define DEBUG_SERIAL Serial&lt;br /&gt;
&lt;br /&gt;
DynamixelShield dxl(DXL_SERIAL);&lt;br /&gt;
&lt;br /&gt;
const uint8_t ID = 1;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.begin(115200);&lt;br /&gt;
  while(!DEBUG_SERIAL);&lt;br /&gt;
&lt;br /&gt;
  dxl.begin(1000000);&lt;br /&gt;
  dxl.setPortProtocolVersion(2.0);&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.println(&amp;quot;Motor connected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  dxl.torqueOff(ID);&lt;br /&gt;
  dxl.setOperatingMode(ID, OP_POSITION);&lt;br /&gt;
  dxl.torqueOn(ID);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.println(&amp;quot;Move to 90°&amp;quot;);&lt;br /&gt;
  dxl.setGoalPosition(ID, 90, UNIT_DEGREE);&lt;br /&gt;
  delay(3000);&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.println(&amp;quot;Move to 0°&amp;quot;);&lt;br /&gt;
  dxl.setGoalPosition(ID, 0, UNIT_DEGREE);&lt;br /&gt;
  delay(3000);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Find motor ID ==&lt;br /&gt;
&lt;br /&gt;
If the motor ID is unknown, the following script can be used to scan for connected Dynamixel motors.  &lt;br /&gt;
The script tries to ping motors with ID values between 0 and 19 and prints the detected ID in the Serial Monitor.&lt;br /&gt;
&lt;br /&gt;
This is useful if the motor does not respond to commands because the wrong ID is used in the control script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;DynamixelShield.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DXL_SERIAL Serial1&lt;br /&gt;
#define DEBUG_SERIAL Serial&lt;br /&gt;
&lt;br /&gt;
DynamixelShield dxl(DXL_SERIAL);&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.begin(115200);&lt;br /&gt;
  while(!DEBUG_SERIAL);&lt;br /&gt;
&lt;br /&gt;
  dxl.begin(1000000);&lt;br /&gt;
  dxl.setPortProtocolVersion(2.0);&lt;br /&gt;
&lt;br /&gt;
  DEBUG_SERIAL.println(&amp;quot;Scanning for motors...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  for(int id=0; id&amp;lt;20; id++){&lt;br /&gt;
    if(dxl.ping(id)){&lt;br /&gt;
      DEBUG_SERIAL.print(&amp;quot;Motor found with ID: &amp;quot;);&lt;br /&gt;
      DEBUG_SERIAL.println(id);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop(){}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Common issues when working with Dynamixel motors:&lt;br /&gt;
&lt;br /&gt;
* The motor does not respond → check that the correct &#039;&#039;&#039;baudrate&#039;&#039;&#039; is used.&lt;br /&gt;
* The motor is not detected → verify the &#039;&#039;&#039;motor ID&#039;&#039;&#039; using the script above.&lt;br /&gt;
* No movement → make sure &#039;&#039;&#039;torque&#039;&#039;&#039; is enabled.&lt;br /&gt;
* Communication problems → confirm that the shield switch is set to &#039;&#039;&#039;TTL&#039;&#039;&#039;.&lt;br /&gt;
* Motor not powered → check the external power supply connected to the shield.&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Servos&amp;diff=121</id>
		<title>Servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Servos&amp;diff=121"/>
		<updated>2026-03-05T16:02:09Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* DYNAMIXEL servos * Standard servos * Continuous servos&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[DYNAMIXEL servos]]&lt;br /&gt;
* [[Standard servos]]&lt;br /&gt;
* [[Continuous servos]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Programmable_LEDs&amp;diff=117</id>
		<title>Programmable LEDs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Programmable_LEDs&amp;diff=117"/>
		<updated>2026-03-04T11:30:18Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Source code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LED strip =&lt;br /&gt;
&lt;br /&gt;
* RS product: https://se.rs-online.com/web/p/led-ljuslister/1807500?gb=s&lt;br /&gt;
** Datasheet: https://docs.rs-online.com/c4c2/0900766b816d3d12.pdf&lt;br /&gt;
&lt;br /&gt;
== Dependencies == &lt;br /&gt;
* Install the library FastLED: https://github.com/FastLED/FastLED &lt;br /&gt;
** Documentation: https://github.com/FastLED/FastLED/wiki/Overview&lt;br /&gt;
** Basic usage: https://github.com/FastLED/FastLED/wiki/Basic-usage&lt;br /&gt;
&lt;br /&gt;
== Examples online ==&lt;br /&gt;
* https://learn.adafruit.com/adafruit-neopixel-uberguide/the-magic-of-neopixels&lt;br /&gt;
* https://create.arduino.cc/projecthub/whimsy-makerspace/arduino-compatible-nano-neopixel-controller-6f0c4b&lt;br /&gt;
&lt;br /&gt;
== How to use == &lt;br /&gt;
&lt;br /&gt;
[[File:Fastled-library.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Install the FastLED library in the Arduino IDE.&lt;br /&gt;
&lt;br /&gt;
=== How to connect the LED strip ===&lt;br /&gt;
&lt;br /&gt;
Make sure the arrows are pointing to the right direction. The beginning of an arrow indicates the connection point to the Arduino board.  The tip of the arrow show how the current flows in the strip.&lt;br /&gt;
&lt;br /&gt;
[[File:Fastled-connect bb.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
&lt;br /&gt;
Important functions:&lt;br /&gt;
* &#039;&#039;&#039;addLeds()&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;setBrightness()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The script depends on the number of LEDs (see variable &#039;&#039;&#039;NUM_LEDS&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// include library&lt;br /&gt;
#include&amp;lt;FastLED.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//define number of LED and pin&lt;br /&gt;
#define NUM_LEDS 4&lt;br /&gt;
#define DATA_PIN 3&lt;br /&gt;
&lt;br /&gt;
// create the ld object array&lt;br /&gt;
CRGB leds[NUM_LEDS];&lt;br /&gt;
&lt;br /&gt;
// define 3 byte for the random color&lt;br /&gt;
byte  r, g, b;&lt;br /&gt;
float brightness;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  // init the LED object&lt;br /&gt;
  FastLED.addLeds&amp;lt;NEOPIXEL, DATA_PIN&amp;gt;(leds, NUM_LEDS);&lt;br /&gt;
  // set random seed&lt;br /&gt;
  randomSeed(analogRead(0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // loop over the NUM_LEDS&lt;br /&gt;
  for (int cur = 0; cur &amp;lt; NUM_LEDS; cur++) {&lt;br /&gt;
    brightness = 50.0 / pow(2, cur);&lt;br /&gt;
    FastLED.setBrightness(brightness); // range: 0-255&lt;br /&gt;
    r = random(150, 200);&lt;br /&gt;
    g = random(100, 150);&lt;br /&gt;
    b = random(0, 50);&lt;br /&gt;
    //set the value to the led AND turn on&lt;br /&gt;
    leds[cur] = CRGB(r, g, b); FastLED.show();&lt;br /&gt;
    FastLED.delay(200);&lt;br /&gt;
    // turn off previous&lt;br /&gt;
    leds[cur] = CRGB::Black; FastLED.show();&lt;br /&gt;
    Serial.println(cur, DEC);&lt;br /&gt;
  }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Programmable_LEDs&amp;diff=116</id>
		<title>Programmable LEDs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Programmable_LEDs&amp;diff=116"/>
		<updated>2026-03-04T11:29:50Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LED strip =&lt;br /&gt;
&lt;br /&gt;
* RS product: https://se.rs-online.com/web/p/led-ljuslister/1807500?gb=s&lt;br /&gt;
** Datasheet: https://docs.rs-online.com/c4c2/0900766b816d3d12.pdf&lt;br /&gt;
&lt;br /&gt;
== Dependencies == &lt;br /&gt;
* Install the library FastLED: https://github.com/FastLED/FastLED &lt;br /&gt;
** Documentation: https://github.com/FastLED/FastLED/wiki/Overview&lt;br /&gt;
** Basic usage: https://github.com/FastLED/FastLED/wiki/Basic-usage&lt;br /&gt;
&lt;br /&gt;
== Examples online ==&lt;br /&gt;
* https://learn.adafruit.com/adafruit-neopixel-uberguide/the-magic-of-neopixels&lt;br /&gt;
* https://create.arduino.cc/projecthub/whimsy-makerspace/arduino-compatible-nano-neopixel-controller-6f0c4b&lt;br /&gt;
&lt;br /&gt;
== How to use == &lt;br /&gt;
&lt;br /&gt;
[[File:Fastled-library.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Install the FastLED library in the Arduino IDE.&lt;br /&gt;
&lt;br /&gt;
=== How to connect the LED strip ===&lt;br /&gt;
&lt;br /&gt;
Make sure the arrows are pointing to the right direction. The beginning of an arrow indicates the connection point to the Arduino board.  The tip of the arrow show how the current flows in the strip.&lt;br /&gt;
&lt;br /&gt;
[[File:Fastled-connect bb.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
&lt;br /&gt;
Important functions:&lt;br /&gt;
* &#039;&#039;&#039;random()&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;randomSeed()&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;addLeds()&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;setBrightness()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The script depends on the number of LEDs (see variable &#039;&#039;&#039;NUM_LEDS&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// include library&lt;br /&gt;
#include&amp;lt;FastLED.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//define number of LED and pin&lt;br /&gt;
#define NUM_LEDS 4&lt;br /&gt;
#define DATA_PIN 3&lt;br /&gt;
&lt;br /&gt;
// create the ld object array&lt;br /&gt;
CRGB leds[NUM_LEDS];&lt;br /&gt;
&lt;br /&gt;
// define 3 byte for the random color&lt;br /&gt;
byte  r, g, b;&lt;br /&gt;
float brightness;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  // init the LED object&lt;br /&gt;
  FastLED.addLeds&amp;lt;NEOPIXEL, DATA_PIN&amp;gt;(leds, NUM_LEDS);&lt;br /&gt;
  // set random seed&lt;br /&gt;
  randomSeed(analogRead(0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // loop over the NUM_LEDS&lt;br /&gt;
  for (int cur = 0; cur &amp;lt; NUM_LEDS; cur++) {&lt;br /&gt;
    brightness = 50.0 / pow(2, cur);&lt;br /&gt;
    FastLED.setBrightness(brightness); // range: 0-255&lt;br /&gt;
    r = random(150, 200);&lt;br /&gt;
    g = random(100, 150);&lt;br /&gt;
    b = random(0, 50);&lt;br /&gt;
    //set the value to the led AND turn on&lt;br /&gt;
    leds[cur] = CRGB(r, g, b); FastLED.show();&lt;br /&gt;
    FastLED.delay(200);&lt;br /&gt;
    // turn off previous&lt;br /&gt;
    leds[cur] = CRGB::Black; FastLED.show();&lt;br /&gt;
    Serial.println(cur, DEC);&lt;br /&gt;
  }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Programmable_LEDs&amp;diff=115</id>
		<title>Programmable LEDs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Programmable_LEDs&amp;diff=115"/>
		<updated>2026-03-04T11:21:48Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;= LED strip =  * RS product: https://se.rs-online.com/web/p/led-ljuslister/1807500?gb=s ** Datasheet: https://docs.rs-online.com/c4c2/0900766b816d3d12.pdf  == Dependencies ==  * Install the library FastLED: https://github.com/FastLED/FastLED  ** Documentation: https://github.com/FastLED/FastLED/wiki/Overview ** Basic usage: https://github.com/FastLED/FastLED/wiki/Basic-usage  == Examples online == * https://learn.adafruit.com/adafruit-neopixel-uberguide/the-magic-of-neop...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LED strip =&lt;br /&gt;
&lt;br /&gt;
* RS product: https://se.rs-online.com/web/p/led-ljuslister/1807500?gb=s&lt;br /&gt;
** Datasheet: https://docs.rs-online.com/c4c2/0900766b816d3d12.pdf&lt;br /&gt;
&lt;br /&gt;
== Dependencies == &lt;br /&gt;
* Install the library FastLED: https://github.com/FastLED/FastLED &lt;br /&gt;
** Documentation: https://github.com/FastLED/FastLED/wiki/Overview&lt;br /&gt;
** Basic usage: https://github.com/FastLED/FastLED/wiki/Basic-usage&lt;br /&gt;
&lt;br /&gt;
== Examples online ==&lt;br /&gt;
* https://learn.adafruit.com/adafruit-neopixel-uberguide/the-magic-of-neopixels&lt;br /&gt;
* https://create.arduino.cc/projecthub/whimsy-makerspace/arduino-compatible-nano-neopixel-controller-6f0c4b&lt;br /&gt;
&lt;br /&gt;
== How to use == &lt;br /&gt;
&lt;br /&gt;
[[File:Fastled-library.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Install the FastLED library in the Arduino IDE.&lt;br /&gt;
&lt;br /&gt;
=== How to connect the LED strip ===&lt;br /&gt;
&lt;br /&gt;
Make sure the arrows are pointing to the right direction. The beginning of an arrow indicates the connection point to the Arduino board.  The tip of the arrow show how the current flows in the strip.&lt;br /&gt;
&lt;br /&gt;
[[File:Fastled-connect bb.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// include library&lt;br /&gt;
#include&amp;lt;FastLED.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//define number of LED and pin&lt;br /&gt;
#define NUM_LEDS 4&lt;br /&gt;
#define DATA_PIN 3&lt;br /&gt;
&lt;br /&gt;
// create the ld object array&lt;br /&gt;
CRGB leds[NUM_LEDS];&lt;br /&gt;
&lt;br /&gt;
// define 3 byte for the random color&lt;br /&gt;
byte  r, g, b;&lt;br /&gt;
float brightness;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  // init the LED object&lt;br /&gt;
  FastLED.addLeds&amp;lt;NEOPIXEL, DATA_PIN&amp;gt;(leds, NUM_LEDS);&lt;br /&gt;
  // set random seed&lt;br /&gt;
  randomSeed(analogRead(0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // loop over the NUM_LEDS&lt;br /&gt;
  for (int cur = 0; cur &amp;lt; NUM_LEDS; cur++) {&lt;br /&gt;
    brightness = 50.0 / pow(2, cur);&lt;br /&gt;
    FastLED.setBrightness(brightness); // range: 0-255&lt;br /&gt;
    r = random(150, 200);&lt;br /&gt;
    g = random(100, 150);&lt;br /&gt;
    b = random(0, 50);&lt;br /&gt;
    //set the value to the led AND turn on&lt;br /&gt;
    leds[cur] = CRGB(r, g, b); FastLED.show();&lt;br /&gt;
    FastLED.delay(200);&lt;br /&gt;
    // turn off previous&lt;br /&gt;
    leds[cur] = CRGB::Black; FastLED.show();&lt;br /&gt;
    Serial.println(cur, DEC);&lt;br /&gt;
  }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Fastled-connect_bb.png&amp;diff=114</id>
		<title>File:Fastled-connect bb.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Fastled-connect_bb.png&amp;diff=114"/>
		<updated>2026-03-04T11:14:26Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connect LED strip to an Arduino UNO.&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Fastled-library.png&amp;diff=113</id>
		<title>File:Fastled-library.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Fastled-library.png&amp;diff=113"/>
		<updated>2026-03-04T11:12:58Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arduino IDE installing library&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=LEDs&amp;diff=112</id>
		<title>LEDs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=LEDs&amp;diff=112"/>
		<updated>2026-03-04T11:08:43Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* 5mm LED  * Programmable LEDs&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[5mm LED]]&lt;br /&gt;
&lt;br /&gt;
* [[Programmable LEDs]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Electronics&amp;diff=111</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Electronics&amp;diff=111"/>
		<updated>2026-03-04T11:08:09Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Components ==&lt;br /&gt;
&lt;br /&gt;
* [[Actuators]]&lt;br /&gt;
&lt;br /&gt;
* [[LEDs]]&lt;br /&gt;
&lt;br /&gt;
* [[Microprocessors]]&lt;br /&gt;
&lt;br /&gt;
* [[Sensors]]&lt;br /&gt;
&lt;br /&gt;
* [[Sound and Music]]&lt;br /&gt;
&lt;br /&gt;
* [[Visual Displays]]&lt;br /&gt;
&lt;br /&gt;
* [[Wireless Communication]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Electronics&amp;diff=110</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Electronics&amp;diff=110"/>
		<updated>2026-03-04T11:07:06Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Components ==&lt;br /&gt;
&lt;br /&gt;
* [[Sensors]]&lt;br /&gt;
&lt;br /&gt;
* [[Actuators]]&lt;br /&gt;
&lt;br /&gt;
* [[Microprocessors]]&lt;br /&gt;
&lt;br /&gt;
* [[Sound and Music]]&lt;br /&gt;
&lt;br /&gt;
* [[Visual Displays]]&lt;br /&gt;
&lt;br /&gt;
* [[Wireless Communication]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Electronics&amp;diff=109</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Electronics&amp;diff=109"/>
		<updated>2026-03-04T11:06:48Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Components ==&lt;br /&gt;
&lt;br /&gt;
* [[Sensors]]&lt;br /&gt;
&lt;br /&gt;
* [[Actuators]]&lt;br /&gt;
&lt;br /&gt;
* [[Microprocessors]]&lt;br /&gt;
&lt;br /&gt;
* [[Sound and Music]]&lt;br /&gt;
&lt;br /&gt;
* [[Lights &amp;amp; Displays]]&lt;br /&gt;
&lt;br /&gt;
* [[Wireless Communication]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Vibration-motors-Arduino-nano_bb.jpg&amp;diff=108</id>
		<title>File:Vibration-motors-Arduino-nano bb.jpg</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Vibration-motors-Arduino-nano_bb.jpg&amp;diff=108"/>
		<updated>2026-03-02T12:20:53Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Low side switching --&amp;gt;How to power many vibration motors using an Arduino Nano (3.3V)&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Vibration_Motors&amp;diff=107</id>
		<title>Vibration Motors</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Vibration_Motors&amp;diff=107"/>
		<updated>2026-03-02T09:10:10Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Links and specs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The vibration motors in the Studio are low-voltage DC motors.  Typical operation voltage is 5V.&lt;br /&gt;
&lt;br /&gt;
= Using vibration motors =&lt;br /&gt;
&lt;br /&gt;
We can easily power a coin-shaped vibration motor using an Arduino UNO, if we want to test something in a fast manner.  For reasons we are going to see below, this is not recommended and to take full advantage of the motor&#039;s specifications we should use a couple more components, like BJT transistors and diodes.&lt;br /&gt;
&lt;br /&gt;
[[File:Vibration-motor-hook-up.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
A good way to hook up a vibration motor in a solderless breadboard is to carefully strip the coating and twirl the electrodes as shown in the picture. In this manner, we ensure better contact with the screw terminals.&lt;br /&gt;
&lt;br /&gt;
On the back side on the coin-shaped vibration motors, there is a sticker, which can be removed to firmly attach the motor to a flat surface.&lt;br /&gt;
&lt;br /&gt;
If we want to use vibration motors in a prototype, it may be best to use soldering to ensure good contact points.&lt;br /&gt;
&lt;br /&gt;
== Links and specs ==&lt;br /&gt;
&lt;br /&gt;
RS components: https://se.rs-online.com/web/p/utvecklingsverktyg-for-kraft-motorer-och-robotteknik/1845122&lt;br /&gt;
&lt;br /&gt;
Datasheet: https://docs.rs-online.com/52f4/0900766b816e6720.pdf&lt;br /&gt;
&lt;br /&gt;
Seeed Grove: https://wiki.seeedstudio.com/Grove-Vibration_Motor/&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;seeed&#039;&#039; vibration motors can be powered with as little as 3V, but it is not recommended to use a 3.3V Arduino to drive a motor. The reason is that vibration motors contain coils, which store energy in magnetic fields that resist current flow. &lt;br /&gt;
&lt;br /&gt;
The coin-shaped &#039;&#039;seeed&#039;&#039; motors available in the Studio, have typical operating voltage 5V (max. 5.5V) and maximum current 80mA.&lt;br /&gt;
&lt;br /&gt;
[[File:Vibration-motors-Arduino-nano bb.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
To drive the &#039;&#039;seeed&#039;&#039; vibration motors is best to use 2/3 duty cycle from a PWM pin.  Use the [https://docs.arduino.cc/learn/microcontrollers/analog-output/ analogWrite] command on the Arduino IDE.&lt;br /&gt;
&lt;br /&gt;
== Power 5V components using a 3.3V operating voltage microcontroller ==&lt;br /&gt;
&lt;br /&gt;
If we want to power many vibration motors using an Arduino Nano (i.e., operating at 3.3V) we have to use [https://en.wikipedia.org/wiki/2N2222 P2N2222A] NPN transistors and [https://en.wikipedia.org/wiki/1N4148_signal_diode 1N4148] or 1N4001 diodes.&lt;br /&gt;
&lt;br /&gt;
In the circuit shown, the Arduino is powered using a powerbank or any other type of 5V USB port (e.g., PC, laptop).  Most powerbanks have enough current to power multiple vibration motors.  If we measure the voltage difference between the Vin on the Arduino and the ground (GND) we are going to measure something near 5V.  The Vin pin, is directly connected to the power source on the USB port of the Arduino, or the barrel connector (an Arduino Nano does not have a barrel connector, as the Arduino UNO).&lt;br /&gt;
&lt;br /&gt;
[[File:Vibration-motor-bb-circuit.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Relays&amp;diff=106</id>
		<title>Relays</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Relays&amp;diff=106"/>
		<updated>2026-03-02T01:45:20Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://en.wikipedia.org/wiki/Relay Relays] come into different types.  We are mostly using electromechanical and reed relays in the Studio.&lt;br /&gt;
&lt;br /&gt;
= Links and components =&lt;br /&gt;
- 5V reed relay &#039;&#039;&#039;SIL05-1A72-71D&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Datasheet: https://docs.rs-online.com/82fc/0900766b8003309b.pdf&lt;br /&gt;
&lt;br /&gt;
- RS online: https://se.rs-online.com/web/p/tungelementrelaer/3492884P&lt;br /&gt;
&lt;br /&gt;
= Activate a relay using 3.3V operating voltage microcontrollers =&lt;br /&gt;
&lt;br /&gt;
The circuit below uses an electromechanical (E/M) relay to switch between 5V and 9V operating voltages.  It is unlikely you are going to need to switch between 5V and 9V in your designs, but the choice here, indicates the [https://en.wikipedia.org/wiki/Switch#Contact_terminology SPDT] functionality of a common E/M relay.&lt;br /&gt;
&lt;br /&gt;
We use a common 5V voltage regulator ([https://en.wikipedia.org/wiki/78xx 7805]) to drop the 9V of the battery to 5V, as required to operate the relay.  The 2N2222 NPN transistor is &amp;lt;!-- doing the low-side switching to --&amp;gt; activating the relay using an Arduino Nano, with operating voltage 3.3V.&lt;br /&gt;
&lt;br /&gt;
[[File:3v-to-5v-or-9v-arduino-volt-reg-NPN bb.jpg|thumb|alt=5V relay activation using Arduino Nano (3.3V)|5V relay activation using Arduino Nano (3.3V)]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=CAD&amp;diff=105</id>
		<title>CAD</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=CAD&amp;diff=105"/>
		<updated>2026-03-02T01:14:34Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* OpenSCAD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 3d printing ==&lt;br /&gt;
=== TinkerCad ===&lt;br /&gt;
&lt;br /&gt;
https://www.tinkercad.com/&lt;br /&gt;
&lt;br /&gt;
- Good: For fast designs using shape primitives, easy to use&lt;br /&gt;
&lt;br /&gt;
- Bad: For precision, parametric and generative designs&lt;br /&gt;
&lt;br /&gt;
=== OpenSCAD ===&lt;br /&gt;
&lt;br /&gt;
https://openscad.org/&lt;br /&gt;
&lt;br /&gt;
- Good: Programming interface, generative and parametric designs, open-source&lt;br /&gt;
&lt;br /&gt;
- Bad: For fast detailed designs&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
- https://openscad.org/documentation.html&lt;br /&gt;
- https://openscad.org/cheatsheet/&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
&lt;br /&gt;
https://www.blender.org/&lt;br /&gt;
&lt;br /&gt;
- Good: For precision, parametric and generative designs, open-source software&lt;br /&gt;
&lt;br /&gt;
- Bad: For fast designs, not easy to use&lt;br /&gt;
&lt;br /&gt;
=== Rhino 3D ===&lt;br /&gt;
&lt;br /&gt;
https://www.rhino3d.com/&lt;br /&gt;
&lt;br /&gt;
- Good: For precision, parametric and generative designs&lt;br /&gt;
&lt;br /&gt;
- Bad: For fast designs, not easy to use, license required&lt;br /&gt;
&lt;br /&gt;
=== Autodesk Fusion ===&lt;br /&gt;
&lt;br /&gt;
https://www.autodesk.com/solutions/fusion-360-3d-modeling&lt;br /&gt;
&lt;br /&gt;
- Good: For precision, simulations&lt;br /&gt;
&lt;br /&gt;
- Bad: For fast designs, not easy to use, license required&lt;br /&gt;
&lt;br /&gt;
=== FreeCAD ===&lt;br /&gt;
&lt;br /&gt;
https://www.freecad.org/&lt;br /&gt;
&lt;br /&gt;
- Good: For precise designs, free software&lt;br /&gt;
&lt;br /&gt;
- Bad: For fast designs, not easy to use&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=7-segment_displays&amp;diff=104</id>
		<title>7-segment displays</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=7-segment_displays&amp;diff=104"/>
		<updated>2026-03-02T01:11:16Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;= Single-digit 7-segment display = https://en.wikipedia.org/wiki/Seven-segment_display#Characters&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Single-digit 7-segment display =&lt;br /&gt;
https://en.wikipedia.org/wiki/Seven-segment_display#Characters&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Visual_Displays&amp;diff=103</id>
		<title>Visual Displays</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Visual_Displays&amp;diff=103"/>
		<updated>2026-03-02T01:10:11Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[7-segment displays]]&lt;br /&gt;
* [[OLED displays]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=0.91%27%27_display&amp;diff=102</id>
		<title>0.91&#039;&#039; display</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=0.91%27%27_display&amp;diff=102"/>
		<updated>2026-03-02T01:09:31Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;https://www.electrokit.com/lcd-oled-0.91128x32px-i2c  - Arduino Library: https://github.com/adafruit/Adafruit_SSD1306&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://www.electrokit.com/lcd-oled-0.91128x32px-i2c&lt;br /&gt;
&lt;br /&gt;
- Arduino Library: https://github.com/adafruit/Adafruit_SSD1306&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=OLED_displays&amp;diff=101</id>
		<title>OLED displays</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=OLED_displays&amp;diff=101"/>
		<updated>2026-03-02T01:08:54Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* 0.91&amp;#039;&amp;#039; display&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[0.91&#039;&#039; display]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Visual_Displays&amp;diff=100</id>
		<title>Visual Displays</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Visual_Displays&amp;diff=100"/>
		<updated>2026-03-02T01:08:35Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* OLED displays&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[OLED displays]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
</feed>