tag:blogger.com,1999:blog-2591549157184382442024-03-19T11:33:40.630+01:00Michaels Technik HobbyMichaels Technik Hobbies (Hardware- und Softwarebasteleien, Arduino, Fischertechnik, PCs, Android, OpenWRT, Linux, Windows, Virtualisierung) - Michael MlivoncicMichaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.comBlogger24125tag:blogger.com,1999:blog-259154915718438244.post-54184909823192185052014-12-13T18:06:00.002+01:002014-12-13T18:16:56.445+01:00Velleman K8200 - optimizationsHi again,<br />
<br />
time flies. Over a year ago, I've bought the Velleman K8200 3D Printer Kit.<br />
It took several nights to assemble carefully (the manual was not always correct), wire, adjust the mechanics and electronics, then tweaking the software and facing some bugs. Making designs with SCAD, Blender and tinkercad. I've learned a lot since then and many printed parts aimed to improve the 3D printer itself - A 3D printer creates problems you did not have without them :-)<br />
<br />
Today, I want to share an overview of those mods/improvements I've applied to the printer over time and which turned out to be useful. Others I have removed again.<br />
<br />
The general objective of the mods:<br />
A good ratio between the achieved improvement and the effort for a mod (e.g. different heat bed, power supply, double-axis/trapezoid Z-axis designs where not considered)<br />
Simple to print and/or rather inexpensive.<br />
<br />
I have to say, when comparing early prints with the most recent ones, those changes could have been provided by Velleman at probably not much extra cost.<br />
<br />
Let's start with a little overview: <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAKawUWOBNr97KLlvWmpGh_-gEFiMss-Fl9FFJyUG421gSWx9LBzb6K91iYEfTTmyemwP5K7HSNSPZN6iwFm0l_9rI37M-qDMXJWmbaIbrrgVzbmIi5q7pqu46Qj0ZJmJ7QLjCy3V-78xO/s1600/K8200enhance_overview.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAKawUWOBNr97KLlvWmpGh_-gEFiMss-Fl9FFJyUG421gSWx9LBzb6K91iYEfTTmyemwP5K7HSNSPZN6iwFm0l_9rI37M-qDMXJWmbaIbrrgVzbmIi5q7pqu46Qj0ZJmJ7QLjCy3V-78xO/s1600/K8200enhance_overview.PNG" /></a></div>
<br />
All those changes are available via thingiverse - either provided by myself or by others:<br />
<br />
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">K8200 Z-</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">axis</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Backlash</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">eliminator</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:235494">http://</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:235494">www.thingiverse.com/thing:235494</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12pt;">One of the best replacement parts as it boosts the Z-Axis precision and prevents the "wobble" along the prints z-axis. A little metal spring is required, though. I was lucky and found one as part of the spray mechanism of an almost empty window cleaner bottle.</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<br /></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Better</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Z-Axis </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">adjust</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">for</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> K8200</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:591488">http://</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:591488">www.thingiverse.com/thing:591488</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Makes leveling the print bed easier as you do not have to keep the nuts tight while adjusting.</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><br /></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><b>Flex coupling</b>: Try to straighten the Z-axis rod first: use a permanent marker and slightly touch the Z-axis while the motor spins. you should be able. Either bend the rod carefully or disassemble it and us a vise with three nuts (around the rod) to carefully correct the imbalanced stretches.</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Additionally, get a metal flex coupling (I tried a 3D printed plastic one first, but these are better!) to compensate for little bumps.</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><br /></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">K8200 </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">improved</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> Z-Axis </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">holder</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:591509">http://</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:591509">www.thingiverse.com/thing:591509</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Using the flex coupling, I needed to lower the axis, so I needed another holder on top. </span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><br /></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">New z-Motor-Holder </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">for</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">the</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Velleman</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> K8200 </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">or</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">3Drag</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/make:53838">http://www.thingiverse.com/make:53838</a></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">This motor holder does a better job than the original one. </span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<br /></div>
I've used the original controller case provided at Vellemans support page.But I disliked that the board was diectly attached to the frame. It might easily break.<br />
So, I've added a plate under the board just to be on the safe side:<br />
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">K8200 cover </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">bottom</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">plate</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">
</a></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198874">http://www.thingiverse.com/thing:198874</a></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span></div>
<br />
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">y-</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">axis</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">cable</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">bridge</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/make:56032">http://</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/make:56032">www.thingiverse.com/make:56032</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
Looks nice and reliable :-)<br />
<br />
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">
</a></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">K8200 simple Filament Roll </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Holder</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">
</a></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">http</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">://</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">www.thingiverse.com/thing:198859</a></span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">I wanted to move the printer into a cabinet with less space, so I needed to compact the printer dimensions a bit by moving the roll holder from the side to the center </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"></span>and also adding a simple filament holder to make it easier for the printer to feed the filament.</div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">
</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><br /></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">K8200 </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Reset</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"> Button </span><span style="color: black; font-family: Calibri; font-size: 12.0pt; font-weight: bold; language: de; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Extender</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">
</a></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<a href="http://www.thingiverse.com/thing:198870"><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">http</span><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">://www.thingiverse.com/thing:198870</span></a><span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">
</a></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><a href="http://www.thingiverse.com/thing:198859">
</a>I've used an old Windows Netbook with Repetier at the beginning as a printer controller. Sometimes the serial communication got stuck. Never found out why. But the reset button turned out to be reeeeally useful in such situations. </span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<br /></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Currently I'm using OctoPi on a Raspberry Pi to control the printing. So I can use any browser (also on tablets, phones) to control the printer.</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Also connected an old webcam and an USB-LED to the Raspberry.I can really recommend this setup.</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">I use Repetier Host and/or Slic3r on my workstation to generate the gcode-files first.</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><br /></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><b>Update</b></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Meanwhile, I've ordered the "GP8200", the glass plate for the heat bed. Before, I made good experience with capton tape to allow for ABS printing (they already stick at 55 Celsius to the tape).</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;">Now, with the glass plate, I started experimenting with hairspray. Seems to work nicely.</span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><br /></span></div>
<div style="direction: ltr; language: de; margin-bottom: 0pt; margin-left: .38in; margin-top: 2.88pt; mso-line-break-override: none; punctuation-wrap: hanging; text-align: left; text-indent: -.38in; unicode-bidi: embed; word-break: normal;">
<span style="color: black; font-family: Calibri; font-size: 12.0pt; language: en-US; mso-ascii-font-family: Calibri; mso-bidi-font-family: +mn-cs; mso-color-index: 1; mso-fareast-font-family: +mn-ea; mso-font-kerning: 12.0pt;"><br /></span></div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-39635941428021451662014-09-28T18:47:00.000+02:002014-09-28T21:01:23.766+02:00Concept2 Indoor Rower - OSD for Windows<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
</div>
I've just received my <a href="http://www.concept2.com/indoor-rowers/model-d">Concept 2 Indoor Rower</a>. It came with the latest Performance Monitor, PM5.<br />
<br />
I always liked rowing on those machines at University. As a techie and now as I have my own Concept2, I've decided to connect it to my "homecinema" living room media PC via USB for even more fun.<br />
<br />
I haven't tried the commercial software offerings (yet), but the available free software seems to ignore the latest PM5 monitor. See my comments at the bottom of this post.<br />
<br />
I could not find a simple, on screen display utility for the data the PM provides, so I've decided to quickly build my own. I've used Visual Studio Express 2012, the SDK provided by Concept2 plus code examples on <a href="http://webergometer.codeplex.com/"> using the SDK</a> and programming an <a href="http://codes-sources.commentcamarche.net/source/view/38898/1062876#browser">OSD</a> for Windows. <br />
<br />
Here is my first version of the code. <br />
<a href="https://github.com/miguelitoelgrande/c2osd/">https://github.com/miguelitoelgrande/c2osd/</a><br />
May not be perfect and was only tested with Windows 7 and the PM5 but should work on PM3 , PM4 and PM5.<br />
<br />
This is how it looks on top of arbitrary desktop applications - including your preferred media player.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifixfeCjoeshJLOS9-F7HtbZJEfTXr7_2e9QAz7mzcgveAU0I8Bj7LLqCdLnuNqoYY9xLRFxgaQ-Zqedo8eArsz5hvaiHjLIa3w0VJuBzE3JAkhMzA7Ox8MUyHhyphenhyphen8BqSP7QwodAVVS7sMS/s1600/Untitle3+-+Copy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifixfeCjoeshJLOS9-F7HtbZJEfTXr7_2e9QAz7mzcgveAU0I8Bj7LLqCdLnuNqoYY9xLRFxgaQ-Zqedo8eArsz5hvaiHjLIa3w0VJuBzE3JAkhMzA7Ox8MUyHhyphenhyphen8BqSP7QwodAVVS7sMS/s1600/Untitle3+-+Copy.png" /></a></div>
<br />
Best viewed in full screen mode:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDg93_vYeAJOAyozTqeF27sGKKox7Uqpd_rrd5tTzlpWkAaMSKD81D1WvxNc9ngIkQRisfVfat2lGV9069s-O1U5_hON1IaU6GvnVR2z5CNYGGiolbm4oQRSNwxFCvzFX5w6UfSJEjEpEr/s1600/Untitle2d+-+Copy.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDg93_vYeAJOAyozTqeF27sGKKox7Uqpd_rrd5tTzlpWkAaMSKD81D1WvxNc9ngIkQRisfVfat2lGV9069s-O1U5_hON1IaU6GvnVR2z5CNYGGiolbm4oQRSNwxFCvzFX5w6UfSJEjEpEr/s1600/Untitle2d+-+Copy.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: 12.7272720336914px;">Rowing together with Ben Hur - projected to the wall in HD, 3m wide</span></td></tr>
</tbody></table>
Pay attention to your media player's settings: The "Always on top"-setting may conflict with <i>c2osd</i> for obvious reasons.<br />
<br />
Btw: I would like to have more videos like <a href="https://www.youtube.com/watch?v=cp5jDKKjyH4">this</a> one. Trying to row in sync with somebody else while enjoying a nice scenery :-)<br />
<br />
Future ideas: There is a Python library,<a href="http://www.newhavenrowingclub.org/pyrow/"> pyrow</a>, which demonstrates the use of the CSAFE protocol without the need for those SDK DLLs - directly reading/writing from/to the USB device. Could allow for a platfom independent source.<br />
<br />
<h2>
A remark on existing applications</h2>
As mentioned above, at the time of writing, many existing tools do not find the PM5. The binaries contain the device identifier strings for PM3 and PM4 only (not the best approach, well...).<br />
A quick fix which helps: Open the installed .exe in an editor and search for <br />
"<span style="background-color: yellow;">Concept2 Performance Monitor 4 (PM4)</span>"<br />
and replace with<br />
"<span style="background-color: yellow;">Concept2 Performance Monitor 5 (PM5)</span>" (without quotes) :<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPDqk0jqC_el5m99F_809LJM8yvQKdlRkT7oN0D1vUpsZV246AAPgUfCKe2SAi81x5zAyxNSCwMjVyzndzG-og68ATzCbAi_7E2BDGr7ExjcEpyMSMriZnoPiVzY-dvw9coS7egYM6vObg/s1600/BinaryMod.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPDqk0jqC_el5m99F_809LJM8yvQKdlRkT7oN0D1vUpsZV246AAPgUfCKe2SAi81x5zAyxNSCwMjVyzndzG-og68ATzCbAi_7E2BDGr7ExjcEpyMSMriZnoPiVzY-dvw9coS7egYM6vObg/s1600/BinaryMod.jpg" /></a></div>
<br />
<br />
Then you should be fine. Tested with the following applications:<br />
<br />
C:\Program Files (x86)\Concept2\C2 Watt Challenge\C2WattChallenge.exe<br />
<br />
C:\Program Files (x86)\Concept2\C2 Watt Challenge\C2CalorieChallenge\C2Calorie.exe<br />
<br />
C:\Program Files (x86)\Concept2\C2 Watt Challenge\Software Development Kit\PMSDKDemo.exe<br />
<br />
Happy Rowing!<br />
<br />
PS: Also connected my Galaxy Tab3 10 via an OTG cable to the Concept2. The <a href="https://play.google.com/store/apps/details?id=com.concept2.ergdata">ErgData</a> already supports the PM5, however I prefer a simple OSD solution, as the PC and the projector are nearby anyways.<br />
<br />
<br />
<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-5142134895187166282014-07-29T22:15:00.000+02:002014-07-30T22:48:16.546+02:00Android 4.4 Kitkat - Temporary root just to fix SD Card permissionsRecently, I've upgraded my phone to KitKat 4.4. But I wasn't aware this would restrict SD Card access for most apps as an unwanted side effect. <br />
<br />
On <b>rooted</b> Android devices, this can easily be changed. Now, I've found an easy way to only <b>temporary root </b>the phone - even without rebooting and just to apply the fix. Afterwards, we will <b>unroot</b> immediately.<br />
<br />
1. Install the <span style="background-color: #cfe2f3;">"towelroot"</span> app and run it:<br />
<a href="https://towelroot.com/tr.apk">https://towelroot.com/tr.apk</a> (from <a href="https://towelroot.com/">https://towelroot.com/</a> )<br />
<br />
You should be rooted- without a reboot and all the other complicated rooting procedures of the past! WOW! Good job!<br />
<br />
2. Install and run "<span style="background-color: #cfe2f3;">SD KitKat Fixer</span>" from the Play Store:<br />
<a href="https://play.google.com/store/apps/details?id=jrummy.sdfix">https://play.google.com/store/apps/details?id=jrummy.sdfix</a><br />
<br />
3. "Un-rooting" again:<br />
Open a shell window - I use SSHDroid on the phone and "putty" as a client on a Windows machine.<br />
(adb, etc. should also work fine).<br />
<br />
3a) OPTIONAL:verify the changes made by SD KitKat Fixer:<br />
<blockquote class="tr_bq">
<span style="background-color: yellow;">less /system/etc/permissions/platform.xml</span></blockquote>
<br />
You should see a section like this:<br />
<blockquote class="tr_bq">
</blockquote>
<blockquote class="tr_bq">
<span style="background-color: #cccccc;"><permission name="android.permission.WRITE_EXTERNAL_STORAGE"><br /> <group gid="sdcard_r"/><br /> <group gid="sdcard_rw"/><br /> <group gid="media_rw" /><br /></permission></span></blockquote>
<br />
3b) Remove the "su" related stuff aka "unrooting".<br />
<br />
<blockquote class="tr_bq">
<span style="background-color: yellow;"><span style="font-family: "Courier New",Courier,monospace;">su<br />mount -o rw,remount /system<br />#rm /system/bin/su<br />rm /system/xbin/su<br />rm /system/xbin/daemonsu<br />rm /system/etc/install-recovery.sh<br />mount -o ro,remount /system<br />exit</span></span></blockquote>
<br />
Note: the system partition may already be mounted rw., and remounting read-only as a last step may fail. No problem, as we are going to reboot anyways.<br />
<br />
<b>4. Reboot - DONE.</b><br />
<br />
Tested on my S4 mini running Android 4.4.<br />
<br />
<br />
Just to compare: This was the content of my /system/xbin folder right after using towelroot:<br />
<span style="font-size: x-small;"><br /></span>
<br />
<blockquote class="tr_bq">
<span style="font-size: x-small;"><span style="font-family: Times,"Times New Roman",serif;"><span style="background-color: #666666;"> $ ls -al /system/xbin</span></span></span><br />
<span style="font-size: x-small;"><span style="font-family: Times,"Times New Roman",serif;"><span style="background-color: #666666;">drwxr-xr-x 2 root shell 4096 Jul 29 19:11 .</span></span></span><br />
<span style="font-size: x-small;"><span style="font-family: Times,"Times New Roman",serif;"><span style="background-color: #666666;">drwxr-xr-x 24 root root 4096 Jan 9 2014 ..</span></span></span><br />
<span style="font-size: x-small;"><span style="font-family: Times,"Times New Roman",serif;"><span style="background-color: #666666;">-rwxr-xr-x 1 root root 121260 Jul 29 19:11 daemonsu</span></span></span><br />
<span style="font-size: x-small;"><span style="font-family: Times,"Times New Roman",serif;"><span style="background-color: #666666;">-rwxr-xr-x 1 root shell 59748 May 23 11:17 dexdump</span></span></span><br />
<span style="font-size: x-small;"><span style="font-family: Times,"Times New Roman",serif;"><span style="background-color: #666666;">-rwxr-xr-x 1 root root 121260 Jul 29 19:11 su</span></span></span><br />
<span style="font-size: x-small;"><span style="font-family: Times,"Times New Roman",serif;"><span style="background-color: #666666;">-rwxr-xr-x 1 root shell 5336 May 23 11:17 vril-dump</span></span></span></blockquote>
<br />
<br />
<br />
<br />
PS: I'm not afraid of a <i>permanently</i> rooted device at all, but some use cases limit the user to an official, non-rooted ROM - that's BYOD ;-) <br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-31584874519846314392014-01-13T22:57:00.000+01:002014-01-15T21:20:19.920+01:00Blender - es geht auch leichterSicher kann ein Poweruser in Blender durch zahlreiche Tastaturkürzel, Operationen, Modi-Wechsel etc. ans Ziel kommen. Am Anfang ist es aber doch recht mühsam.<br />
Mit wenig Aufwand lässt sich das Blender UI aufräumen, was insbesondere Anfängern den Einstieg erleichtert:<br />
Die Bildschirmbereiche (Areas) lassen sich beliebig unterteilen und belegen. Funktionen können teils umsortiert oder Einstellungen ausgeblendet werden. Man kann auch mit mehreren echten Fenstern parallel arbeiten, die Fensteraufteilung speichern und wechseln. Ich habe mein Startup-File im Blender so angepasst, dass die wichtigsten Funktionen schneller aufzufinden sind. "Wichtig"? Mein Fokus ist momentan rein auf der Erstellung von (druckbaren *.STL-)Vorlagen/Modellen. Daher ist alles rund um Games, Animationen, Lichtquellen, Material, Rendering, Audio, etc. überflüssig und sollte daher auch nicht weiter stören oder Platz wegnehmen.<br />
<br />
<br />
In Sachen <b>Produktivität </b>liegt der Anfänger damit aber immer noch weit hinter Tools, wie Tinkercad.<br />
Als Nebenprodukt meines BlenderSCAD Prototypen, habe ich nun ein Panel definiert, das die Arbeit mit Blender erleichtert. Wenn man vor allem mit einfachen Grundgeometrien und Bool'schen Operationen arbeiten möchte (80:20 lässt grüssen), braucht man gar nicht mehr durch die Menüs irren.<br />
<br />
Hier ein Screenshot zum aktuellen Stand:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvLT__PE1FpbvyX7luovleOMtJz7HM8BWClL07brjg0O4wCSeuUSlJDW37lknLcnCUNaAkRBGCw3QmIVMRzVaxX_MU8GiSabC2OGMAUpD6BJlzGs8y7GQUSArTL3evOhtZFppQ_E7JWU8m/s1600/Panel.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="462" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvLT__PE1FpbvyX7luovleOMtJz7HM8BWClL07brjg0O4wCSeuUSlJDW37lknLcnCUNaAkRBGCw3QmIVMRzVaxX_MU8GiSabC2OGMAUpD6BJlzGs8y7GQUSArTL3evOhtZFppQ_E7JWU8m/s640/Panel.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">BlenderSCAD QuickPanel (links) und aufgeräumtere Blender-Vorlage</td></tr>
</tbody></table>
Wieviele Clicks braucht man im Blender regulär, um eine Kugel, einen Zylinder und einen Quader zu erstellen und mittels Boolscher Operation 2 dieser Objekte vom dritten abzuziehen? - Doch einige.<br />
Mit etwas Üben sind die benötigten Operationen (Modifier) rasch angelegt.<br />
<br />
Mit meinem BlenderSCAD-Panel sind es auf jeden Fall deutlich weniger Clicks:<br />
Je ein Click, um die drei Objekte auf die Arbeitsfläche zu zaubern, wenige Clicks, um die Objekte interaktiv anzuordnen und dann muss man die Objekte nur auswählen -- mit Shift+rechte Maustaste oder Ctrl+A für alle -- und dann die Bool'sche Operation auswählen - fertig. Die nicht mehr benötigten Objekte werden automatisch entfernt. "Undo" ist nun atomar möglich (1x Undo, um auf den vorigen Stand zu kommen, weil Blender den gesamten Vorgang in der Historie als "Run Script" zusammenfasst).<br />
<br />
Die übrigen Funktionen sollen diese Arbeitsweise noch unterstützen: Einfärben der Objekte (zufällige Farbe), hervorheben aller Kanten, "Aufräumen" des entstandenen Modells (limited dissolve als "Cleanup" verpackt)<br />
Weiterhin gibt es noch eine Anzeige der Knoten und Flächen des aktuellen Modells. Das ist noch nützlich, um den Effekt einer Operation zu beurteilen - Remesh und Subdivide jagen diese Zahlen hoch.<br />
<br />
<b>Modi-Wechsel überflüssig</b><br />
Gerade beim Programmieren mit der Python-Console fällt auf, wie oft in Blender ein Modi-Wechsel nötig ist. Manchmal ist es nicht einmal ganz klar, warum ein Arbeitsschritt im Kontext "Edit" und ein anderer im Modus "Objekt" ausgeführt werden muss. Im UI ist dann "Tab" fast die wichtigste Taste.<br />
Beim BlenderSCAD-Panel kann man bequem im Objekt-Modus bleiben. Ein Wechsel ist nicht nötig, die Funktionen im Hintergrund kümmern sich um die Details.<br />
<br />
Mehr Infos und der gesamte Code und die Vorlage zum Ausprobieren unter: <a href="https://github.com/miguelitoelgrande/BlenderSCAD">https://github.com/miguelitoelgrande/BlenderSCAD</a><br />
Obwohl das Ganze nicht als Add-On verpackt ist, lässt es sich sehr einfach selbst probieren.<br />
Pfadangabe anpassen, Script (bereits im Startup-File verbaut) ausführen und los geht es.<br />
BlenderSCAD selbst ist dann auch gleich dabei.<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-47077089135745866472013-12-28T22:21:00.000+01:002013-12-28T22:21:49.032+01:00BlenderSCAD - Blender im OpenSCAD-ModusIrgendwie bin ich immer noch auf der Suche nach dem idealen CAD Tool für meine Zwecke.<br />
Bislang habe ich Tinkercad, OpenSCAD, Blender, Sketchup und auch DesignSpark bemüht.<br />
Einige andere auch nur kurz ausprobiert und gleich wieder verworfen.<br />
<br />
Am liebsten sollte das ideale Design-Werkzeug überall lokal laufen (auch auf mobilen Geräten), OpenSource und möglichst keine Bloat-Ware sein.<br />
Die Designs sollten wiederverwendbar sein, nicht nur auf der Ebene der STL-Files, sondern semantisch reicher, inklusive Hierarchien und Gruppierungen (Beispielsweise lässt Tinkercad zwar ein Ungroup zu, aber man kann Entwürfe nachträglich nicht zusammenführen oder exportieren).<br />
OpenSCAD ist in vielen Punkten momentan mein Favorit. Insbesondere, weil ich meine Berechnungen später noch nachvollziehen und anpassen kann. Alleine mit Quadern und Zylindern kommt man schon relativ weit. Einzig bei abgerundeten Kanten und speziellen Profilen wünschte man sich, dass es eine eifache, deklarative Lösung gäbe.<br />
Potentiell kann man seine Designs sogar im Thingiverse Customizer anbieten.<br />
Grösste Schwäche ist das oft sehr langsame Compilieren [Vorsicht mit $fn=50 und minkowski() :-) ] und manche Darstellungsprobleme in der OpenCSG Ansicht.<br />
<br />
Auf der anderen Seite gibt es eben Blender, das vom Funktionsumfang her kaum zu schlagen ist. Insbesondere die Modifier, wie Decimate und Bevel (Kanten abrunden) sind doch recht nützlich. Die Bedienung ist gewöhnungsbedürftig, wie man überall lesen kann.<br />
Mehr noch, ich fand die extrem düstere Farbgebung des UIs bei der ersten Begegnung alles andere als einladend (verglichen mit dem verspielten, farbenfrohen Tinkercad).<br />
Gruppieren geht verglichen mit Tinkercad "nur" via Join oder über eine Parent-Objekt Beziehung. Boolsche Operationen führen ab und an aus unerklärlichen Gründen zu Fehlermeldungen. Grund genug, sich anfangs erstmal mit Tinkercad und OpenSCAD zu beschäftigen.<br />
<br />
Nun habe ich mich Blender in einem zweiten Anlauf genähert, mit dem Gedanken, ob es nicht doch das Beste aus beiden Welten in einer Lösung gibt. Für Blender gibt es jede Menge Add-Ons, die in Python geschrieben werden und das Blender-UI weist auch durch Mouse-Over Infos immer wieder auf Python API Bezeichnungen hin. Daher schien es leicht, erst mal mit einer Art Macro der Objekterzeugung zu nähern.<br />
<br />
Um es vorweg zu nehmen. Hier ist mein momentanter Stand eines OpenSCAD-ähnlichen IDEs - letztlich verdammt nah am frisch installierten Blender, was ich bei der Erstinstallation nicht im Entferntesten geahnt hätte :-)<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ4TjaFzFhgpgxQPta7lXCT2O7e_yR9hU9zzhqcGVTpbQSWIhvgCkY7s6pv8VG-3cPfEJflTh9chHVq6RXzwzZg5K_Uz8zvAGlsBe-_BIzzhFGJXJecoHT4vZybn3kFNSktsq-HQY4fmBw/s1600/ScreenshotBlender.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ4TjaFzFhgpgxQPta7lXCT2O7e_yR9hU9zzhqcGVTpbQSWIhvgCkY7s6pv8VG-3cPfEJflTh9chHVq6RXzwzZg5K_Uz8zvAGlsBe-_BIzzhFGJXJecoHT4vZybn3kFNSktsq-HQY4fmBw/s640/ScreenshotBlender.png" width="640" /></a><br />
Wer es selbst ausprobieren mag, findet das Script und weitere Informationen unter:<br />
<span style="font-size: large;"><b><a href="https://github.com/miguelitoelgrande/BlenderSCAD">https://github.com/miguelitoelgrande/BlenderSCAD</a> </b></span><br />
<br />
Der Funktionsumfang ist momentan noch nicht vollständig, aber er reicht bereits aus, um aufzuzeigen, was möglich sein könnte:<br />
<br />
Dies ist ein Schnipsel Beispielcode: <br />
<blockquote class="tr_bq">
<blockquote class="tr_bq">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: green; font-family: "Courier New"; font-size: 10pt;"># OpenJSCAD.org Logo :-)<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span></span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: blue; font-family: "Courier New"; font-size: 10pt;">def</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: magenta; font-family: "Courier New"; font-size: 10pt;">logodemo</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">():</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>scale</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">([</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">10</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">10</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">10</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">],</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>translate</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">([</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">0</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">0</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">1.5</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">]</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> group</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;">
</span></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span><span style="mso-spacerun: yes;"> </span>color</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">purple</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> difference</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 4;"> </span><span style="mso-spacerun: yes;"> </span>cube</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">([</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">3</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">3</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">3</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">],</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> center</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">true</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">)</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> sphere</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">r</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">2</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> center</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">true</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">)</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">))</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> color</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">yellow</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> intersection</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 4;"> </span><span style="mso-spacerun: yes;"> </span>sphere</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">r</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">1.3</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> center</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">true</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">)</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> cube</span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">([</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">2.1</span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">2.1</span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">,</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: red; font-family: "Courier New"; font-size: 10pt;">2.1</span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">],</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> center</span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">=</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">true</span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">)</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">))</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">)</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">)</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: navy; font-family: "Courier New"; font-size: 10pt;">)</span></b><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">logodemo()</span></span><span lang="EN-US" style="mso-ansi-language: EN-US;"></span></div>
</blockquote>
</blockquote>
Im Blender ausgeführt, erzeugt er annähernd das OpenJSCAD-Logo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcqg5nF7MAHwtVxHObWb3pFF5U4Kkgd7DcfYOQex71jqUTbr13Iz9yNDQzYdD78Ir7XYQYnifVb2xyqKbia_3nNICx57mOXH_NoQpiQNqckONRAULO6_uWj9-O3ibRNQnXWeKVL-ftXnqt/s1600/Logo_BlenderSCAD.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcqg5nF7MAHwtVxHObWb3pFF5U4Kkgd7DcfYOQex71jqUTbr13Iz9yNDQzYdD78Ir7XYQYnifVb2xyqKbia_3nNICx57mOXH_NoQpiQNqckONRAULO6_uWj9-O3ibRNQnXWeKVL-ftXnqt/s320/Logo_BlenderSCAD.png" width="320" /></a></div>
<br />
Im nativen Blender-Python-API wären dazu doch einige zusätzliche Aufrufe nötig, die sich nun in den def's für scale, translate, cube, etc. verbergen.<br />
Aber immerhin ist der oben angegebene Code verdammt nahe an dem was man in OpenSCAD schreiben müsste:<br />
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--><br />
<blockquote>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">module</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">logodemo</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">()</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">{</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;">
</span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #00006f; font-family: "Courier New"; font-size: 10pt;">translate</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">([</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">0</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">0</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">1.5</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">])</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">{</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;">
</span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #00006f; font-family: "Courier New"; font-size: 10pt;">scale</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">([</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">10</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">10</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">10</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">])</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">{</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #00006f; font-family: "Courier New"; font-size: 10pt;">union</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">()</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">{</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #00006f; font-family: "Courier New"; font-size: 10pt;">difference</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">()</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">{</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">cube</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #0000a0; font-family: "Courier New"; font-size: 10pt;">size</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">3</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #0000a0; font-family: "Courier New"; font-size: 10pt;">center</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">true</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">)</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">;</span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">sphere</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">r</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">2</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #0000a0; font-family: "Courier New"; font-size: 10pt;">center</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">true</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">)</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">;</span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">}</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #00006f; font-family: "Courier New"; font-size: 10pt;">intersection</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">()</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">{</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">sphere</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">r</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">1.3</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #0000a0; font-family: "Courier New"; font-size: 10pt;">center</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">true</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">)</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">;</span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">cube</span></b><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">(</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #0000a0; font-family: "Courier New"; font-size: 10pt;">size</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000040; font-family: "Courier New"; font-size: 10pt;">2.1</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">,</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #0000a0; font-family: "Courier New"; font-size: 10pt;">center</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">=</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">true</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">)</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">;</span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">}</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">}</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;">
</span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">}</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">}</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;">}</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;">
<span style="background-color: #d0e0e3;"><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">logodemo</span><b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #c60000; font-family: "Courier New"; font-size: 10pt;">()</span></b><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: #000633; font-family: "Courier New"; font-size: 10pt;">;</span><span lang="EN-US" style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto auto; color: black; font-family: "Courier New"; font-size: 10pt;"></span></span></div>
<span style="background-color: #d0e0e3;">
</span><div class="MsoNormal">
<br /></div>
</blockquote>
<br />
<div class="MsoNormal">
<span lang="EN-US" style="mso-ansi-language: EN-US;">Ich brauche sogar ein paar Klammern weniger :-)</span></div>
Wie allgemein bekannt, verzichtet Python auf die geschweiften Klammern und vertraut stattdessen auf Whitespaces. Nun, dies gilt nicht für Funktionen und Listen. Daher hätte ich den ganzen Code ab "scale(... " oben ebenfalls beliebig einrücken können oder eben so, dass die Ähnlichkeit zu OpenSCAD besser erkennbar ist.<br /><div class="MsoNormal">
<br /></div>
<br />
Dies ist nur ein erster Wurf, der eher zur Inspiration gedacht ist.- Vielleicht greift sie ja jemand im Blender-Umfeld auf.- Würde mich freuen.<br />
<br />
Längerfristig wäre es natürlich toll, wenn Blender zusätzlich ein anfängergerechtes UI erhalten würde. Vielleicht nahe an dem, was Tinkercad bietet - Auf das Wesentliche reduziert.<br />
... und mit einem "echten" Group/Ungroup Konzept, ebenfalls wie bei Tinkercad.<br />
<br />
Ach ja, ich suche noch nach einem Weg, die sehr beliebte "minkowski()" Funktion aus OpenSCAD im Blender zu emulieren. Vermutlich nicht trivial und ebenso wenig performant, was in der Natur der Sache liegt. Vielleicht will sich ja jemand daran versuchen und einen Beitrag zum Code oben liefern?<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-17520546203157818422013-12-18T21:30:00.003+01:002013-12-18T23:41:10.993+01:00OpenJSCAD goes mobileIt's been a while since my last post. Meanwhile, I've spend some time on assembling a 3D printer construction kit, calibrating it, printing stuff, etc. Some tricks and thoughts around the printer, I will document as soon as I have some time left.<br />
[Meanwhile, you may want to have a look at my<a href="http://www.thingiverse.com/elgrande/designs"> thingiverse page</a> for some first designs.]<br />
<br />
Constructing 3D Models is easy if you use Tinkercad, for example, which runs in a browser.<br />
I was looking for a viable solution on tiny screens, in case you want to do some construction work on a train ride. I've already used OpenSCAD, which is a fine tool running on the desktop and which is also used as a scripting language behind Thingiverse's customizer.<br />
With <a href="https://github.com/Spiritdude/OpenJSCAD.org">OpenJSCAD</a>, you can also edit and generate OpenJSCAD models inside a browser.<br />
Opposed to Tinkercad, you can have your own local installation, so you can even use it disconnected. What was missing so far is the ability to use OpenJSCAD on mobile devices, as the UI did lack touch screen support (some stuff already in the libraries, though). Plus, it relies on "drag and drop" for source files which is not available on smartphone browsers.<br />
<br />
I've tried to mod the code a bit to make it suitable to my mobile devices. For my needs, it does not have to be a packaged application, it can run as a hybrid, either from local storage or server based using a Firefox browser.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilJyb0YEysTZASJKCWUxBmunMKrErsV4_ee4sd6NnssbVTrJ_NYa4-rpFlLYbdrlTggGohotMEA2bmpJgWcfinr1-tfCy-BZghgWA-ZfOrLsOLv3vybDUAtnub7j9gpcDbOq8UkqAuG2la/s1600/Screenshot_2013-12-18-22-14-22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilJyb0YEysTZASJKCWUxBmunMKrErsV4_ee4sd6NnssbVTrJ_NYa4-rpFlLYbdrlTggGohotMEA2bmpJgWcfinr1-tfCy-BZghgWA-ZfOrLsOLv3vybDUAtnub7j9gpcDbOq8UkqAuG2la/s640/Screenshot_2013-12-18-22-14-22.png" width="640" /></a></div>
<br />
I'm not a javascript programmer, so my code mods are probably a mess. And it was my first GitHub fork to contribute my changes back. Maybe useful to somebody else as well?<br />
<br />
Have a look at:<br />
<a href="https://github.com/miguelitoelgrande/OpenJSCAD.org">https://github.com/miguelitoelgrande/OpenJSCAD.org</a><br />
<br />
Or download a copy here:<br />
<a href="https://github.com/miguelitoelgrande/OpenJSCAD.org/archive/master.zip">https://github.com/miguelitoelgrande/OpenJSCAD.org/archive/master.zip </a><br />
<br />
Note this is just a quick and dirty fork. Hopefully, some of the functionality will find its way back into the official code base.<br />
<br />
Update: <a href="https://rawgithub.com/miguelitoelgrande/OpenJSCAD.org/master/phone.html">DEMO (https://rawgithub.com/miguelitoelgrande/OpenJSCAD.org/master/phone.html)</a><br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-41356176734152381522013-04-15T01:16:00.001+02:002013-04-15T01:23:35.186+02:00Laserdrucker - Erste Hilfe für die Fixiereinheit<b>Keywords:</b><i> Fuser Unit, Oil, HP Color LaserJet 2600n, Ghost Images</i><br />
<br />
Nach ca 6 Jahren und 2500 Blatt (wie die Zeit vergeht), war bei meinem HP Color LaserJet 2600n ein Satz neuer Toner fällig. Zwar hatten die Farben noch jeweils 10% angezeigte Restkapazität, aber der Ausdruck hatte zunehmend Streifen. Nun, wohl Absicht von HP, dass die Kammern mit den überschüssigen Toner nicht so dicht abschliessen, wie es sein sollte. Jedenfalls hab ich das Reinigen der alten Kassetten aufgegeben und die neuen eingelegt.<br />
<br />
Nach meinen Experimenten dann das ernüchternde Ergebnis:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOuLMX50FCvq30eQsp7iP3cINK-JT45X2XBZY6tcLvud20iDQDk_bu2XzOkxtB4nix2YvPsI7Xln9ceDSS2DAhJVmxEv5ZbErssyw9jSiAS2ZbLy7VtWcmx2z2s3xST48b9R0S-bNkNYfp/s1600/Ausdruck.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOuLMX50FCvq30eQsp7iP3cINK-JT45X2XBZY6tcLvud20iDQDk_bu2XzOkxtB4nix2YvPsI7Xln9ceDSS2DAhJVmxEv5ZbErssyw9jSiAS2ZbLy7VtWcmx2z2s3xST48b9R0S-bNkNYfp/s1600/Ausdruck.JPG" /></a></div>
Auf dem Ausdruck zeichnet sich die schwarze Farbe an den Rändern als Geisterbild wiederholt ab.<br />
Einschlägige Foren raten dann entweder zum Austausch der Toner-Kassette oder zum Austausch der Fixiereinheit (Fuser). Erstere hatte ich ja gerade getauscht und letztere würde zusammen mit dem Austausch den Restwert des Druckers wohl deutlich übersteigen.<br />
<br />
Bei einigen Tests mit der Reinigungsfunktion fiel mir auf, dass das Muster jeweils nach 5,7 cm wiederholt. Wie man im Internet nachlesen kann, ist 56,6 mm exakt der Umfang des "Fuser Upper Roller / Film Sleeve", also der beheizten Teflonrolle in der Fixiereinheit.<br />
<br />
Die ist im oberen Bereich des Druckers verbaut, man sieht sie u.A. vom Ausgabeschacht des Druckers (rötlich in der Abbildung unten).<br />
<div>
<br /></div>
Ich habe das Restmuster des Ausdrucks auch auf dieser Rolle deutlich erkennen können und nicht auf der Bildtrommel im Toner.<br />
<br />
Man findet auch Videos auf YouTube, wie man solche Keramikrollen ersetzt - aber nicht an einem Sonntag :-)<br />
Teflon soll dafür sorgen, dass das Tonerpulver zwar in das Papier hineingebügelt wird, aber nicht an der Rolle kleben bleibt.<br />
<br />
Wie reinigt man so eine Rolle, wenn man sie nicht gleich auf Verdacht austauschen mag?<br />
<br />
Ich hatte nur Isopropyl-Alkohol oder ein Universal-Öl ("Reines Vaselinöl") zur Auswahl.<br />
<br />
Teflon-Pfannen lassen sich mit Öl pflegen, damit sie ihre Anti-Haft-Wirkung zurückerhalten.<br />
Für den Drucker konnte ich keinen entsprechenden Hinweis finden. Eher, dass der HP Laserdrucker eben <u>nicht</u> mit Öl arbeitet (gibt wohl solche Kopierer/Drucker).<br />
<br />
Ich hab mich dennoch für das Öl entschieden:<br />
Das Risiko schien mir recht gering, da die Fixiereinheit sowieso der letzte Schritt im Papierpfad ist und schlimmstenfalls ausgetauscht gehört.<br />
Mit einem Wattestäbchen durch den kleinen Schlitz im Ausgabefach die Rolle vorsichtig bestrichen (das was man von ihr zu sehen bekommt). Danach muss man die Rolle zum Drehen bringen: Entweder den Drucker einige Male einschalten oder die Abdeckung öffnen und schliessen - beides löst die Initialisierung aus. Oberhalb der Fixierrolle gibt es noch eine weitere, die etwas beim Verteilen des Ölfilms hilft. Etwas Einwirkzeit bei der mittlerweile vorgeheizten Rolle kann nicht schaden, dachte ich mir.<br />
<br />
Danach eine Probeseite: Wenn man es zu gut meint, hat die erste Seite oben eine ölige Kante oder es kommt zum Papierstau. Wenn man genau schaut, sieht man auch etwas verdampfen. Zumindest gab es kein Feuer.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QwOcwKSEwK_CLB-34cbcO8JC0-Zr6_Vp5fGN4_qEfR3bWE5vjMDNh0jZyrdO4QWoNG86jCdluq70OnungLLbUAYzo3de53d6X7toIjZLMrDAcFparfWEMGnWrNCXOFxSb08XsuuIDWs0/s1600/Fixiereinheit.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QwOcwKSEwK_CLB-34cbcO8JC0-Zr6_Vp5fGN4_qEfR3bWE5vjMDNh0jZyrdO4QWoNG86jCdluq70OnungLLbUAYzo3de53d6X7toIjZLMrDAcFparfWEMGnWrNCXOFxSb08XsuuIDWs0/s640/Fixiereinheit.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Ich habe das Ölen nach dem ersten Erfolg nochmal gründlicher wiederholt (man erreicht ja auch nicht die gesamte Rolle beim ersten Anlauf). Danach habe ich 30 absolut fehlerfreie Seiten gedruckt. Die Rolle sieht nun recht sauber aus und hat einen matten Glanz - ich habe mir die Rolle allerdings nie zuvor so genau angesehen, weiss also nicht, wie sie im Neuzustand aussieht.<br />
<br />
Also daher noch kurz mein Tipp zur Ergänzung der gängigen Lehrmeinung:<br />
<br />
<ul>
<li>Längsstreifen auf dem Laserdrucker: Reinigen oder den/die Toner wechseln. (Die Kassette mit dem Tonerrest auf der Bildtrommel)</li>
<li>Ghost-Images: Abmessen, wie sich das Muster wiederholt. Wenn es auf die Fixiereinheit hinausläuft, könnte man eine neue Rolle auch einzeln kaufen und nach YouTube Anleitung einbauen. Oder eben zunächst mal auf Risiko gehen und mit etwas Öl schauen, ob das hilft.</li>
</ul>
<div>
Feedback erwünscht.</div>
<div>
<br /></div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com13tag:blogger.com,1999:blog-259154915718438244.post-86127976369058432292013-01-27T20:10:00.003+01:002013-01-27T21:49:56.735+01:00IR-Motorsteuerung auf 6x6cmIch hab zwar noch ein paar unfertige Beiträge offen, aber an diesem Wochenende hat mein kleines Hardwareprojekt einen ersten Meilenstein erreicht:<br />
Es handelt sich um einen Controller für Fischertechnik, der über eine handelsübliche Fernbedienung 4 Motoren oder 2 Motoren und 4 Lämpchen ansteuern kann.<br />
<br />
Das Ganze ist nicht so sehr für mich gedacht, sondern wenn es denn mal fertig ist für einen kleinen Fischertechnik-Fan :-)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi40WAsXGAWArlNHKpGKG_zYZL8w2oz9vQh8k_Th9Z365WZRcc3uBRvCEi0r8wgWpJuzw10DPFml07ZfIgGeqlp5ObV_PtuMNPJROtC1gpsClonBu0Re9Bvl0NKB-Hkjq-KFufYKqYxqYM5/s1600/ftBoxedArduino_Fertig.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="449" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi40WAsXGAWArlNHKpGKG_zYZL8w2oz9vQh8k_Th9Z365WZRcc3uBRvCEi0r8wgWpJuzw10DPFml07ZfIgGeqlp5ObV_PtuMNPJROtC1gpsClonBu0Re9Bvl0NKB-Hkjq-KFufYKqYxqYM5/s640/ftBoxedArduino_Fertig.png" width="640" /></a></div>
War etwas fummelig, die ganzen Drähtchen einzulöten. Unter dem Chip-Sockel in der Mitte laufen auch noch weitere Drähte und ein Widerstand entlang. Das Ganze sollte in den abgebildeten 6x6cm Kasten passen, den es als Standardteil von Fischertechnik gibt.<br />
<br />
Den 7805 hätte ich besser irgendwo liegend untergebracht - wird noch ein Problem, eine Abdeckung zu bauen, bei der die Buchsen erreichbar bleiben.<br />
<br />
Hier noch zwei Bilder aus der Bauphase:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwrs5ZWLnxxFDmQurK1kaIF3BhPXusXdR1s2UcgHUuVmzARgHWDlrqhsTwMYMyE7rFdPPdYg0Ih9SpmjBgm3c81KR1hhpLTGQqgX13WiByUMXfBPVS1fPosqFtYbrboubMh13X6NcZIiK6/s1600/Aufbauphase.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwrs5ZWLnxxFDmQurK1kaIF3BhPXusXdR1s2UcgHUuVmzARgHWDlrqhsTwMYMyE7rFdPPdYg0Ih9SpmjBgm3c81KR1hhpLTGQqgX13WiByUMXfBPVS1fPosqFtYbrboubMh13X6NcZIiK6/s400/Aufbauphase.jpg" width="400" /></a></div>
Die Steckhülsen habe ich diesmal durch zwei extra Lagen Lochrasterplatine (ohne Kupferauflage) geführt. Kleine Drahtstücke verbinden dann mit der Lötseite der Platine:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDaI3s4zt9HgtYyJzH9_EkALSpPhdJd97wQQEeLEQmiTSyGM9O8L_xdHYjMNoMqWgaZ9bO-cdmSlEF3wovTUOVO3BGuYju0YlFMb517xGW5lEEI8pdKAokm2cdv1HcZUu0IplucEqqchBK/s1600/20130127_195818.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDaI3s4zt9HgtYyJzH9_EkALSpPhdJd97wQQEeLEQmiTSyGM9O8L_xdHYjMNoMqWgaZ9bO-cdmSlEF3wovTUOVO3BGuYju0YlFMb517xGW5lEEI8pdKAokm2cdv1HcZUu0IplucEqqchBK/s320/20130127_195818.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Wie man sieht: Eine Lochstreifenplatine, die jeweils drei Lötaugen zusammenfasst. Das wird dann doch etwas ordentlicher, als mit einer Lochrasterplatine.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Ich habe ganz bewusst die Pins zum Programmieren frei gelassen. Hier ist mein grosser Versuchsaufbau - die Unordnung beim Aufbau/Löten will ich hier nicht dokumentieren.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_S9nTdYR7YWk3oNrq7h5PZQByVRD2GQzGJn8YAbGSI1T6TMXa_RkImIePpfWgXM1Y0y8vmx6ks0MXuMK29Sqj0FF2Cl6xOqSfuf6ABcpIgV9onP7Sie7tcT2GyDcxaN79t_mroczPdYxb/s1600/Arduino_Experimentierboard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="460" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_S9nTdYR7YWk3oNrq7h5PZQByVRD2GQzGJn8YAbGSI1T6TMXa_RkImIePpfWgXM1Y0y8vmx6ks0MXuMK29Sqj0FF2Cl6xOqSfuf6ABcpIgV9onP7Sie7tcT2GyDcxaN79t_mroczPdYxb/s640/Arduino_Experimentierboard.jpg" width="640" /></a></div>
<br />
Man sieht hier auch ein paar alte Bekannte wieder. Die Fernbedienung ist eine Universalfernbedienung, die als Sony-Fernbedienung programmiert ist. Links und rechts sieht man einen alten Fischertechnik-Getriebemotor aus den frühen 80er Jahren, in der Mitte vier Lämpchen neueren Datums.<br />
Das Ganze ist noch recht sinnfrei und soll nur erst mal das Programmieren und Testen der Schaltung erlauben.<br />
<br />
Ich hab noch einen Schalter an die 9V Stromversorgung angebaut. Solange der Eigenbau mit Strom versorgt wird, funktioniert das Programmieren über den ArduinoISP Programmierer nicht. Das lässt sich bestimmt noch schöner lösen, aber sobald das Gerät fertig ist, kommt sowieso der Deckel drauf :-)<br />
<br />
Der Vollständigkeit halber hier noch das Schaltbild, wobei ich mich letztlich eher an den farbigen Drähten orientiert habe:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoAaqX7d4yvIygDFTwj73OgSfRKOPKO5G_AR7xZXlia-nW611ji7dDLTNVGGfOPBhBOG9fbVaxrZQSyDZmcarruux47I1BJiiRe0B09aVIzJO7YTqQIpKxIjvhM0ma4P0-JhSXBRL_hawB/s1600/IR-Setup_Piezo_ATtiny2313_L293D(SchaltplanDefinitiv)_schem.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoAaqX7d4yvIygDFTwj73OgSfRKOPKO5G_AR7xZXlia-nW611ji7dDLTNVGGfOPBhBOG9fbVaxrZQSyDZmcarruux47I1BJiiRe0B09aVIzJO7YTqQIpKxIjvhM0ma4P0-JhSXBRL_hawB/s640/IR-Setup_Piezo_ATtiny2313_L293D(SchaltplanDefinitiv)_schem.jpg" width="640" /></a></div>
<br />
Das sind die passenden Pindefinitionen im Code (schon gleich passend für Arduino-Lite später, falls der Code noch etwas wächst).<br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define piezo_pin 13</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define ir_pin 4 //Sensor pin 1 wired through a 220 ohm resistor</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define led_pin 2 </span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define enable_pin 12 //enable all H-Bridges</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define M1a 10 // Motor 1 PinA</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define M1b 11 // Motor 1 PinB</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define M2a 8 // Motor 2 PinA</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define M2b 9 // Motor 2 PinB</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define M3a 5 // Motor 3 PinA</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define M3b 6 // Motor 3 PinB</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define M4a 0 // Motor 4 PinA</span></span><br />
<span style="background-color: #cccccc;"><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#define M4b 1 // Motor 4 PinB</span></span><br />
<br />
Jetzt muss das Programm noch etwas reifen und schrumpfen. - Über die Lautstärketasten lassen sich bereits die Motoren steuern. Knapp 1,8kB, bald wird es eng - nächstes Wochenende mehr.<br />
<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com2tag:blogger.com,1999:blog-259154915718438244.post-60934698032724045322013-01-13T19:42:00.000+01:002013-01-25T22:40:28.907+01:00Arduino-Lite - 2kB müssen reichen.<br />
<div>
<span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;">Beim Einkauf meiner ATtiny-Muster habe ich mehr auf die Verfügbarkeit und auf die Anzahl I/O Pins (mit und ohne PWM, RXD, TXD, etc) geachtet. Was ich übersehen habe: Der ATtiny2313 (20 Pins) hat </span><span style="background-color: yellow; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;">nur 2kB Flash</span><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;">. Selbst der ATtiny85 (8 pins) hat 8kB.</span><br />
<span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;">Selbst beim Compilieren des "Blink"-Programms hat man die 2kB Grenze fast schon geknackt.</span><br />
<div style="text-align: justify;">
<span style="color: #222222; font-family: inherit;"><span style="line-height: 15.989583969116211px;">Geht es auch sparsamer, ohne auf das Arduino IDE zu verzichten und direkt auf die Hardware runter zu gehen? </span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
</div>
<h2 style="text-align: start;">
<span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: large; line-height: 16px; text-align: justify;"><b style="background-color: yellow;">Arduino-Lite !</b></span></h2>
<br />
<div style="text-align: justify;">
<span style="color: #222222; font-family: inherit;"><span style="line-height: 15.989583969116211px;">Ein Lösungsansatz scheint "Arduino-Lite" zu sein. Es implementiert einige der Arduino Befehle über C-Macros. Dadurch wird der Code, der zur Laufzeit ausgeführt wird statischer und kompakter.</span></span></div>
<div style="text-align: justify;">
<span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 12.222222328186035px; line-height: 15.989583969116211px;"><br /></span></span></div>
<blockquote class="tr_bq">
<em style="background-color: #eeeeee; color: #222222; line-height: 15.989583969116211px;">"Thanks to the marcos in Arduino-Lite, we keep it simple but providing <strong>higher performance and smaller binary size</strong>. Almost all core functions in Arduino have their Arduino-lite version, most of which are <strong>implemented by marcos</strong>. In Arduino-Lite, the conversion from numbering pin to AVR registers are finished in the compiling phase, which is in the runtime in Arduino."</em></blockquote>
<blockquote class="tr_bq">
<span style="font-family: inherit;"><b>Ein paar einführende Links: </b><a href="http://blog.iteadstudio.com/arduino-lite-lightweight-avr-library/" style="line-height: 16px; text-align: justify;">http://blog.iteadstudio.com/arduino-lite-lightweight-avr-library/</a><a href="http://blog.iteadstudio.com/arduino-lite-lightweight-avr-library/">http://blog.iteadstudio.com/arduino-lite-lightweight-avr-library/</a></span><br />
<div style="text-align: left;">
<span style="font-family: inherit;"><span style="background-color: white; font-family: inherit; text-align: justify;">Arduino-Lite Lightweight AVR Library(1): </span><span style="background-color: white; font-family: inherit; text-align: justify;"><a href="http://www.elecfreaks.com/92.html">http://www.elecfreaks.com/92.html</a></span><span style="font-family: inherit;"> </span></span></div>
<span style="background-color: white; font-family: inherit; text-align: justify;"></span><br />
<div style="text-align: left;">
<span style="background-color: white; font-family: inherit; text-align: justify;"><span style="font-family: inherit;">Arduino-Lite Lightweight AVR Library(2): </span><a href="http://www.elecfreaks.com/120.html" style="font-family: inherit;">http://www.elecfreaks.com/120.html</a></span></div>
<span style="background-color: white; font-family: inherit; text-align: justify;">
</span><a href="http://www.robopeak.net/blog/?p=131"><span style="font-family: inherit;">http://www.robopeak.net/blog/?p=131</span></a><span style="font-family: inherit;"></span><br />
<div style="text-align: left;">
<span style="font-family: inherit;"><a href="http://www.robopeak.net/blog/?p=131"><span style="background-color: white; color: #222222; font-family: inherit; line-height: 15.989583969116211px; text-align: justify;"></span></a><span style="background-color: white; color: #222222; font-family: inherit; line-height: 15.989583969116211px; text-align: justify;"><a href="http://www.robopeak.net/blog/?p=151">http://www.robopeak.net/blog/?p=151</a></span><span style="font-family: inherit;"> </span> </span></div>
<span style="font-family: inherit;">
</span></blockquote>
<blockquote class="tr_bq">
<span style="background-color: yellow; font-family: inherit;"><b>Arduino-Lite Development Reference Manual</b>: <a href="http://www.elecfreaks.com/167.html">http://www.elecfreaks.com/167.html , </a><a href="http://www.robopeak.net/blog/?p=185">http://www.robopeak.net/blog/?p=185</a></span></blockquote>
<h3>
Installation im IDE 1.0.3:</h3>
<span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;"></span></div>
Arduino-lite wurde leider schon eine Weile nicht mehr aktualisiert. Damit es sich in das IDE integrieren lässt, muss man etwas tricksen:<br />
Das <span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;">Archiv: </span><a href="http://arduino-lite.googlecode.com/files/arduino-lite-r0.2.zip" style="background-color: white; font-family: inherit; line-height: 16px; text-align: justify;">http://arduino-lite.googlecode.com/files/arduino-lite-r0.2.zip</a><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;"> (die momentan neueste Version) herunterladen. Die ZIP-Datei ist relativ gross, wir benötigen lediglich den Ordner "arduino-lite-r0.2.zip\arduino-lite\src\core". Dieser wird wieder nach </span><br />
<br />
<span style="font-family: inherit;"><span style="color: #222222; text-align: justify;"><span style="background-color: white; line-height: 16px;">Herunterladen von </span><u style="background-color: white; line-height: 16px;"><span style="color: purple;">arduino-lite-r0.2.zip</span></u><span style="background-color: white; line-height: 16px;"> , den Inhalt des Ordners "</span><span style="background-color: yellow; line-height: 16px;">arduino-lite/src/core</span><span style="background-color: white; line-height: 16px;">" in einen neuen Unterordner "</span></span></span><span style="color: #222222;"><span style="background-color: yellow; line-height: 16px;">arduino-1.0.3\hardware\arduino\cores\lite</span></span><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;">" kopieren.</span><br />
<span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;"><br /></span>
<span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px; text-align: justify;">Noch ein paar Einträge in "</span><span style="color: #222222;"><span style="line-height: 16px;"><span style="background-color: yellow;">arduino-1.0.3\hardware\arduino\boards.txt</span>" ergänzen:</span></span><br />
<span style="font-family: inherit;"><span style="color: #222222; text-align: justify;"><br /></span></span>
<br />
<div style="background-color: white;">
<span style="color: #222222; font-family: 'Courier New', Courier, monospace; font-size: 12px; line-height: 16px; text-align: justify;">##########################################</span></div>
<span style="color: #222222; text-align: justify;"></span><br />
<div>
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;"><span style="background-color: white;">attiny2313-lite.name=</span><span style="background-color: yellow;">LITE ATtiny2313</span><span style="background-color: white;"> (internal 8 MHz clock)</span></span></span></span></div>
<span style="color: #222222; text-align: justify;"></span><br />
<div style="background-color: white;">
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">attiny2313-lite.bootloader.low_fuses=0xe2</span></span></span></div>
<div style="background-color: white;">
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">attiny2313-lite.bootloader.high_fuses=0xdf</span></span></span></div>
<div style="background-color: white;">
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">attiny2313-lite.bootloader.extended_fuses=0xff</span></span></span></div>
<div style="background-color: white;">
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">attiny2313-lite.upload.maximum_size=2048</span></span></span></div>
<span style="color: #222222; text-align: justify;"></span><br />
<div style="background-color: white;">
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">attiny2313-lite.build.mcu=attiny2313</span></span></span></div>
<span style="color: #222222; text-align: justify;"></span><br />
<div style="background-color: white;">
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">attiny2313-lite.build.f_cpu=8000000L</span></span></span></div>
<span style="color: #222222; text-align: justify;">
</span>
<br />
<div>
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;"><span style="background-color: white;">attiny2313-lite.build.core=</span><span style="background-color: yellow;">lite</span></span></span></span></div>
<span style="color: #222222; text-align: justify;">
</span>
<br />
<div style="background-color: white;">
<span style="color: #222222; text-align: justify;"><span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">attiny2313-lite.build.variant=standard</span></span></span></div>
<span style="color: #222222; text-align: justify;">
</span>
<br />
<div style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 12px; line-height: 16px;">
<span style="color: #222222; text-align: justify;"><br /></span></div>
<span style="color: #222222; text-align: justify;">
</span>
<br />
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">##############################################################</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;"><br /></span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.name=<span style="background-color: yellow;">LITE </span>ATmega328 on a breadboard (8 MHz internal clock)</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;"><br /></span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.upload.protocol=stk500</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.upload.maximum_size=30720</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.upload.speed=57600</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;"><br /></span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.bootloader.low_fuses=0xE2</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.bootloader.high_fuses=0xDA</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.bootloader.extended_fuses=0x05</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.bootloader.path=arduino:atmega</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.bootloader.unlock_bits=0x3F</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.bootloader.lock_bits=0x0F</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;"><br /></span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.build.mcu=atmega328p</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.build.f_cpu=8000000L</span></span></div>
<div style="color: #222222; text-align: justify;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.build.core=<span style="background-color: yellow;">lite</span></span></span></div>
<div style="text-align: justify;">
<div style="color: #222222;">
<span style="font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;">mega328lite.build.variant=standard</span></span></div>
<br />
usw.<br />
<h2>
<span style="color: #222222; line-height: 16px;"><span style="font-family: inherit; font-size: large;">Arduino.h ergänzen</span></span></h2>
<br />
<br />
<span style="font-family: inherit;"><span style="color: #222222; line-height: 16px;">Das IDE sucht beim Compilieren nach der Datei Arduino.h. Hierfür müssen wir noch einen kleinen Stub ergänzen. Bei der Gelegenheit fügen wir auch noch ein paar kleine Ergänzungen aus Kompatibilitätsgründen ein: </span>Hier der Sourcecode zu <span style="background-color: yellow; color: #222222; line-height: 16px; text-align: start;">arduino-1.0.3\hardware\arduino\cores\lite\Arduino.h:</span></span><br />
<br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<br />
<pre><span style="background-color: #cccccc;"><span style="color: #7e7e7e;">// MM: need this stub to bring arduino_lit into the new IDE 1.0.x world</span>
#ifndef Arduino_h
#include <span style="color: #006699;">"arduino_lit.h"</span>
#define Arduino_h
</span><pre><span style="background-color: #cccccc;"><span style="color: #7e7e7e;">// see wiring_lit.h</span>
#define <span style="color: #cc6600;">pinMode</span>(a,b) PIN_MODE(a,b)
#define <span style="color: #cc6600;">analogWrite</span>(a,b) ANALOG_WRITE(a,b)
#define <span style="color: #cc6600;">digitalWrite</span>(a,b) DIGITAL_WRITE(a,b)
#define <span style="color: #cc6600;">digitalRead</span>(a) DIGITAL_READ(a)</span></pre>
</pre>
<pre><span style="background-color: #cccccc;"><span style="color: #7e7e7e;">// MM: to increase compatibility with Arduino libraries ("main.cpp")</span>
<span style="color: #cc6600;">int</span> main()
{
init();
<span style="color: #cc6600;"><b>setup</b></span>();
<span style="color: #cc6600;">while</span>(1)
<span style="color: #cc6600;"><b>loop</b></span>();
}
#endif</span></pre>
<pre></pre>
<pre>---------------------------------------</pre>
<h2>
Erste Versuche</h2>
<span style="font-family: inherit;">Das Beispielprogramm "<span style="background-color: yellow;">Fading</span>" lässt die Intensität einer LED wechseln.</span><span style="font-family: inherit;">Ich habe eine kleine Änderung am Code vorgenommen, damit die statischen Macros funktionieren können:</span><span style="color: #222222;"><span style="background-color: yellow; font-family: inherit; line-height: 16px;"><br /></span></span><br />
<span style="color: #222222;"><span style="background-color: yellow; font-family: inherit; line-height: 16px;">"int ledPin = 9;"</span></span><br />
<span style="color: #222222;"><span style="background-color: yellow; font-family: inherit; line-height: 16px;">in </span></span><br />
<span style="color: #222222;"><span style="background-color: yellow; font-family: inherit; line-height: 16px;">"#define ledPin 9"</span></span><br />
<span style="color: #222222;"><span style="background-color: yellow; font-family: inherit; line-height: 16px;">ändern.</span></span><br />
<span style="font-family: inherit;"><span style="color: #222222;"><span style="line-height: 16px;"><br /></span></span></span>
<span style="font-family: inherit;">Danach ergibt sich folgendes Bild beim kompilieren:</span><br />
<span style="font-family: inherit;"><span style="color: #222222;"><span style="line-height: 16px;"><br /></span></span></span>
<span style="background-color: #cfe2f3;"><span style="font-family: inherit;"><span style="color: #222222;"><span style="line-height: 16px;"><b>"Regulär" kompiliert, für ein Arduino UNO Board:</b></span></span></span></span><br />
<span style="background-color: #cfe2f3;"><span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;">Binäre Sketchgröße: 1.296 Bytes (von einem Maximum von 32.256 Bytes)</span></span></span><br />
<span style="background-color: #cfe2f3;"><span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;"><b>Für den ATtiny2313</b></span></span></span><br />
<span style="background-color: #cfe2f3;"><span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;">Binäre Sketchgröße: 1.062 Bytes (von einem Maximum von 2.048 Bytes)</span></span></span><br />
<span style="background-color: #cfe2f3;"><span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;"><b>Für den ATtiny44:</b></span></span></span><br />
<span style="background-color: #cfe2f3;"><span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;">Binäre Sketchgröße: 1.038 Bytes (von einem Maximum von 4.096 Bytes)</span></span></span><br />
<span style="background-color: #cfe2f3;"><span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;"><b>Für den ATtiny85:</b></span></span></span><br />
<span style="background-color: #cfe2f3;"><span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;">Binäre Sketchgröße: 944 Bytes (von einem Maximum von 8.192 Bytes)</span></span></span><br />
<span style="color: #222222;"><span style="background-color: #cfe2f3; font-family: inherit; line-height: 16px;"><b>Mit Arduino-Lite:</b></span></span><br />
<span style="background-color: #cfe2f3; color: #222222; font-family: inherit;"><span style="line-height: 16px;">Binäre Sketchgröße: 448 Bytes (von einem Maximum von 2.</span><span style="line-height: 16px;">048 Bytes)</span></span><br />
<span style="color: #222222; font-family: inherit;"><span style="line-height: 16px;"><br /></span></span>
<span style="color: #222222; font-family: inherit;"><span style="line-height: 16px;">Damit sollte es möglich sein, auch ein sinnvolles Projekt auf den 2313 zu bringen, ohne auf Arduino zu verzichten und auf Registeroperationen und Bitmanipulationen zu setzen.- Nicht das dies absolut schlimm wäre, aber der Code ist dann weniger portabel und lesbar.</span></span><br />
<span style="color: #222222; font-family: inherit;"><span style="line-height: 16px;"><br /></span></span>
<span style="color: #222222;"><span style="line-height: 16px;">Arduino-Lite setzt nicht das gesamte API um. Man muss also etwas in die Trickkiste greifen. </span></span><br />
<br />
<div style="color: #222222; font-size: 12px; line-height: 16px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<span style="color: #222222; font-size: 12px; line-height: 16px;"><span style="font-family: Courier New, Courier, monospace;"><br /></span></span></div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-33740230286352626342013-01-12T19:37:00.000+01:002013-01-25T21:53:58.876+01:00Die Kleinen - ATtiny Chips im Arduino IDEUm kleinere "Arduino"-Schaltungen aufzubauen, eignen sich auch Microcontroller der ATtiny-Reihe. Kleiner nicht im Sinne von SMD-Technik, sondern im Sinne von weniger IO-Pins, weniger Speicher, günstigerer Preis, weniger Bauteile, etc.<br />
Hier sind meine ersten Versuche mit den Chips ATtiny 85, 44 und 2313.<br />
<br />
Dazu muss man die Chips entsprechend verkabeln, wiederum das Arduino Board als Programmierer verwenden (siehe Arduino-ISP2 im früheren Post) und dann noch die passenden Definitionen der Chips ins IDE einbauen.<br />
<br />
Fangen wir mit dem einfachen Teil an: <span style="color: #222222; font-family: inherit; line-height: 16px; text-align: justify;">Die Verkabelung läuft eigentlich genauso wie im vorangegangenen Post zum ATMega beschrieben. Hier dennoch ein paar Bilder, reine Fleissarbeit, aber wenns mal schnell gehen soll, vermeidet man so vielleicht Probleme.</span><br />
<div style="color: #222222; text-align: justify;">
<br />
<br /></div>
<div style="text-align: justify;">
<b><span style="font-size: large;"><span style="font-family: Courier New, Courier, monospace;"></span>ATtiny85 verkabeln:</span></b></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheVdHFGpMZJiQJdCmhocigxoc8j72OoUFJDKgOQ_RM6wbaMqorigQYO-swwKJV6tzARF5DFAp3eacEuiHlS-2vCIoXIbPgUG9_LDUYxcx7Ih5Wue0IoI4cKZWkyyPhnGHM4WenR7sWKjSc/s1600/MM_ArduinoISP_ATtiny85_bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="416" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheVdHFGpMZJiQJdCmhocigxoc8j72OoUFJDKgOQ_RM6wbaMqorigQYO-swwKJV6tzARF5DFAp3eacEuiHlS-2vCIoXIbPgUG9_LDUYxcx7Ih5Wue0IoI4cKZWkyyPhnGHM4WenR7sWKjSc/s640/MM_ArduinoISP_ATtiny85_bb.jpg" width="640" /></a></div>
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
Hier sind noch zwei alternative Anleitungen (inkl. Setup mit 10uF Kondensator statt den Widerständen)<br />
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; text-align: start;">
<span style="line-height: 15px; text-align: justify;"><span style="font-family: Helvetica, arial, sans-serif; font-size: x-small;"><a href="http://hlt.media.mit.edu/?p=1706">http://hlt.media.mit.edu/?p=1706</a> oder auch: </span></span><span style="font-family: Helvetica, arial, sans-serif; font-size: x-small;"><span style="line-height: 15px;"><a href="http://www.hobbytronics.co.uk/arduino-attiny">http://www.hobbytronics.co.uk/arduino-attiny</a></span></span></div>
<br />
<br /></div>
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<b><span style="font-size: large;">ATtiny44 verkabeln:</span></b></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2uQ_KUebiHcKAN1iCrv3QSTgliTScVX3kkcov7NfWQp631FJNJj8tMJxLAmZSNIGR8LWzRtUE3KuLI_p_cFGMQHvL5-qEgqS6BABJBfLiMViB7lx8FH4FAvapXodQ5j2uDkoXU97gTX9/s1600/MM_ArduinoISP_ATtiny44_bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="441" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2uQ_KUebiHcKAN1iCrv3QSTgliTScVX3kkcov7NfWQp631FJNJj8tMJxLAmZSNIGR8LWzRtUE3KuLI_p_cFGMQHvL5-qEgqS6BABJBfLiMViB7lx8FH4FAvapXodQ5j2uDkoXU97gTX9/s640/MM_ArduinoISP_ATtiny44_bb.jpg" width="640" /></a></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
..<br />
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<b><span style="font-size: large;">ATtiny2313 verkabeln:</span></b></div>
<div style="text-align: justify;">
<br /></div>
</div>
</div>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNTFGjV4ikU5lXZrVoEsAe3Y9z13cVVbVWN-Y7SfS8oFAObJb_moWT3tk1IqVR0RUfEiLGAGOkbRoUU3d7ntDd_iPcaBEN6bIahfevG0IsZw5PLlbTF6VLkXLopF5LF0V-BuVVjDT4__63/s1600/MM_ArduinoISP_ATtiny2313_bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNTFGjV4ikU5lXZrVoEsAe3Y9z13cVVbVWN-Y7SfS8oFAObJb_moWT3tk1IqVR0RUfEiLGAGOkbRoUU3d7ntDd_iPcaBEN6bIahfevG0IsZw5PLlbTF6VLkXLopF5LF0V-BuVVjDT4__63/s640/MM_ArduinoISP_ATtiny2313_bb.jpg" width="640" /></a></div>
<span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;"><br /></span></span>
<span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;">..</span></span><br />
<span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;"><br /></span></span>
<span style="color: #222222;"><span style="font-family: inherit; line-height: 16px;">Sicherheitshalber nochmal die Pinouts, um SCK, MISO,MOSI,Reset,Clock und die Stromversorgung richtig an den Chip anzulegen:</span></span><br />
<div>
</div>
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #222222;"><span style="font-size: 12px; line-height: 16px;">
</span></span></span>
<br />
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih1nToFdL7g4uF8G2GjrQMKjb0FD-kPJ7xe5vYe3kpSIA97JNWieWoH-8uZQZ9vsAt34v17ioBE4oPEtxSuCQ5HMtA38YTJa249oDdE2jVhz8yzM5TCWPIKbwMIrefy8y8BFbREGV-7THd/s1600/Pinouts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih1nToFdL7g4uF8G2GjrQMKjb0FD-kPJ7xe5vYe3kpSIA97JNWieWoH-8uZQZ9vsAt34v17ioBE4oPEtxSuCQ5HMtA38YTJa249oDdE2jVhz8yzM5TCWPIKbwMIrefy8y8BFbREGV-7THd/s400/Pinouts.png" width="400" /></a></div>
<br />
Natürlich ginge es auch mit ASCII-Art - das nächste Mal vielleicht :-)<br />
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-size: xx-small;"><br /></span>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// ATMEL ATTINY2313</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">//</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// +-\/-+</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// PA2 1| |20 VCC</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// RX (D 0) PD0 2| |19 PB7 (D 16)</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// TX (D 1) PD1 3| |18 PB6 (D 15)</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// (D 2) PA1 4| |17 PB5 (D 14)</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// (D 3) PA0 5| |16 PB4 (D 13)*</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// INT0 (D 4) PD2 6| |15 PB3 (D 12)*</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// INT1 (D 5) PD3 7| |14 PB2 (D 11)*</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// (D 6) PD4 8| |13 PB1 (D 10)</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// *(D 7) PD5 9| |12 PB0 (D 9)</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// GND 10| |11 PD6 (D 8)</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// +----+</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">//</span></div>
<div style="text-align: start;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// * indicates PWM port</span></div>
<div style="text-align: start;">
</div>
</div>
<div style="text-align: justify;">
<br />
<br />
<div style="text-align: start;">
<span style="font-size: x-small;">---------------- 2313 --------</span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<span style="font-size: x-small;"><br /></span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;">RST - - VCC</span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;"> P0 - - P16</span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;"> P1 - - P15</span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<div style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;"> P2 - - P14</span></div>
<div style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;"> P3 - - P13*</span></div>
</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<div style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;"> P4 - - P12*</span></div>
<div style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;"> P5 - - P11*</span></div>
</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<div style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;"> P6 - - P10</span></div>
<div style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;">*P7 - - P9</span></div>
</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<div style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: 'courier new', monospace; font-size: x-small; margin: 0px; padding: 0px; vertical-align: baseline;">GND - - P8</span></div>
</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<span style="font-size: x-small;"><br /></span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<span style="font-size: x-small;"><br /></span></div>
<div style="border: 0px; margin: 0px; padding: 0px; text-align: start; vertical-align: baseline;">
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<span style="font-size: x-small;">Stared pins (7, 11, 12, 13) are PWM pins.</span></div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<span style="font-size: x-small;"><br /></span></div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<span style="font-size: x-small;"><br /></span></div>
<br />
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
Einen schönen Überblick als Din-A4 Referenzblatt mit allen gängigen Pinouts habe ich hier gefunden: <a href="http://electronicavm.files.wordpress.com/2012/06/microcontroller-reference-sheet-a4.png" style="font-family: 'Times New Roman';">http://electronicavm.files.wordpress.com/2012/06/microcontroller-reference-sheet-a4.png</a></div>
<br />
<div style="background-color: white; color: black; font-family: 'Times New Roman';">
<br /></div>
<h3 style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
Arduino IDE Vorbereiten</h3>
<div style="background-color: white; color: black;">
<span style="font-family: inherit;">Um Programme für die ATtiny Chips zu programmieren, muss man entsprechende Board-Beschreibungen und Core-Definitionen im IDE hinterlegen. Ich habe zwei Pakete ausprobiert, die sich auch parallel installieren lassen:</span></div>
<span style="font-family: inherit;"><span style="color: black;"><span style="background-color: white;">1.) "</span><span style="background-color: yellow;">attiny</span><span style="background-color: white;">" (wird nach "</span></span><span style="background-color: white;">arduino-1.0.3\hardware\</span><span style="background-color: yellow;">attiny</span><span style="background-color: white;">" installiert):</span></span><br />
<div style="background-color: white;">
<span style="font-family: inherit;"><span style="color: #222222; line-height: 15px; text-align: justify;"> </span><a href="https://github.com/damellis/attiny/archive/master.zip" style="color: #666666; line-height: 15px; margin: 0px; padding: 0px; text-align: justify;">ATtiny</a><span style="color: #222222; line-height: 15px; text-align: justify;"> (siehe </span><a href="https://github.com/damellis/attiny/" style="color: #666666; line-height: 15px; margin: 0px; padding: 0px; text-align: justify;">GitHub repository</a><span style="color: #222222; line-height: 15px; text-align: justify;">, beschrieben in: "</span><span style="color: #222222;">Programming an ATtiny w/ Arduino 1.0",</span></span></div>
<div style="background-color: white;">
<span style="font-family: inherit;"><span style="color: #222222; line-height: 15px; text-align: justify;"> </span><a href="http://hlt.media.mit.edu/?p=1695">http://hlt.media.mit.edu/?p=1695</a> )</span></div>
<span style="font-family: inherit;"><span style="background-color: white;">2.) "</span><span style="background-color: yellow;">arduino-tiny</span><span style="background-color: white;">" (wird nach "arduino-1.0.3\hardware\</span><span style="background-color: yellow;">tiny</span><span style="background-color: white;">" installiert - nur tiny-Ordner entpacken):</span></span><br />
<br />
<div style="background-color: white; color: #222222;">
</div>
<a href="http://code.google.com/p/arduino-tiny/"><span style="font-family: inherit;">http://code.google.com/p/arduino-tiny/</span></a><br />
<br />
<div style="background-color: white; color: #222222;">
<span style="font-family: inherit;"><br /></span></div>
<div style="background-color: white; color: #222222;">
<span style="font-family: inherit;">Zu 1: Es existieren einige Forks zu dem Projekt. Ich habe einen gewählt, der auch mit dem ATtiny2313 funktioniert: </span><a href="https://github.com/fschaefer/attiny/archive/master.zip" style="background-color: yellow;"><span style="font-family: inherit;">https://github.com/fschaefer/attiny/archive/master.zip</span></a></div>
<div style="background-color: white; color: #222222;">
<span style="font-family: inherit;">Einen kleinen Fix muss man noch von Hand nachführen: <a href="https://github.com/damellis/attiny/issues/8" style="background-color: transparent;">https://github.com/damellis/attiny/issues/8</a></span></div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
High Low Tech hat auch noch eine schöne Beschreibung und einen Überblick:</div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<a href="http://hlt.media.mit.edu/?p=1229">http://hlt.media.mit.edu/?p=1229</a> (inkl. LED Beschaltung)</div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<b>Wichtig: </b>nicht vergessen, das IDE neu zu starten, nachdem man die Hardware-Pakete oben ergänzt hat, damit die zusätzlichen Boards in der Auswahlliste auftauchen.</div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
Zum Laden eines Programmes dann den entsprechenden Chip auswählen und erst den "Bootloader" programmieren (setzt nur die Fuses), dann das Programm kompilieren und hochladen:</div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; text-align: justify;">
<blockquote class="tr_bq">
<span style="font-family: Helvetica, arial, sans-serif; font-size: x-small;"><span style="line-height: 15px;">["ArduinoISP" Programm auf das Board geladen?]</span></span><span style="font-family: Helvetica, arial, sans-serif; font-size: x-small;"><span style="line-height: 15px;"><b>Board:</b> ATtiny85 (internal 8Mhz clock)</span></span><span style="font-family: Helvetica, arial, sans-serif; font-size: x-small;"><span style="line-height: 15px;"><b>Port:</b> COM</span></span><span style="font-family: Helvetica, arial, sans-serif; font-size: x-small;"><span style="line-height: 15px;"><b>Programmer:</b> Arduino as ISP</span></span></blockquote>
</div>
<div style="color: #222222;">
<span style="font-family: inherit;"><span style="background-color: white;">Wenn man in der Auswahlliste der Boards zu viele Einträge hat, kann man die "</span><span style="background-color: yellow;">boards.txt</span><span style="background-color: white;">" Dateien in den Unterordnern von </span><span style="background-color: white; color: black;">arduino-1.0.3\hardware\* etwas entrümpeln. Insbesondere kann man sich alle Einträge mit externer Clock sparen.</span></span></div>
<div style="background-color: white; color: #222222;">
<span style="font-family: inherit;"><span style="color: black;"><br /></span></span></div>
<div style="background-color: white; color: #222222;">
<span style="font-family: inherit;"><span style="color: black;">Für einen ersten Versuch eignet sich das Demo-Programm "Blink":</span></span></div>
<div style="background-color: white;">
</div>
<ul>
<li>Den Pin im Programm entsprechend anpassen (z.B. Pin 0).</li>
<li>Eine LED mit einem 1k Ohm Vorwiderstand an den Pin anschliessen</li>
<li>Programm kompilieren und auf den Chip laden.</li>
</ul>
<br />
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
Die Led sollte nach dem Hochladen zu blinken beginnen.</div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
Bei einem ersten Versuch hatte ich ein sehr langsames Blinken - delay(1000) sollte im Sekundentakt blinken - Irgendwie lief es nach dem 2. Flashen besser.</div>
<div style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif;">
Eine mögliche Erklärung: Die Definitionen in boards.txt und in den Definitionen enthalten Angaben zum Takt und zum Timing (Einfluss der Fuses?). Kann durchaus sein, dass ein Programm, das für ein 8 Mhz "Board" kompiliert wurde, anders als gedacht läuft, wenn man die Fuses für den 1Mhz Boardeintrag gesetzt hatte.</div>
<div style="color: #222222; font-family: Arial, Helvetica, sans-serif;">
<div style="background-color: white;">
</div>
<h3>
Troubleshooting</h3>
<div style="background-color: white; color: black; font-family: 'Times New Roman';">
<b><u>ATtiny85:</u> </b>Wenn es beim Programmieren zu einer Fehlermeldung kommt:</div>
<div style="color: black; font-family: 'Times New Roman';">
</div>
<div style="text-align: center;">
<span style="background-color: #e06666; color: #222222; font-family: Arial, Helvetica, sans-serif;">avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85</span></div>
<span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"><div style="text-align: center;">
<span style="background-color: #e06666;">avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85</span></div>
<div style="text-align: center;">
<br /></div>
</span><br />
<div style="background-color: white; color: black; font-family: 'Times New Roman';">
<b>Ignorieren!</b></div>
<div style="background-color: white; color: black; font-family: 'Times New Roman';">
<br /></div>
<div style="background-color: white; color: black; font-family: 'Times New Roman';">
</div>
<table border="0" cellpadding="5" cellspacing="0" style="background-color: white; color: #222222; font-family: Verdana, sans-serif; font-size: 10pt; line-height: 15px; width: 600px;"><tbody></tbody></table>
<div style="background-color: white; color: black; font-family: 'Times New Roman';">
<b><u>ATtiny2313: </u></b>Hier funktioniert das "Brennen" des Bootloaders (d.h. letztlich nur das Setzen der Fuses) problemlos. Beim Programm-Upload mit dem Arduino-ISP2 hab ich dann lange versucht einen Fehler zu beheben, der anscheinend gar keiner ist. Die Fehlermeldung</div>
<div style="color: black; font-family: 'Times New Roman';">
</div>
<div style="text-align: center;">
<span style="background-color: #e06666;">Binary sketch size: 912 bytes (of a 2,048 byte maximum)</span></div>
<div style="text-align: center;">
<span style="background-color: #e06666;">avrdude: stk500_initialize(): programmer not in sync, resp=0x15</span></div>
<br />
<div style="color: black; font-family: 'Times New Roman';">
<span style="background-color: white;">kann man getrost<b> IGNORIEREN.</b></span></div>
<div style="color: black; font-family: 'Times New Roman';">
<span style="background-color: white;"><b><br /></b></span></div>
<div style="color: black; font-family: 'Times New Roman';">
<br /></div>
<div style="color: black; font-family: 'Times New Roman';">
<span style="background-color: white;"><b><br /></b></span></div>
</div>
<br />
<div style="background-color: white; color: #222222;">
</div>
<div style="color: black;">
<b><span style="font-family: inherit;">Weitere Troubleshooting-Quellen:</span></b></div>
<div style="color: black;">
<span style="font-family: inherit;">Baud-Rate fix für die ISP Programmierung der ATtiny Chips: <a href="http://www.sirmc.net/page/2/">http://www.sirmc.net/view/2002/</a></span></div>
<div style="color: black;">
<span style="font-family: inherit;">Fehlermeldungen: <a href="http://laclefyoshi.blogspot.ch/2011/01/note-of-caution-for-arduino-isp.html">http://laclefyoshi.blogspot.ch/2011/01/note-of-caution-for-arduino-isp.html</a></span></div>
<div style="font-family: Arial, Helvetica, sans-serif;">
<br /></div>
</div>
</div>
<div style="text-align: justify;">
<h2>
<strong><span style="font-size: large;">Referenzen und Ideen für künftige Projekte:</span></strong></h2>
</div>
<div style="text-align: justify;">
<span style="background-color: white; text-align: start;">Infos und Tipss zum 2313 (Pinouts, Bootloader, etc.): </span><a href="http://www.ernstc.dk/arduino/2313.htm" style="background-color: white; text-align: start;">http://www.ernstc.dk/arduino/2313.htm</a><br />
<br /></div>
<div style="text-align: justify;">
Falls es doch ein Bootloader für die ATtiny Serie sein darf:</div>
<div style="text-align: left;">
<ul>
<li>TinySafeBoot — A tiny and safe Bootloader for AVR-ATtinys <a href="http://jtxp.org/tech/tinysafeboot_en.htm">http://jtxp.org/tech/tinysafeboot_en.htm</a></li>
</ul>
</div>
<ul>
<li><div style="text-align: left;">
ATtiny45 Bootloader <a href="http://www.mikrocontroller.net/topic/72308">http://www.mikrocontroller.net/topic/72308</a></div>
</li>
</ul>
<div style="text-align: left;">
Den ATtiny85 als USB Gadget verwenden:</div>
<ul>
<li><div style="text-align: left;">
VUSB - Virtual USB port for AVR microcontrollers <a href="http://www.obdev.at/products/vusb/index.html">http://www.obdev.at/products/vusb/index.html</a></div>
</li>
<li><div style="text-align: left;">
USBtiny - A software implementation of the USB low-speed protocol for the Atmel ATtiny microcontrollers <a href="http://dicks.home.xs4all.nl/avr/usbtiny/">http://dicks.home.xs4all.nl/avr/usbtiny/</a></div>
</li>
</ul>
<div style="text-align: left;">
...braucht dann allerdings wohl doch einen externen 12 Mhz Quartz als Taktgeber für das USB-timing.</div>
<br />
Konkreter Einsatz (lässt sich aber auch für wenige EUR fertig kaufen):<br />
<ul>
<li>USBtinyISP - Inexpensive USB AVR Programmer <a href="http://www.ladyada.net/make/usbtinyisp/">http://www.ladyada.net/make/usbtinyisp/</a></li>
</ul>
<div style="text-align: left;">
<br /></div>
<br />
<div>
</div>
<div>
</div>
<div>
</div>
<blockquote class="tr_bq" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 12px; line-height: 16px;">
</blockquote>
<u><span style="color: purple;"></span></u></div>
</div>
</div>
</div>
</div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com2tag:blogger.com,1999:blog-259154915718438244.post-44687639272149430672013-01-11T17:02:00.000+01:002013-01-21T20:06:26.165+01:00ArduinoISP - AVR Chips programmieren<span style="font-family: inherit;">Ich wollte erst mal klein anfangen und schauen, ob die zusätzlichen Mikrocontroller, die ich bestellt habe auch funktionieren. Dazu reicht mir ein "Hello World", sprich das minimale "Blink"-Programm des Arduino IDE (übrigens: 1.0.3), um eine LED dann zum Blinken zu bringen.</span><br />
<span style="font-family: inherit;">Zusätzliche Elemente, wie z.B. einen Quartz wollte ich mir nach Möglichkeit ersparen.</span><br />
<br />
<b><u><span style="font-family: inherit;">Arduino als ISP (und als "Taktgeber"!)</span></u></b><br />
<span style="font-family: inherit;">Doch zunächst muss man die Chips zum Programmieren vorbereiten und einen ISP-Programmer (In-System-Programmer) braucht es auch noch.</span><br />
<span style="font-family: inherit;">Ersteren erhält man, in dem man das existierende Arduino-Board (UNO, Duemilanove, etc.) als Programmiergerät verwendet.</span><br />
<span style="font-family: inherit;">Beschrieben wird dies im Detail hier: <b><a href="http://arduino.cc/en/Tutorial/ArduinoISP">http://arduino.cc/en/Tutorial/ArduinoISP</a></b></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Es wird ein entsprechendes Programm "ArduinoISP" auf das Board geladen und danach verhält sich das Board gegenüber dem Arduino IDE bzw. avrdude wie ein Programmiergerät (genauer: "stk500"), so lange, bis man ein anderes Programm läd, also Vorsicht bei den folgenden Uploads :-)</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>Verfeinerung:</b> Ich will es gleich vorweg nehmen, nicht alle Versuche waren sofort erfolgreich. </span><br />
<span style="font-family: inherit;">Um sich den Ärger gleich zu sparen, nimmt man am Besten gleich die Weiterentwicklung des ArduinoISP, den <span style="background-color: yellow;">ArduinoISP2</span>. </span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<div class="MsoNormal" style="background-color: white; border: medium none; color: #222222; font-size: 13px; padding: 0cm;">
<b><span style="font-family: inherit;"><span style="color: #c00000;"><a href="https://github.com/adafruit/ArduinoISP#arduinoisp2" style="color: #1155cc;" target="_blank">https://github.com/adafruit/<wbr></wbr>ArduinoISP#arduinoisp2</a></span><u></u><u></u></span></b></div>
<div class="MsoNormal" style="background-color: white; border: medium none; color: #222222; font-size: 13px; padding: 0cm;">
<i><span style="font-family: inherit;">“This is a fork of Adafruit's ArduinoISP which is a fork of Arduino's ArduinoISP which adds an 8 MHZ 'crystal' output on pin #9 so you don't need an extra oscillator/crystal. Can also rescue some bricked chips with bad oscillator fuses”</span><span style="font-family: arial, sans-serif;"><u></u><u></u></span></i></div>
<div class="MsoNormal" style="background-color: white; border: medium none; color: #222222; font-family: arial, sans-serif; font-size: 13px; padding: 0cm;">
</div>
<br />
<span style="font-family: inherit;">Diese Version ist von der, die beim IDE mitgeliefert ist kaum zu unterscheiden (vermutlich ist es auch nur eine Frage der Zeit). Bis dahin: Wenn man im passenden Sourcecode nachschaut, sollte man diese Zeilen finden:</span><br />
<blockquote class="tr_bq">
<span style="background-color: yellow; font-family: inherit;"><i> // setup high freq PWM on pin 9 (timer 1)</i><i> </i></span></blockquote>
<blockquote class="tr_bq">
<i style="background-color: yellow;"><span style="font-family: inherit;">// 50% duty cycle -> 8 MHz</span></i></blockquote>
<span style="font-family: inherit;">Dies ist extrem nützlich. Hat man nämlich beim Experimentieren einen Chip auf einen externen Taktgeber eingestellt (ggf. ist dies sogar die Werkseinstellung?), müsste man zum Programmieren im Setup eben auch wie im Tutorial ersichtlich einen Quartz und zwei Kondensatoren verbauen.</span><br />
<span style="font-family: inherit;">Denn sobald beim Initialisieren der Chips die sogenannten "Fuse-Bits" gesetzt werden und diese neben der Taktfrequenz auch die Verwendung eines externer Taktgeber definieren, reagiert der Chip nicht mehr ohne auf weitere Programmierversuche.</span><br />
<br />
<span style="font-family: inherit;">Die Spezialversion des ArduinoISP liefert immerhin einen 8Mhz Taktgenerator, der dieses Problem elegant umschifft (Pin 9 des Arduino Boards an XTAL1 des Chips anlegen).</span><br />
<span style="font-family: inherit;">Selbst wenn der Chip für 16Mhz konfiguriert wurde, sollte dies funktionieren.</span><br />
<span style="font-family: inherit;">Sonst gibt es hier noch eine nette Abhandlung zu den "Fuses" und zum Troubleshooting (wie man Chips retten kann, die man falsch programmiert hat): <a href="http://www.gammon.com.au/forum/?id=11643">http://www.gammon.com.au/forum/?id=11643</a></span><br />
<span style="font-family: inherit;">Die offizielle Troubleshooting-Seite des Arduino hat mir bislang noch wenig geholfen.</span><br />
<br />
<br />
<span style="background-color: #cccccc; color: #444444; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">When you buy a brand new, blank ATmega328p, it comes with a set of fuses (basically hardware settings) which give it maximum reliability, but they aren't the default that is required for the chip to work with the Arduino IDE and libraries. In order to burn the correct fuses onto it, run the following command (this assumes that you're using Arduino-as-ISP on COM4);</span><br />
<span style="background-color: #cccccc;"><br /></span>
<br />
<blockquote style="color: #444444; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span class="Apple-style-span" style="background-color: #cccccc; font-family: 'Courier New', Courier, monospace;">avrdude -pm328p -c<b>stk500v1</b> -b<b>19200</b> -PCOM4 -v -C ..\etc\avrdude.conf -U lfuse:w:0xFF:m -U hfuse:w:0xD6:m -U efuse:w:0x05:m </span><b style="background-color: yellow; color: black; font-size: larger; line-height: normal;">-B250</b></blockquote>
<br />
Diese Zeile dient nur zur Illustration. Man kann im IDE unter Einstellungen den Upload ausführlicher ausgeben lassen. Dann erhält man auch die avrdude Kommandozeile. Der -B Parameter passt das Timing beim Programmieren an. Ggf. ein Tipp, der hilft, wenn alles verloren scheint. Oder eben doch ein Setup mit externen Quartz?<br />
<br />
Aber damit genug zum Exkurs. Im Folgenden setze ich den ArduinoISP2 einfach voraus :-)<br />
So kompliziert ist es gar nicht. Der erste Versuch war eben etwas steinig. Bis es lief - daher diese Tipps zuerst - damit ich mich beim nächsten Mal darauf stützen kann, wenn es klemmt.<br />
<br />
<br />
<b><u>Verkabelung - Ready to Program:</u></b><br />
<br />
Auch hier wieder nur eine kleine Zusammenfassung der zahlreichen Versuche und Tipps, die ich ausprobiert habe, bis es klappte (habs gerade neu gezeichnet):<br />
<blockquote class="tr_bq">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3xfrhafTdN75iOfBrpB9-vuhdCFusCUmqhJGy5zmLtmXUPzhRWHDncMxJKOJNoVBMWGjsEn9iA14LJCOiAD2gqIoUNc3sFhKGuZLVUFFJtKH5tZA2naSzn4bpFxUL5mLAiynEXWiF0W7i/s1600/MM_ArduinoISP2-Bootloader+auf+ATmega+flashen_Steckplatine.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="448" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3xfrhafTdN75iOfBrpB9-vuhdCFusCUmqhJGy5zmLtmXUPzhRWHDncMxJKOJNoVBMWGjsEn9iA14LJCOiAD2gqIoUNc3sFhKGuZLVUFFJtKH5tZA2naSzn4bpFxUL5mLAiynEXWiF0W7i/s640/MM_ArduinoISP2-Bootloader+auf+ATmega+flashen_Steckplatine.png" width="640" /></a></blockquote>
<br />
<span style="font-family: inherit;">Das Bild sollte an sich eine gute Referenz sein und selbsterklärend (beim Verkabeln besser doppelt prüfen, dass man den richtigen Pin erwischt hat!).</span><br />
<span style="font-family: inherit;">Das macht übrigens richtig Spass mit dem Experimentierboard und ein paar vorkonfigurierten "Strippen", die sich leicht stecken lassen. Einen extra Programmer brauche ich vorerst nicht.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Neben dem zusätzlichen Clock-Signal von Pin D9 des Boards an XTAL1, muss man beim<b> Thema Reset</b> ggf. noch etwas nachbessern:</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>Slave-Chip</b> (der zu programmierende Chip auf dem Experimentierboard):</span><br />
<span style="font-family: inherit;"><span style="background-color: white; line-height: 15px; text-align: justify;">Der <b>Reset-Pin</b> (Chip Pin 1?) kann optional mit einem </span><span style="background-color: yellow; line-height: 15px; text-align: justify;">Pull-Up</span><span style="background-color: white; line-height: 15px; text-align: justify;"> Widerstand (1kOhm; braun-schwarz-rot-gold) an die Versorgungsspannung geführt werden.</span></span><br />
<span style="background-color: white; line-height: 15px; text-align: justify;"><span style="font-family: inherit;"><br /></span></span>
<br />
<div style="text-align: justify;">
<span style="font-family: inherit;">Damit das Arduino-Board selbst nicht während dem Programmieren resettet wird (durch seine USB bzw. Serielle Verbindung), muss man dies ggf. unterbinden:</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;">Beim UNO wohl durch einen <span style="background-color: yellow;">10 µF Kondensator</span> (ELKO), dessen Minus-Pol an GND geht, die Plus-Seite an den <b>Reset-Pin des Boards</b>.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;">Ich habe beim Arduino Duemilanove stattdessen mit einem <span style="background-color: yellow;">110 Ohm Pullup</span> Erfolg gehabt (aus 2 parallelen 220Ohm Widerständen.</span></div>
<div style="text-align: justify;">
<span style="background-color: yellow; font-family: inherit;">!!! Diese Schaltung wieder entfernen, wenn man ein neues Programm auf das Board selbst laden will !!!</span></div>
<div style="text-align: justify;">
<span style="font-family: Helvetica, arial, sans-serif; font-size: x-small;"><br /></span></div>
Wie gesagt: Bin mir nicht ganz sicher, welche davon es am Ende effektiv gebraucht hat. Der 1k Pullup am Slave-Chip war eher nicht erforderlich.<br />
<br />
<b><u><span style="font-family: Arial, Helvetica, sans-serif;">Bootloader Programmieren:</span></u></b><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Letztlich ist dies nun gaaanz einfach: Man wählt im IDE die entsprechenden Einstellungen:</span><br />
<br />
<div style="text-align: justify;">
<span style="font-size: x-small;"><span style="font-family: Arial, Helvetica, sans-serif; line-height: 15px;">["ArduinoISP" Programm auf das Board geladen?]</span></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: x-small;"><span style="line-height: 15px;"><b>Board:</b> </span></span><span style="color: #222222; font-size: 12px; line-height: 16px;">"<span style="background-color: yellow;">Arduino Duemilanove w/ ATmega328 - Optiboot</span></span><span style="color: #222222; font-size: 12px; line-height: 16px;">"</span><span style="font-size: x-small;"><span style="line-height: 15px;"> </span></span><i><span style="color: #222222; font-size: 12px; line-height: 16px;">[siehe unten</span><span style="color: #222222; font-size: 12px; line-height: 16px;">]</span></i></span></div>
<div style="text-align: justify;">
<span style="font-size: x-small;"><span style="font-family: Arial, Helvetica, sans-serif; line-height: 15px;"><b>Port:</b> COM <des board="board" usb-anschlusses="usb-anschlusses" vom="vom"><vom arduino="arduino" board="board" duemillanove="duemillanove"></vom></des></span></span></div>
<div style="text-align: justify;">
<span style="font-size: x-small;"><span style="font-family: Arial, Helvetica, sans-serif; line-height: 15px;"><b>Programmer:</b> Arduino as ISP</span></span></div>
<br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">Dann <span style="line-height: 15px; text-align: justify;">"Bootloader installieren" wählen und der Ausgabe gebannt folgen :-)</span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="line-height: 15px; text-align: justify;"><br /></span></span>
<b>Warnung:</b> Die Einstellung von "Board" ist hier extrem heikel! Sie bestimmt nun das Target-Board <u>NICHT</u> der Programmierer (der wird durch COM-Port und "Arduino as ISP" hinreichend beschrieben).<br />
Beim "Board" sollte man aufpassen. Es steuert nicht nur, für welchen Target-Prozessor die Programme compiliert werden (insbes. Pins und Taktfrequenz), sondern auch, welche Fuses gesetzt werden und welcher Bootloader gebrannt wird.<br />
Hier schliesst sich der Kreis: Wenn man hier daneben liegt, hilft der Trick mit dem Taktgeber oben hoffentlich weiter :-)<br />
<span style="line-height: 15px; text-align: justify;"><span style="font-family: inherit;"><br /></span></span>
<span style="line-height: 15px; text-align: justify;"><b><u><span style="font-family: inherit;">Arduino Duemilanove updaten:</span></u></b></span><br />
<span style="line-height: 15px; text-align: justify;"><b><u><span style="font-family: inherit;"><br /></span></u></b></span>
<span style="line-height: 15px; text-align: justify;"><span style="font-family: inherit;">Der Duemilanove ist fast baugleich mit dem UNO, insbesondere neuere Fassungen des Duemilanove haben einen ATMega 328 (statt 168). Der Bootloader des UNO ist allerdings etwas schlanker und schneller (Stichwort "Optiboot"):</span></span><br />
<br />
<div class="MsoNormal">
<blockquote class="tr_bq" style="color: #222222;">
<span style="background-color: #cccccc; font-size: xx-small;"><b><span style="font-family: inherit;">Upgrade your Ar</span><span style="font-family: arial, sans-serif;">duino for free with Optiboot </span></b><span lang="DE" style="font-family: arial, sans-serif;"><a href="http://code.google.com/p/optiboot/" style="color: #1155cc;" target="_blank"><span lang="EN-US">http://code.google.com/p/<wbr></wbr>optiboot/</span></a></span><span style="font-family: arial, sans-serif;">Optiboot is an easy to install upgrade to the Arduino bootloader within Arduino boards. It provides the following features:</span></span><br />
<ul><span style="background-color: #cccccc; font-size: xx-small;">
<li><span style="font-family: arial, sans-serif;">Allows larger sketches. Optiboot is a quarter of the size of the default bootloader, freeing 1.5k of extra space.</span></li>
<li><span style="font-family: arial, sans-serif;">Makes your sketches upload faster. Optiboot operates at higher baud rates and has streamlined programming.</span></li>
<li><span style="font-family: arial, sans-serif;">Adaboot performance improvements. Optiboot runs your sketches sooner, with no watchdog issues.</span></li>
<li><span style="font-family: arial, sans-serif;">Compatible with 168 and 328 Arduinos including Lilypad, Pro, Nano</span></li>
</span></ul>
<span style="background-color: #cccccc; font-size: xx-small;">
</span></blockquote>
Die Idee für den Upgrade hatten schon andere vor mir:<br />
<div style="color: #222222;">
<a href="http://ashton-lockey.blogspot.ch/2012/07/tutorial-arduinoisp-duemilanove-with.html" style="line-height: 16px; text-align: justify;"><span style="font-family: inherit;">http://ashton-lockey.blogspot.ch/2012/07/tutorial-arduinoisp-duemilanove-with.html</span></a></div>
<div style="color: #222222;">
<a href="http://binblog.info/2011/12/09/optiboot-on-legacy-arduinos/" style="background-color: white; color: #1155cc;" target="_blank"><span style="font-family: inherit;">http://binblog.info/2011/12/<wbr></wbr>09/optiboot-on-legacy-<wbr></wbr>arduinos/</span></a></div>
<div style="color: #222222;">
<span style="color: black;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="color: #222222;">
Es passt hier aber eben gut her, deshalb kurz zusammengefasst:</div>
<div style="color: #222222;">
Man könnte einfach den Board-Eintrag für das UNO nehmen. Ich habe mich entschieden, den Eintrag für das Duemilanove mit Optiboot zu ergänzen:</div>
<div style="color: #222222;">
<br /></div>
<div style="color: #222222;">
In der Datei <span style="background-color: yellow;">arduino-1.0.3\hardware\arduino\boards.txt </span>wird folgender Eintrag ergänzt:</div>
</div>
<div style="text-align: justify;">
<div>
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;"><br /></span></span></span>
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">##############################################################</span></span></span></div>
<br />
<div>
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.name=Arduino Duemilanove w/ ATmega328 - Optiboot</span></span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<br /></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.upload.protocol=arduino</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.upload.maximum_size=32256</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.upload.speed=115200</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;"><br /></span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.bootloader.low_fuses=0xFF</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.bootloader.high_fuses=0xDE</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.bootloader.extended_fuses=0x05</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.bootloader.path=optiboot</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.bootloader.file=optiboot_atmega328.hex</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.bootloader.unlock_bits=0x3F</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.bootloader.lock_bits=0x0F</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.build.mcu=atmega328p</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.build.f_cpu=16000000L</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.build.core=arduino</span></span></div>
<div style="font-family: 'Courier New', Courier, monospace;">
<span style="color: #222222;"><span style="background-color: #cccccc; font-size: 12px; line-height: 16px;">Duemilanove.build.variant=standard</span></span></div>
<div>
<div style="color: #222222; font-family: 'Courier New', Courier, monospace; font-size: 12px; line-height: 16px;">
<br /></div>
<div style="color: #222222; font-family: 'Courier New', Courier, monospace; font-size: 12px; line-height: 16px;">
<br /></div>
<span style="color: #222222;">Damit der Eintrag wirksam wird, muss man das IDE wie gewohnt neu starten.</span><br />
<div style="text-align: start;">
<span style="color: #222222;">Der Bootloader wird dann über ArduinoISP gebrannt, die Einträge "protocol" und "speed" beziehen sich auf die Uploads der Programme später im Betrieb.</span><br />
<span style="color: #222222;"><br /></span>
<span style="color: #222222;">Generell habe ich die Liste der angebotenen Boards etwas ausgedünnt. Im nächsten Post beschreibe ich, wie man zusätzliche Chips in die Liste der Boards aufnimmt. Spätestens dann wird es unübersichtlich :-)</span></div>
<div style="text-align: start;">
<span style="color: #222222;"><br /></span></div>
<div style="text-align: start;">
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOWepkos97tO1PrypdxeWHYEh4tN7IL2CjlEKmWKsMWflS0tbyG9QyTlAWUVwUTQfAuJhnD2ugRZaRHzaD91I2GGvTjN43sIVYIVWPVd3F5ikKj5gbjLu9YNLjDvD0fegN3oaadnnafmsm/s1600/20130114_203510.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="306" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOWepkos97tO1PrypdxeWHYEh4tN7IL2CjlEKmWKsMWflS0tbyG9QyTlAWUVwUTQfAuJhnD2ugRZaRHzaD91I2GGvTjN43sIVYIVWPVd3F5ikKj5gbjLu9YNLjDvD0fegN3oaadnnafmsm/s400/20130114_203510.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Hier sieht man schon ein paar Teile für den nächsten Aufbau :-)</td></tr>
</tbody></table>
<span style="color: #222222;"></span><br />
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;"><span style="color: #222222;"><br /></span></span>
<span style="color: #222222;">Nach der erfolgreichen Programmierung des Bootloaders, kann man den neuen Chip in den Duemilanove einsetzen. Dazu vorsichtig den Original-Chip aus dem Sockel hebeln und den frisch programmierten Chip in die Fassung einbauen. Dann mal ein Beispielprogramm laden, z.B. "ArduinoISP2".[Die Autoreset-Schaltung nicht vergessen - die müsste man nun abklemmen!!]</span><br />
<span style="color: #222222;">Der ausgebaute ATMega 328 kann dann sogleich auch einen Optiboot erhalten. Im schlimmsten Fall ist er so ein prima Ersatzchip sowohl für einen UNO als auch für den Duemilanove, wenn doch mal was beim Verkabeln schief geht.</span></div>
<div style="color: #222222; font-family: 'Courier New', Courier, monospace; font-size: 12px; line-height: 16px;">
<br />
<br /></div>
<div style="color: #222222; font-family: 'Courier New', Courier, monospace; font-size: 12px; line-height: 16px;">
</div>
<div style="color: black; font-size: medium; line-height: normal;">
<b>Ein paar Extras</b></div>
<div>
<div style="color: black; font-size: medium; line-height: normal;">
<span style="font-family: 'Times New Roman'; text-align: start;"><br /></span></div>
<div style="color: black; font-size: medium; line-height: normal;">
<span style="font-family: 'Times New Roman'; text-align: start;">Nick Gammon hat ein paar interessante Programme ("Sketches") im Zusammenhang mit der AVR Programmierung zur Verfügung gestellt: </span><a href="https://github.com/nickgammon/arduino_sketches/archive/master.zip" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; text-align: start;">https://github.com/nickgammon/arduino_sketches/archive/master.zip</a></div>
<div style="color: black; font-size: medium; line-height: normal;">
<br /></div>
<div style="color: black; font-size: medium; line-height: normal;">
</div>
<a href="http://www.gammon.com.au/forum/bbshowpost.php?bbtopic_id=123">http://www.gammon.com.au/forum/bbshowpost.php?bbtopic_id=123</a><br />
<a href="http://www.gammon.com.au/forum/?id=11637">http://www.gammon.com.au/forum/?id=11637</a><br />
<a href="http://www.gammon.com.au/forum/bbshowpost.php?bbsubject_id=11635">http://www.gammon.com.au/forum/bbshowpost.php?bbsubject_id=11635</a><br />
<br />
<br />
<div style="color: black; font-size: medium; line-height: normal;">
<b>Insbesondere diese zwei:</b></div>
<div style="color: black; font-size: medium; line-height: normal;">
</div>
<ul>
<li><b>Atmega_Board_Detector</b> - Liest ein paar Infos des angeschlossenen Chips aus, Typ, gesetzte Fuse-Bits, Bootloader,etc. </li>
<li><b>Atmega_Board_Programmer</b> - Damit wird das Arduino Board zum unabhängigen Programmer - er erkennt den angeschlossenen Chip und installiert einen Bootloader - Massenprogrammierung nach einem Grosseinkauf?</li>
</ul>
</div>
</div>
</div>
<ul style="color: #222222; font-family: arial, sans-serif; font-size: 13px;" type="disc">
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11633" style="color: #1155cc;" target="_blank">Detect chip signatures</a> – chip detector script<u></u><u></u></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11653" style="color: #1155cc;" target="_blank">Fuse calculator</a><u></u><u></u></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11637" style="color: #1155cc;" target="_blank">Minimal board (breadboard Arduino)</a><u></u><u></u></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11516" style="color: #1155cc;" target="_blank">Multiplexing LEDs (MAX7219)</a><u></u><u></u></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11635" style="color: #1155cc;" target="_blank">Program bootloader</a><u></u><u></u></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11473" style="color: #1155cc;" target="_blank">Pinouts</a><u></u><u></u></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc;"><span style="font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11518" style="color: #1155cc;" target="_blank">Shift register (74HC595)</a> - </span><span style="font-family: Verdana, sans-serif; font-size: 9.5pt;">A cheap and simple way of expanding your processor's output capability is by using a "shift register" like the 74HC595 described here.</span><span style="font-family: Verdana, sans-serif; font-size: 10pt;"><u></u><u></u></span></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc;"><span style="font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11643" style="color: #1155cc;" target="_blank"><span lang="DE-CH"><b>Solving upload/fuse problems</b></span></a></span><span lang="DE-CH" style="font-family: Verdana, sans-serif; font-size: 10pt;"><b> </b> - Tipps zum fuse auslesen, rücksetzen, etc.<u></u><u></u></span></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11357" style="color: #1155cc;" target="_blank">Upload bootloader with AVR Dragon</a><u></u><u></u></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11638" style="color: #1155cc;" target="_blank">Upload/download .hex files</a><u></u><u></u></span></li>
<li class="MsoNormal" style="margin: 0px 0px 0px 15px;"><span style="background-color: #cccccc; font-family: Verdana, sans-serif; font-size: 10pt;"><a href="http://www.gammon.com.au/forum/?id=11608" style="color: #1155cc;" target="_blank">VGA output</a><u></u><u></u></span></li>
</ul>
<div style="border-bottom-color: windowtext; border-bottom-width: 1pt; border-style: none none solid; color: #222222; font-family: arial, sans-serif; font-size: 13px; padding: 0cm 0cm 1pt;">
<div class="MsoNormal" style="border: medium none; padding: 0cm;">
<b><span style="font-family: Verdana, sans-serif; font-size: 9.5pt;"><br /></span></b>
<span style="font-family: Verdana, sans-serif; font-size: 9.5pt;">Für künftige Spezialfälle: </span><span style="font-family: Verdana, sans-serif; font-size: 9.5pt;">Web-based fuse calculator </span><a href="http://www.engbedded.com/fusecalc" style="color: #1155cc; font-size: 12pt;" target="_blank">http://www.engbedded.com/<wbr></wbr>fusecalc</a><br />
<div style="background-color: white;">
<br />
<b>Noch zwei:</b><br />
<br />
<div class="MsoNormal" style="font-size: 13px;">
<span lang="DE"><a href="https://github.com/Coding-Badly/TinyDebugKnockBang" style="color: #1155cc;" target="_blank"><span lang="EN-US">https://github.com/Coding-<wbr></wbr>Badly/TinyDebugKnockBang</span></a></span><u></u><u></u></div>
<div class="MsoNormal" style="font-size: 13px;">
TinyDebugKnockBang - Serial like debugging for processors with an uncalibrated / inaccurate clock.</div>
<br />
<br />
<div class="MsoNormal" style="font-size: 13px;">
<span lang="DE"><a href="https://github.com/Coding-Badly/TinyISP" style="color: #1155cc;" target="_blank"><span lang="EN-US">https://github.com/Coding-<wbr></wbr>Badly/TinyISP</span></a></span><u></u><u></u></div>
<div class="MsoNormal" style="font-size: 13px;">
TinyISP 1.0 - Turn an ATmega328[P] Arduino compatible board (like an Uno) or<u></u><u></u></div>
<div class="MsoNormal" style="font-size: 13px;">
a Teensy into an In System Programmer (ISP). Based on MegaISP and<u></u><u></u></div>
<div class="MsoNormal" style="font-size: 13px;">
ArduinoISP.<u></u><u></u></div>
<div class="MsoNormal" style="font-size: 13px;">
<br /></div>
<div class="MsoNormal" style="font-size: 13px;">
<br /></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /></div>
<div style="background-color: white;">
<br /></div>
</div>
</div>
<span style="background-color: white; color: #222222; text-align: justify;">
</span>Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-27608735269399171862012-12-30T03:03:00.000+01:002013-01-02T11:48:02.527+01:00Akkupack im SelbstbauObwohl Akkus eine Nennspannung von ca. 1.2V im Vergleich zu den 1,5V einer herkömmlichen Batterie haben, sollte man sie nicht unterschätzen. Akkus können sehr hohe Entladeströme bzw. Kurzschlussströme liefern und dabei sehr heiss werden.<br />
Beim Akku-Pack von Fischertechnik wird explizit damit geworben, dass er eine Kurzschlusssicherung enthält. Sehr beruhigend - wir alle haben ja schon mal von explodierten Handies oder fehlerhaften Laptop-Akkus gehört und die Gefahren, die ein Akku-Pack anrichten kann.<br />
<br />
Zunächst ein kleiner Vorgriff auf das Ziel meiner heutigen Bastelarbeit - ein Akku-Pack<br />
im Selbstbau mit einzeln ladbaren Zellen.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkO0sMFpaUBa4NYtHXEoOAeDiTICmlQFbLwheMUoYE_UypP6_NeEfAdFqUSY5SAOGlZ7h3ww7vYF7pLU_ofWVqD3uQLBEuhadudgyAAiAYm5-oKyyWqFogEG291CfLNgWplV_p3aheFyBK/s1600/Akku+Vergleich_klein.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkO0sMFpaUBa4NYtHXEoOAeDiTICmlQFbLwheMUoYE_UypP6_NeEfAdFqUSY5SAOGlZ7h3ww7vYF7pLU_ofWVqD3uQLBEuhadudgyAAiAYm5-oKyyWqFogEG291CfLNgWplV_p3aheFyBK/s320/Akku+Vergleich_klein.JPG" width="320" /></a></div>
7 NiMH Zellen (Grösse AA) haben im Batteriehalter ziemlich genau die Grösse des Akku-Packs von Fischertechnik. Neben den nominalen 8,4V kann man durch die Verwendung von stärkeren Zellen (hier 2700 mAh) sogar noch etwas mehr Kapazität verbauen.<br />
<br />
Wie man in der Abbildung sehen kann, habe ich den Platz für die 8. Batterie im Batteriehalter für eine kleine Schaltung genutzt, die mit Heisskleber befestigt ist.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPa2qWHNgMy0mFR0sKvImqElx1SqjyQkZO7YLoetNg-Oc3lq_HqKKl0LvrAMbUP6Rq38JGfDWggCFcSyPb8eNUVD_Qv6JrsMINbjXN6gICvG86KErOu_xf_RXTZLikbk5p2fYg5268zznh/s1600/Detail_klein.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPa2qWHNgMy0mFR0sKvImqElx1SqjyQkZO7YLoetNg-Oc3lq_HqKKl0LvrAMbUP6Rq38JGfDWggCFcSyPb8eNUVD_Qv6JrsMINbjXN6gICvG86KErOu_xf_RXTZLikbk5p2fYg5268zznh/s200/Detail_klein.JPG" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Neben den zwei Buchsen (+ und - Anschlüsse) sind hier noch zwei PTC Elemente parallel zueinander geschaltet.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
PTCs sind rückstellende Sicherungen, die es in verscheidenen Ausführungen gibt. Wenn der Stromfluss einen gegebenen Wert (I_hold) übersteigt, wird die Sicherung ausgelöst. Die Komponente erwärmt sich und erhöht dabei ihren Widerstand und dämmt so den Stromfluss fast vollständig ein. Dies geschieht innerhalb von wenigen Sekunden.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Die von mir verwendeten PTCs stammen von Reichelt ("<a href="http://www.reichelt.de/Rueckstellende-Sicherungen/PFRA-050/3/index.html?;ACTION=3;LA=446;ARTICLE=35207">PFRA 050</a>") und haben folgende Werte:</div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial, verdana, sans-serif; font-size: 12px; text-align: start;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial, verdana, sans-serif; font-size: 12px; text-align: start;">Ihold: </span><span style="font-family: Arial, verdana, sans-serif; font-size: 12px; text-align: start;">0,50 A</span></div>
<div style="text-align: center;">
<span style="background-color: white; font-family: Arial, verdana, sans-serif; font-size: 12px; text-align: start;">Itrip: </span><span style="background-color: white; font-family: Arial, verdana, sans-serif; font-size: 12px; text-align: start;">1,00 A</span></div>
<div style="text-align: center;">
<span style="background-color: white; font-family: Arial, verdana, sans-serif; font-size: 12px; text-align: start;">Tripzeit: </span><span style="background-color: white; font-family: Arial, verdana, sans-serif; font-size: 12px; text-align: start;">4,0 s</span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul itemprop="description" style="background-color: white; border: none; font-family: Arial, verdana, sans-serif; font-size: 12px; list-style-type: none; margin: 0px; max-height: 150px; overflow: hidden; padding: 0px; text-align: start;">
<li style="clear: both;"><div style="border: none; float: left; padding: 0px; width: 15px;">
</div>
</li>
</ul>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Ich hatte auch noch den "PFRA 025" und den "PFRA 075" ins Auge gefasst. Letztlich möchte man ja verhindern, dass ein Kabel oder eine Schaltung durchschmort, daher will man eine möglichst schnell reagierende Sicherung. Daher habe ich etwas herumprobiert.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Die Werte habe ich in der Praxis durch eine Vergleichsmessung überprüft (Jeweils nur eine einzelne Messreihe, ich wollte ja den Akku nicht quälen).</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvAuSXKfwwknGpc_nRSO50_ZQSK5G3M25sQZRip4dJtGpJk_8a09bef8lPeIDBUNf3ZUUp-LTtw3oY7HZVw_6YNOM5Agqna4MdWQpMCZOs-J4hyphenhyphenxrTbmnPQemsPabHH8Zeg-9egDcsHZCo/s1600/Setup_klein.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvAuSXKfwwknGpc_nRSO50_ZQSK5G3M25sQZRip4dJtGpJk_8a09bef8lPeIDBUNf3ZUUp-LTtw3oY7HZVw_6YNOM5Agqna4MdWQpMCZOs-J4hyphenhyphenxrTbmnPQemsPabHH8Zeg-9egDcsHZCo/s400/Setup_klein.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Das Multimeter hängt (via USB) an einem COM-Port des PCs und zeichnet die Messwerte auf. Das Messgerät ist auf 20A eingestellt. Ich habe einmal den Kurzschlussstrom am Fischertechnik Akku-Pack gemessen und einmal den Selbstbau (die Messungen mit den alternativen Bauteilen habe ich nicht aufgezeichnet)</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTo-UexJL7mhlOm9gVfosL57YEpU1JXvAUYZxpnpTPOY-yshfQUBaxGKZcROtFIisJFS1NAKPvAr2RnE-zTHEWFkemcZi0kWaXd2C_ZSeP4-_f3XUvLAK0HnbeyO7QrfAlrl1iQqespGVG/s1600/Kurzschluss-Strom.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTo-UexJL7mhlOm9gVfosL57YEpU1JXvAUYZxpnpTPOY-yshfQUBaxGKZcROtFIisJFS1NAKPvAr2RnE-zTHEWFkemcZi0kWaXd2C_ZSeP4-_f3XUvLAK0HnbeyO7QrfAlrl1iQqespGVG/s1600/Kurzschluss-Strom.PNG" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Der Selbstbau-Akku bietet einen vergleichbaren Schutz an. Nach 3-4 Sekunden riegelt die Schutzschaltung ab und der Stromfluss von mehren Ampere wird auf unter 500 mA begrenzt.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Gelegentlich werde ich die Zellen wohl einzeln Laden, was die Akkus länger leistungsfähig halten sollte, denn die Zellen sind nie gleich "stark". Das Ladegerät sollte sich mit einem Stück Kabel auch an den Selbstbau-Akku anklemmen lassen (ich hab den Abstand der Anschlüsse nicht exakt an den Abmessungen des Ladegerätes ausgerichtet)</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Übrigens:</b></div>
<div class="separator" style="clear: both; text-align: left;">
Das Multimeter, mit dem ich die Messreihen erstellt habe, stammt noch aus den frühen 90ern. Die Originalsoftware für DOS hätte ich sogar noch auf einer 5 1/4 Zoll Diskette, nur eben kein Laufwerk mehr zur Hand. Die serielle Schnittstelle des Multimeters liesse sich zwar sehr einfach auslesen (Im Handbuch ist etwas QBASIC Beispielcode), aber glücklicherweise gibt es noch passende Software im Netz, die einem die Arbeit abnimmt:</div>
<ul>
<li><a href="http://www.hw.cz/ethernet/charon_metex">Metex Contol Software</a> (<a href="http://fl.hw.cz/ethernet/charon_metex/metex_client.zip">client download</a>)</li>
<li><a href="http://www.uwe-sieber.de/mscope.html">MScope</a></li>
</ul>
<br />
<b>Links</b><br />
Innenleben des Originalakkupacks: <a href="http://www.ftcommunity.de/categories.php?cat_id=822">http://www.ftcommunity.de/categories.php?cat_id=822</a>Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com2tag:blogger.com,1999:blog-259154915718438244.post-62676723283065946452012-12-27T19:28:00.000+01:002013-01-13T19:11:14.649+01:00AMD FX-8150 undervoltingKürzlich habe ich einen meiner PCs aufgerüstet. Auf dem neuen ASRock 970 Extreme3 Motherboard kommt ein AMD FX-8150 zum Einsatz. Doch der Geräuschpegel des Prozessors bzw. seines Standardlüfters nervt.<br />
<div>
Eigentlich wollte ich schon fast einen besseren Lüfter kaufen, doch dann habe ich mit ein paar anderen Massnahmen Abhilfe geschaffen, die ich hier kurz zusammenfassen möchte:</div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">1. Undervolten (mit AmdMsrTweaker):</span></b></div>
<div>
Zum Overclocken hätte ich mir eher einen "kleineren" FX Prozessor gekauft, um dann mehr Leistung freizuschalten. Der 8150 ist momentan bereits das Flaggschiff der Reihe.</div>
<div>
Im Internet finden sich einige Berichte zum <a href="http://www.computerbase.de/artikel/prozessoren/2011/test-amd-bulldozer/21/">Undervolten</a>. Die CPU-Kernspannung sollte sich auf ca. <a href="http://www.tomshardware.de/FX-8150-bulldozer-ubertakten-undervolting-effizienz,testberichte-240915-10.html">1.11V bei x18 </a>absenken lassen. In meinem Fall läuft der Prozessor noch bei <b>1.1125V </b>bei x18 stabil (statt 1.375 V)</div>
<div>
<br /></div>
<div>
Zunächst das Tool <a href="http://extreme.pcgameshardware.de/overclocking-prozessoren/247603-amdmsrtweaker-anleitung.html">AmdMsrTweaker</a><b> </b>herunterladen, dann eine Batch-Datei anlegen, und so lange an den Einstellungen "tweaken", bis der Prozessor stabil im Niedervoltbereich läuft.</div>
<div>
<br /></div>
<div>
Originalwerte:</div>
<blockquote class="tr_bq">
<span style="background-color: #cfe2f3;">AmdMsrTweaker.exe turbo=0 APM=1 P6=7@0.9125 P5=10.5@1.025 P4=13.5@1.15 P3=16.5@1.3 P2=18@1.375 P1=19.5@1.4125 P0=21@1.4375</span></blockquote>
<div>
Bei mir sind es momentan die folgenden Werte stabil im Einsatz:</div>
<div>
<blockquote class="tr_bq">
<span style="background-color: white;">AmdMsrTweaker.exe turbo=0 APM=0 P6=<b>6@0.850</b> P5=10.5@0.925 P4=13.5@0.95 P3=16.5@1.075 P2=<b>18@1.1125 </b> P1=19.5@1.4125 P0=21@1.4375</span></blockquote>
</div>
<div>
[Das Turbo-Core Feature habe ich bereits im BIOS deaktiviert, somit sind P1 und P0 momentan nicht von Interesse. P2 läuft bei x18 mit 1.1125V. Den Idle-State habe ich von x7 auf x6 heruntergesetzt bei 0.850V (statt 0.9125V). Die Werte dazwischen für P3..P5 habe ich vorsichtig abgesenkt. Die Werte können bei jedem einzelnen Prozessor abweichen!]</div>
<div>
<br />
<b>Update: </b>Weil es doch noch alle paar Tage zu einen Absturz kam, hab ich doch noch mal systematisch mit prime95 ein paar Stabilitätstests gemacht und dann für P4..P2 die Spannung leicht erhöht. Bevor prime95 läuft, einfach in den Windows Power Options den Minimum und Maximum Processor State fix wählen: 40%/40%, 60%/60%, 75%/75%, 95%/95%, 100%/100% (für x6, x10,5, x13,5, x16,5 und x18)<br />
Meistens kracht es schon recht bald unter Volllast, ansonsten kann man die nächste Stufe testen.<br />
<blockquote class="tr_bq">
<span style="background-color: yellow;">AmdMsrTweaker.exe turbo=0 APM=1 P6=6@0.850 P5=10.5@0.925 <b>P4=13.5@0.9875 P3=16.5@1.0875 P2=18@1.1625</b> P1=19.5@1.4125 P0=21@1.4375</span></blockquote>
</div>
<div>
Die Stromaufnahme und damit auch die Temperaturentwicklung des Computers verbessert sich erfreulich durch diesen kleinen Kniff. Dies ist aber kein <a href="http://www.computerbase.de/artikel/prozessoren/2011/test-amd-bulldozer/21/">Prozessortest</a> (Google bemühen mit dem Stichwort "undervolting"). Daher habe ich mir die Werte nicht im Detail notiert. </div>
<div>
<br /></div>
<div>
Nachdem man <u>verlässliche</u> Werte gefunden hat, möchte man diese Einstellungen auch permanent machen, ohne jedes Mal von Hand das Script auszuführen. Einfacher Trick: Im Task Scheduler einen Task anlegen, der jeweils beim Systemstart bzw. beim Aufwachen aus einem Schlafzustand angewendet wird:</div>
<br />
Das Aufwach-Event abgreifen:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPw3zOwf3g2G5hMWVSyMeB9ijysJYUq5uFNwhTcP-lZwCoZ7sZ-A3qY0bwq-fJO5Ceabhq0tQX1amygJex67wzps72pw1OXHYrqpCcCn8Ok8CQR1vvwg6yCmYp2032dVBvXx6fJ_h-68td/s1600/Triggers.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPw3zOwf3g2G5hMWVSyMeB9ijysJYUq5uFNwhTcP-lZwCoZ7sZ-A3qY0bwq-fJO5Ceabhq0tQX1amygJex67wzps72pw1OXHYrqpCcCn8Ok8CQR1vvwg6yCmYp2032dVBvXx6fJ_h-68td/s1600/Triggers.png" /></a><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDKdvk344mJzoAKwykDJhX7aJlcWVKZOYjQsJC6iGmOFVxGdV4LD-5rRXoA0zdRS68p7Co6ybVYhRiRoQLv7U5u-t3VslTf9mB4gV-amWyrLtz3NfRSxAFaDkuBlAkbiy9Jyceygrz2eLn/s1600/Trigger_Sleep.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDKdvk344mJzoAKwykDJhX7aJlcWVKZOYjQsJC6iGmOFVxGdV4LD-5rRXoA0zdRS68p7Co6ybVYhRiRoQLv7U5u-t3VslTf9mB4gV-amWyrLtz3NfRSxAFaDkuBlAkbiy9Jyceygrz2eLn/s1600/Trigger_Sleep.png" /></a></div>
<div>
<br /></div>
<div>
und die Batch-Datei eintragen:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjdyfRpIJhL8wPDq5g2VjgM337nM_ejfCR70UilggHBDgNYbYm1fVStRiEaa65TvtPHugJD_ntEIUUYmzi7xnh0gg0ZNszVCGRC_3O6gKMP33t59nyig_SqLAGolvkRnjVz4fi67-IxhuT/s1600/Action.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjdyfRpIJhL8wPDq5g2VjgM337nM_ejfCR70UilggHBDgNYbYm1fVStRiEaa65TvtPHugJD_ntEIUUYmzi7xnh0gg0ZNszVCGRC_3O6gKMP33t59nyig_SqLAGolvkRnjVz4fi67-IxhuT/s1600/Action.png" /></a></div>
<div>
<br /></div>
<div>
<span style="color: #cc0000; font-size: large;"><b>FERTIG!</b></span></div>
<div>
<br /></div>
<div>
Hier noch einige Verfeinerungen:</div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">2. Lüfter drosseln:</span></b></div>
<div>
Im Normalbetrieb kann der Prozessor-Lüfter ruhig etwas langsamer drehen.</div>
<div>
Hierzu habe ich im BIOS (bzw. UEFI) das Tempo auf den Custom-Wert "20" gestellt, also noch unter dem "Level 1".</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIrM2Qg66X-zdlv9hmj68466Rkv4o16vIz5kDUaWLJbg4Eg7q6IonhJSHBuqvHKHqGzvtA7BWW6JHruXrfnD6yDcyr-HmvjZAvMps-CuYwvB_smndeDpkHDPvlDPa0vnXqQ58EPY6BcgK2/s1600/Bios_Luefter.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="111" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIrM2Qg66X-zdlv9hmj68466Rkv4o16vIz5kDUaWLJbg4Eg7q6IonhJSHBuqvHKHqGzvtA7BWW6JHruXrfnD6yDcyr-HmvjZAvMps-CuYwvB_smndeDpkHDPvlDPa0vnXqQ58EPY6BcgK2/s400/Bios_Luefter.JPG" width="400" /></a></div>
<div>
[Bei der Gelegenheit auch gleich den Gehäuse lüfter noch etwas angepasst. :-) ]</div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">3. Power Plan als Low-End Profil anlegen:</span></b></div>
<div>
Eigentlich kümmert sich Windows und auch AMD's Cool and Quiet darum, den Prozessor lastabhängig hoch- bzw. herunterzuschalten. Diese Automatik scheint mir aber in manchen Fällen etwas voreilig zu sein. </div>
<div>
Sinnvoll wäre es, bei z.B. 60% Last nach einiger Zeit in einen höheren Power-State zu schalten. </div>
<div>
Mein momentaner "Benchmark", das Spiel "Giana Sisters Twisted Dreams" ist gar nicht so resourcenhungrig, wie mir die Lüftergeräusche vermittelten. Bei ca. 30% Load sollte es auch eine niedrigere Taktung tun.</div>
<div>
<br /></div>
<div>
Es gäbe zwar Möglichkeiten, dieses Verhalten zu beeinflussen (Stichwort "custom Cool and Quiet"), jedoch wollte ich es nicht noch komplizierter machen und ein weiteres Tools bzw. einen Service bemühen.</div>
<div>
Die einfachere Lösung: Ich habe mir einen zusätzlichen Power-Plan definiert, der die Performance bei ca. 2.7 GHz abriegelt.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp0BjlbTgAdVYs5jAy_8ydhn7KcfvbOoCjAVexjMQbaPr9I1DvnB7_uXvWfFEltGQps8P8xVdlfqexR2TfXPXYsFL236QZr0o_ggJjyoC6RhohBninUZ9Ej7bn4ktFR_pVTO7WafnukaQe/s1600/PowerPlan.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp0BjlbTgAdVYs5jAy_8ydhn7KcfvbOoCjAVexjMQbaPr9I1DvnB7_uXvWfFEltGQps8P8xVdlfqexR2TfXPXYsFL236QZr0o_ggJjyoC6RhohBninUZ9Ej7bn4ktFR_pVTO7WafnukaQe/s1600/PowerPlan.png" /></a></div>
<div>
<br /></div>
<div>
Die Werte sind empirisch ermittelt. Insbesondere habe ich Core Temp unter Last beobachtet.</div>
<div>
Bei einem Multiplikator von 13.5 (neue Spannung: VID 0,95V) ist die Temperaturentwicklung moderat und sollte mal die Maximalgeschwindigkeit von 2.7 GHz auf allen 8 Cores nicht ausreichen, schalte ich einfach in den "Balanced" Plan um.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8_47IpEO62oTZN1AtdSV0-y2IJV_3VhHLbIlfQ0seFH69Fc9DjzrnqDAE_wfQjvIu8_1EDatm5MEJWiCZpnUGD24o2xMDrUIuyjwhKRtXsFle-LO_T3LANNR5uVOLqUG2lDGmadaaSMWa/s1600/CoreTemp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8_47IpEO62oTZN1AtdSV0-y2IJV_3VhHLbIlfQ0seFH69Fc9DjzrnqDAE_wfQjvIu8_1EDatm5MEJWiCZpnUGD24o2xMDrUIuyjwhKRtXsFle-LO_T3LANNR5uVOLqUG2lDGmadaaSMWa/s1600/CoreTemp.png" /></a></div>
<br />
<div>
<br /></div>
<div>
<b><span style="font-size: large;">AMD FX Hotfixes</span></b></div>
<div>
Es gibt bei Microsoft zwei Hotfixes für Windows 7, die das CPU Scheduling und das Core Parking für die AMD Bulldozer Reihe anpassen - Der Umgang mit 8 Kernen will gelernt sein:</div>
<div>
<br /></div>
<div>
<a href="http://support.microsoft.com/kb/2645594">KB2645594</a></div>
<div>
<a href="http://support.microsoft.com/kb/2646060">KB2646060 (V3)</a></div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">Notizen:</span></b></div>
<div>
Ein paar Stichworte/Tools in diesem Zusammenhang - einige dieser Tools sind leider nicht für das Setup geeignet bzw. waren nicht überzeugend.</div>
<div>
<u>System beobachten:</u> CPUZ, Core Temp, SpeedFan, ProcessExplorer, Speccy</div>
<div>
S</div>
<div>
<u>Prozessor/Mainboard Utilities:</u> <a href="http://www.pctreiber.net/2012/asrock-spezielle-axtu-version-mit-besserer-luftersteuerung.html">ASRock eXtreme Tuner (Spezialversion)</a>, AMD OverDrive, AMD PSCheck</div>
<div>
<u>Overclocking/Undervolting:</u> K10Stat, PhenomMsrTweaker, Fusion Tweaker [leider nicht für die FX Serie]</div>
<div>
</div>
<div>
Das AMD Overdrive bietet an, die Settings beim Neustart des Computers vorzunehmen. Dies gilt jedoch nicht beim Aufwachen aus dem Sleep-Modus. Daher war das Tool nicht zu gebrauchen. Ebenso das AXTU von ASRock - Cool and Quiet wird wohl abgestellt, wenn man an den Werten eine Änderung vornimmt.</div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-27501317406992716762012-12-21T03:20:00.000+01:002012-12-31T03:54:56.652+01:00Windows von seiner unflexibelsten SeiteEine Sache ist von Windows XP bis Windows 7 definitiv gleich geblieben: Windows reagiert sehr empfindlich auf wechselnde Hardware. Und ich meine damit nicht einmal die Reaktivierung oder den passenden HAL für ein Ein- bzw. Mehrkernsystem. Nein, eine kleine Änderung am Festplattencontroller macht eine Windows-Installation unbrauchbar.<br />
<br />
Ich will diesen <span style="background-color: yellow;">Tipp</span> daher hier aufführen, weil mir dieses Problem in drei Spielarten bislang begegnet ist:<br />
<ul>
<li>Herumspielen im BIOS, dabei nebenbei den Festplattencontroller von IDE auf AHCI gestellt (was eigentlich besser ist).</li>
<li>Aufrüstung eines Systems, bei dem ich ein Motherboard mit Intel-Chipsatz durch ein AMD Board ausgetauscht wurde</li>
<li>Man möchte eine alte Systemplatte anschliessen oder ein Backup einspielen, um etwas auszuprobieren. Multiboot ist out, daher möchte man die Platte nativ ("raw") in einer VM-Umgebung ausführen (kann selbst der kostenlose VMware Player). Hier gibt es das vorige Problem in der umgekehrten Richtung: die gängigen Virtualisierungslösungen emulieren einen Intel-Chipsatz bzw. einen bestimmten Festplattencontroller, der dann nicht dem entspricht, auf dem das System ursprünglich lief. </li>
</ul>
Windows versucht nun merhfach zu starten und fällt nach wenigen Sekunden zurück auf den BSOD, meistens erscheint vorher noch kurz das Windows-Logo. Bei Windows 7 bekommt man vielleicht sogar noch die Reparatur angeboten. Eine Selbstheilung versagt dabei leider kläglich nach meinen Erfahrungen, macht aber auch nichts kaputt.<br />
Dabei gibt es eigentlich gar kein Problem: Windows hat alle nötigen Treiber, nur werden sie beim Booten nicht berücksichtigt. Ein Problem, das sich ein Linux Enthusiast kaum vorstellen kann. - Daher habe ich hier etwas weiter ausgeholt. Zur Lösung müsste man die Windows-Registry in einem Offline-Editor so nachbearbeiten, dass die entsprechenden Treiber aktiviert werden.<br />
<br />
Es geht aber auch wesentlich einfacher und schneller.<br />
<br />
<b>Windows XP:</b><br />
Hier heisst mein Notfallsystem "<span style="background-color: yellow;">UltimateBootCD</span>" (<a href="http://www.ubcd4win.com/">http://www.ubcd4win.com/</a>) und enthält bereits im Menü einen Punkt (<span style="background-color: yellow;">Fix_hdc</span>), der ein entsprechendes Reparaturskript ausführt:<br />
<br />
<b>Windows 7:</b><br />
Man benötigt eine Windows PE Umgebung. Ich habe hierzu "<span style="background-color: yellow;">LSP</span>" auf einen USB Stick im Notfallset:<br />
Notfallwindows erstellen (USB Stick mit LSP) <a href="http://www.kare-net.de/LiveSystempro.html">http://www.kare-net.de/LiveSystempro.html</a><br />
<br />
In dieser Umgebung führt man dann ein Reparaturskript aus, "<span style="background-color: yellow;">Fix_7hdc.vbs</span>", das ich mal in diesem Forumseintrag gefunden habe: <a href="http://www.911cd.net/forums//index.php?showtopic=24245">http://www.911cd.net/forums//index.php?showtopic=24245</a> (<a href="http://www.911cd.net/forums//index.php?act=attach&type=post&id=1635">fix_7hdc.zip</a>)<br />
<br />
System geheilt!<br />
<br />
Diese Scripts machen letzlich nichts anderes, als die vorhandene Hardware zu scannen und die passenden Treiber zu reaktivieren.<br />
<br />
Der geneigte Leser kennt das Problem: Die Supportorganisation im Unternehmen schlägt eine Neuinstallation auch schon bei kleinen Lapalien vor. Privat und mit gutem Willen kommt man bis zum nächsten OS ganz ohne Neuinstallation aus, garantiert!<br />
<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-39550854801712269882012-12-08T03:57:00.000+01:002012-12-30T18:23:53.853+01:00Alternative Buchse für ft-Stecker zum AuflötenEs gibt in den Fischertechnik-Foren und auf Fan-Seiten einige Tipps zu alternativen Ersatzteilen. Leider habe ich bislang nichts brauchbares gefunden, um bei eigenen Projekten passende Steckverbinder direkt auf der Platine anzubringen.<br />
<br />
Per Zufall (bzw. beim Suchen) bin ich bei Conrad auf sogenannte "Aderendhülsen" gestossen.<br />
Die gibt es mit Plastikgragen (isoliert) oder eben ohne.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiorR3hJ8zbSHZTUK44_6FJZWKAUgBePHEDHKTR8TE7r00mDeYOTvQV8QH9ptJ6eT1yXzFbrHrPnMIYOv3n0lCXXl3U3gSbs7HR6yw9SOVvqIhesM6CA7aKqV609ust6SBIWAOwd96YRGH8/s1600/Zange_Huelsenbeutel.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiorR3hJ8zbSHZTUK44_6FJZWKAUgBePHEDHKTR8TE7r00mDeYOTvQV8QH9ptJ6eT1yXzFbrHrPnMIYOv3n0lCXXl3U3gSbs7HR6yw9SOVvqIhesM6CA7aKqV609ust6SBIWAOwd96YRGH8/s320/Zange_Huelsenbeutel.JPG" width="320" /></a></div>
<br />
<div style="text-align: center;">
<a href="http://www.conrad.de/ce/de/product/611888/Aderendhuelsen-ohne-Kunststoffkragen-DIN-462284-Silber-Vogt-Verbindungstechnik" style="background-color: white; font-family: Arial, sans-serif; line-height: 21px;">Aderendhülsen ohne Kunststoffkragen DIN 46228/4 Silber Vogt </a></div>
<br />
<div style="text-align: right;">
<span style="background-color: white; font-family: Arial, sans-serif; font-size: 11px; line-height: 13px; text-align: center;">100 Stück</span></div>
<span style="background-color: white; font-family: Arial, sans-serif; font-size: 11px; line-height: 13px; text-align: center;"></span><br />
<div style="text-align: right;">
<span style="background-color: white; font-family: Arial, sans-serif; font-size: 11px; line-height: 13px; text-align: center;">Querschnitt x Länge: 2,5 mm² x 8 mm</span></div>
<span style="background-color: white; font-family: Arial, sans-serif; font-size: 11px; line-height: 13px; text-align: center;">
</span><span style="color: red; font-family: Arial, sans-serif; font-size: 11px; line-height: 13px; text-align: center;"><div style="text-align: right;">
[Preis: ~ 2 Cent pro Stück]</div>
</span><br />
<div style="text-align: right;">
<br /></div>
Normalerweise werden damit Kabel, die aus einzelnen Adern bestehen, an den Enden zusammengequetscht. Der Querschnitt von 2,5 qmm ist eigentlich zu klein (rechnerisch 1,78mm Durchmesser). Ich vermute aber, dass noch etwas "Luft" zwischen den Adern mitberechnet wird. Denn der nächst grössere Querschnitt von 4 qmm (Durchschnitt ~2,26 mm) ist bereits so gross, dass der ft Stecker (mit 2,5mm Durchmesser angegeben) bereits zu viel Spiel hat.<br />
<br />
Die Hülsen mit 2,5 qmm Querschnitt lassen sich allerdings etwas dehnen. Hierzu wäre vermutlich eine Nietzange ideal. Ich habe mir mit einer alten Zange aus der Werkzeugkiste beholfen, wie sie oben abgebildet ist.<br />
Mit leichtem Druck und möglichst gerade jeweils eine Hülse gegen die Tischplatte drücken.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5BfTTo3EVpVK8W3S1AvcKMR8vx8agqiK4NqQ0MtkALpJj-NUTAgP055uCoLe-BUrgnceCCWrU1P6-5lmsOK7elZBVYk0mDTsJEt6AyiR-cpkETewMeN49Wy-peT5gbcD5upbzBMG_fOQC/s1600/ZangeHuelse.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5BfTTo3EVpVK8W3S1AvcKMR8vx8agqiK4NqQ0MtkALpJj-NUTAgP055uCoLe-BUrgnceCCWrU1P6-5lmsOK7elZBVYk0mDTsJEt6AyiR-cpkETewMeN49Wy-peT5gbcD5upbzBMG_fOQC/s320/ZangeHuelse.JPG" width="233" /></a></div>
Im Ergebnis sieht es dann so aus:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9UgbMvL-EUQOMNMlWlND329sVaGSYB3gEDfCDJqI_8fUJrELYeq_vg4ZqPjlWu83qTqEb9YovnKZGOwudGouyk6gxs6W7CNHZ7tsIEeL48i0Vksomv7WuZ0dC4ROuPBNxU9pdFMlQxBqt/s1600/Huelsen+Gross.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9UgbMvL-EUQOMNMlWlND329sVaGSYB3gEDfCDJqI_8fUJrELYeq_vg4ZqPjlWu83qTqEb9YovnKZGOwudGouyk6gxs6W7CNHZ7tsIEeL48i0Vksomv7WuZ0dC4ROuPBNxU9pdFMlQxBqt/s320/Huelsen+Gross.JPG" width="311" /></a></div>
Man erkennt in der Abbildung deutlich wie der Rand gedehnt ist und die Manschette durch den Druck umgebogen wurde.<br />
<br />
Hier ein erster Test auf einem Rest Lochrasterplatine:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkdqRkc8EeZcIB_mxPcsdUiC9o8SibJLi3SO0-U8ewf9UiPnvPRvqHqNu2M6weC__DtNxb-6DCUPk7AOwlU1KkHTj9-n-EjWfuRuI96h-QpeTgToHos8SgYdeUbvvaQL7K1JmEop-FQMmR/s1600/Testplatine2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkdqRkc8EeZcIB_mxPcsdUiC9o8SibJLi3SO0-U8ewf9UiPnvPRvqHqNu2M6weC__DtNxb-6DCUPk7AOwlU1KkHTj9-n-EjWfuRuI96h-QpeTgToHos8SgYdeUbvvaQL7K1JmEop-FQMmR/s320/Testplatine2.JPG" width="212" /></a></div>
Wenn man die Hülse zwischen 4 Lötaugen zentriert auflötet, hat sie bereits genügend Halt. Sonst könnte man bestimmt auch noch einen draht zusätzlich durch die Löcher fedeln. Scheint mir aber im Moment nicht nötig zu sein. Da mein erstes Arduino-Fischertechnik Interface mit den Lüsterklemmen eigentlich ganz gut aussieht, werde ich mir diese Lösung für kleine Projekte aufheben, bei denen ich die Schaltung ohnehin auf Lochraster aufbauen werde.<br />
<br />
<br />
<br />
<h1 class="headline_2" style="background-color: white; border: 0px; font-family: Verdana, 'Century Gothic', Univers, Arial, Helvetica, sans-serif; line-height: 1.25em; margin: 0.625em 0px 0.625em -0.08em; padding: 0px;">
<span style="font-size: large;">Alternativen:</span></h1>
<div>
<ul>
<li><span style="font-family: inherit;">Lüsterklemmen (siehe Arduino UNO-Posting)</span></li>
<li><a href="http://www.knobloch-gmbh.de/wbcdirect.php?pid=1008" style="background-color: white; font-family: inherit; line-height: 1.25em;">Steckerbuchsengehäuse 28-polig</a><span style="background-color: white; font-family: inherit; line-height: 1.25em;"> : Wurde früher bei den ft-Interfaces verwendet und über ein Flachbandkabel mit dem eigentlichen Interface verbunden.</span></li>
<li><a href="http://www.knobloch-gmbh.de/wbcdirect.php?pid=275" style="font-family: inherit;">Bundhülse</a><span style="font-family: inherit;"> : Das sind die <span style="background-color: yellow;">Buchsen, die im Fischertechnik Controller TX</span> verbaut sind. Allerdings müsste man dann jeweils 3mm Bohrungen auf der Platine vorsehen.</span></li>
</ul>
</div>
<br />
<div>
<br /></div>
<div>
<br /></div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-28573112774132490462012-12-01T12:24:00.000+01:002012-12-31T02:32:45.034+01:00Retro II - Die AnfängeHab in einer Kiste bei meinen Eltern nicht nur meinen alten Amiga wiederentdeckt, sondern auch ein paar meiner ältesten, noch existierenden Elektronik-Bastelarbeiten.<br />
<br />
Ein Interface zum Anschluss von C64 Peripherie (Floppy 1541 oder der alte Nadeldrucker) an den Amiga.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGhbQi70hvoWFMZXOmrnRZAt8kJPTv1jhNnyUAqBfLf7AyOLBIgOscE4esIJb5ObzcJlI5TxmHAEz6jk6XeETFL0kr7Xz8t5eVHkUz46d15zrBDGrdfth_UPgUOn_nnr470yM2CCey-2Jp/s1600/20121202_172650.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"> <img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGhbQi70hvoWFMZXOmrnRZAt8kJPTv1jhNnyUAqBfLf7AyOLBIgOscE4esIJb5ObzcJlI5TxmHAEz6jk6XeETFL0kr7Xz8t5eVHkUz46d15zrBDGrdfth_UPgUOn_nnr470yM2CCey-2Jp/s640/20121202_172650.jpg" /> </a> </div>
<div class="separator" style="clear: both; text-align: center;">
Und hier die Rückseite: Das wäre heute wohl ansprechender und kompakter :-)</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidrpBejIIcbFn-Q1AiGnS1pZA45O1H-BtsDfrkjSJwAROCIo4LGdrcV9nsWxquYUJ4ar362cFXhjezuBMTIHiQnKmR0M6WuFwGFDcFcdXoJRots3wQZMX45Te8TQinCN4B_cbCkMyNnhC3/s1600/20121202_172710.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"> <img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidrpBejIIcbFn-Q1AiGnS1pZA45O1H-BtsDfrkjSJwAROCIo4LGdrcV9nsWxquYUJ4ar362cFXhjezuBMTIHiQnKmR0M6WuFwGFDcFcdXoJRots3wQZMX45Te8TQinCN4B_cbCkMyNnhC3/s640/20121202_172710.jpg" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
Den Schaltplan und die Steuersoftware dazu gab es wohl in einem Computerheft der Zeit.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Eine Autofeuer-Schaltung, regelbar:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjrGIuEUkrVv5PMFNBY6VRwk3uz22PrBXIK4lhsh2eSN0FVVex4ieJTgYS02aPtrdzYEj-HA9e7Ba36OxlzcaobDUBSOuwu9rW82ewJtBhLcwgOCiocqN2bc5nrt9hrtncU2TDwRdCCRk/s1600/20121202_172621.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjrGIuEUkrVv5PMFNBY6VRwk3uz22PrBXIK4lhsh2eSN0FVVex4ieJTgYS02aPtrdzYEj-HA9e7Ba36OxlzcaobDUBSOuwu9rW82ewJtBhLcwgOCiocqN2bc5nrt9hrtncU2TDwRdCCRk/s640/20121202_172621.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
...erinnert mich heute irgendwie an "Zurück in die Zukunft III"</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Ach ja, und dann gab es auch damals schon Spiele für mehr als 2 Spieler gleichzeitig. Der dritte und vierte Joystick wurden einfach über den Parallelport angeschlossen. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOZ3G6FlnpAJmefkig5vr7f3SykGJkGvhwX9emyLPxUa6TZU48vTnL3fyE16BdYeHk9L3_FWnMU-AG4YUrdiRauGqpSojXwJKT8OE8WnbSi1b_6KPEuvLI5gpauwqp-FeyfVGeUZueU7tl/s1600/20121202_172728.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOZ3G6FlnpAJmefkig5vr7f3SykGJkGvhwX9emyLPxUa6TZU48vTnL3fyE16BdYeHk9L3_FWnMU-AG4YUrdiRauGqpSojXwJKT8OE8WnbSi1b_6KPEuvLI5gpauwqp-FeyfVGeUZueU7tl/s320/20121202_172728.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Die meisten Hersteller halten sich ja heute beim Zubehör an gängige Standards. Die meisten Hersteller, nun da gibt es einen... :-)</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-34860849800900361592012-11-22T23:10:00.000+01:002012-12-30T18:23:19.820+01:00Fischertechnik LinksammlungEs gibt bestimmt bessere Lösungen Links zu sammeln, aber hier mal eine kleine Leseliste mit interessanten Quellen:<br />
<br />
<a href="http://www.fischertechnik.de/">http://www.fischertechnik.de</a> : Die offizielle Seite des Herstellers. Fan-Club-Tag (siehe Info->Termine): Einmal jährlich kann man die Fertigung übrigens besichtigen - noch ein Vorteil, wenn Spielzeug nicht in Asien von Kindern für Kinder gefertigt wird.<br />
<br />
<a href="http://www.fischerfriendswoman.de/">http://www.fischerfriendswoman.de/</a> : Mein Lieblings-Gebrauchtteilehändler. Hier findet man auch "historische" Teile zu fairen Preisen. [liefert auch in die Schweiz zu guten Konditionen und abzüglich der MwST].<br />
<br />
<a href="http://www.knobloch-gmbh.de/">http://www.knobloch-gmbh.de/</a> : Der offizielle Einzelteilehändler (er baut wohl auch die Computing-Interfaces
für Fischertechnik)<br />
<br />
<a href="http://www.ftcommunity.de/downloads.php?kategorie=Hobbyb%FCcher" style="text-decoration: underline;">Die Hobbybücher der 70er Jahre als PDF</a> :<br />
<a href="http://www.ftcommunity.de/downloads.php?kategorie=Hobbyb%FCcher">http://www.ftcommunity.de/downloads.php?kategorie=Hobbyb%FCcher</a><br />
<br />
Das aktuelle Fan-Heft (<a href="http://www.ftcommunity.de/ftcomm.php?file=ftpedia">ft:pedia</a>) mit tollen Ideen und Tipps:<br />
<a href="http://www.ftcommunity.de/ftcomm.php?file=ftpedia">http://www.ftcommunity.de/ftcomm.php?file=ftpedia</a><br />
<br />
Historische Fanhefte: <a href="http://www.ericbouten.nl/english/clubmagazine.html">http://www.ericbouten.nl/english/clubmagazine.html</a><br />
[<b style="background-color: white; text-align: -webkit-auto;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">German magazines: </span></b><span style="background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: x-small; text-align: -webkit-auto;"><a href="http://www.ericbouten.nl/docs/de-1968.html" target="bottomFrame">1968</a>, <a href="http://www.ericbouten.nl/docs/de-1969.html" target="bottomFrame">1969</a>, <a href="http://www.ericbouten.nl/docs/de-1970.html" target="bottomFrame">1970</a>, <a href="http://www.ericbouten.nl/docs/de-1971.html" target="bottomFrame">1971</a>, <a href="http://www.ericbouten.nl/docs/de-1972.html" target="bottomFrame">1972</a>, <a href="http://www.ericbouten.nl/docs/de-1973.html" target="bottomFrame">1973</a>, <a href="http://www.ericbouten.nl/docs/de-1974.html" target="bottomFrame">1974</a>, <a href="http://www.ericbouten.nl/docs/de-1975.html" target="bottomFrame">1975</a>, <a href="http://www.ericbouten.nl/docs/de-1976.html" target="bottomFrame">1976</a>, <a href="http://www.ericbouten.nl/docs/de-1977.html" target="bottomFrame">1977</a>, <a href="http://www.ericbouten.nl/docs/de-1978.html" target="bottomFrame">1978</a> en <a href="http://www.ericbouten.nl/docs/de-1979.html" target="bottomFrame">1979</a>.</span>]<br />
<br />
Didaktisches Begleitheft zu den "Da Vinci Machines":<br />
<a href="http://www.fischertechnik.de/ResourceImage.aspx?raid=1720">http://www.fischertechnik.de/ResourceImage.aspx?raid=1720</a><br />
<br />
<br />
Noch ein paar selbsterklärende Links:<br />
<a href="http://www.ft-fanarchiv.de/">http://www.ft-fanarchiv.de/</a><br />
<a href="http://www.fischertechnik-museum.ch/html/museum.html">http://www.fischertechnik-museum.ch/html/museum.html</a><br />
<a href="http://www.ftcommunity.de/downloads.php">http://www.ftcommunity.de/downloads.php</a><br />
<a href="http://www.kinder-technik.de/fischertechnik/alternative-bauteile/uebersicht-alternative-bauteile-fur-fischertechnik.html">http://www.kinder-technik.de/fischertechnik/alternative-bauteile/uebersicht-alternative-bauteile-fur-fischertechnik.html</a><br />
<a href="http://www.youtube.com/user/fischertechnikTV">http://www.youtube.com/user/fischertechnikTV</a><br />
<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-28402229418689889332012-11-12T02:05:00.000+01:002012-12-30T18:23:39.315+01:00Industrieroboter, Arduino und ein GamecontrollerWie in einem früheren Post beschrieben, möchte ich Fischertechnik Modelle mit Arduino steuern. Der Hardware-Testaufbau besteht zunächst aus dem bereits beschriebenen, unmodifizierten Arduino UNO mit Motor-Shield und dem Dreiachs-Roboter aus dem Fischertechnik "Industry Robots II"-Kasten.<br />
<br />
Als erstes Etappenziel wollte ich den Roboter nicht autonom programmieren (im Gegensatz zu einem "Teach-In" Roboter, bei dem man einen Ablauf aus X-Y-Z Koordinaten speichert, die dann später vom Dreiachs-Roboter beliebig oft abgespult werden), sondern den Roboter mit einem <a href="http://www.logitech.com/de-ch/product/gamepad-f310">Gamepad</a> ansteuern [Eigentlich ein XBox Gamecontroller (DirectInput), aber Controller ist in diesem Zusammenhang mehrdeutig.].<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihYxjVHGR4d20BWe1ZcHjvPxvyS3DlvuBe2JpRMSHyx_y2gHZJESOnFz-pzth3Fx640Uku5idfztjvkT2dzt4EyyXrCOp6xkrSDmQ8lNtX7W5IxhVPdLcJqyEd1PlVd5T3x17G_kILMUoO/s1600/InstustryRobot+II_best.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihYxjVHGR4d20BWe1ZcHjvPxvyS3DlvuBe2JpRMSHyx_y2gHZJESOnFz-pzth3Fx640Uku5idfztjvkT2dzt4EyyXrCOp6xkrSDmQ8lNtX7W5IxhVPdLcJqyEd1PlVd5T3x17G_kILMUoO/s400/InstustryRobot+II_best.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Die Lösung entspricht einer Client-Server Lösung:<br />
<br />
<ol>
<li>Das Gamepad wird an den PC angeschlossen. Das GUI läuft auf dem PC.</li>
<li>Der PC kommuniziert über ein serielles Protokoll (USB, RS232, Bluetooth) mit der Mikrocontroller-Hardware.</li>
<li>Die Mikrocontroller-Hardware (Arduino) steuert entsprechend die Motorentreiber-Bausteine und Ausgänge an.</li>
</ol>
<u><b>Software-Bausteine (Arduino-Seitig):</b></u><br />
<ul>
<li><a href="https://github.com/adafruit/Adafruit-Motor-Shield-library">Motor Shield Library</a></li>
<li><a href="http://forums.trossenrobotics.com/tutorials/how-to-diy-128/complete-control-of-an-arduino-via-serial-3300/">Protokoll</a> (Idee), um dem Arduino via serielle Schnittstelle Steuerbefehle für die Motoren und zum Auslesen der Eingänge zu senden.</li>
<li><a href="http://code.google.com/p/arduino-pinchangeint/">Interrupt-Library</a> (pinchangeint) für beliebige Pins, um später die Counter zu realisieren.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAs-gONjsj3TzaUk4zKaUxNJxuGBdC_dmhlH37-wJjK8FtdMUMWNQgi7hgEHacMj99Ckwn_vPccreoEZM_rs6qCi-NyGDvxfC3G14945oVRyhjteiktu9vo-YBcqkcZ3qNnKXp-xlcvook/s1600/Arduino_MotorController.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAs-gONjsj3TzaUk4zKaUxNJxuGBdC_dmhlH37-wJjK8FtdMUMWNQgi7hgEHacMj99Ckwn_vPccreoEZM_rs6qCi-NyGDvxfC3G14945oVRyhjteiktu9vo-YBcqkcZ3qNnKXp-xlcvook/s1600/Arduino_MotorController.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<u><b>Das Protokoll:</b></u><br />
Das Protokoll selbst ist extrem einfach gehalten.<br />
Ein Befehl besteht aus einem Zeichen Befehlswort, plus einer Nutzlast und ggf. noch einem "/" als Ende der Nutzlast.<br />
Jeder Befehl erwartet eine Antwort. Dies erleichtert das Synchronisieren. Der Arduino hat nur einen<br />
sehr kleinen Send/Receive-Buffer für die serielle Kommunikation. Aus diesem Grunde ist das Protokoll auch minimalistisch (wenig geschwätzig) gehalten. Aber gerade so, dass man zum Debuggen die Befehle auch von Hand in ein Terminal eingeben kann, um den Client zu simulieren.<br />
<br />
<b>Beispiele:</b><br />
<b>3</b><span style="color: blue;">1</span><b>1</b><span style="color: blue;">180</span>/ -> Motor Kommando (3), Motor 1, Forward, Speed <180>, sprich: Den Motor 1 in Forwärtsrichtung bewegen (Tempo 180).<br />
<br />
2<b>1</b>17/ -> Aktiviert einen Zähler auf Pin 17.<br />
2<b>2</b>17/ -> Auslesen des Zählers auf Pin 17.<br />
usw.<br />
<br />
<u>Spezifikation (kann ändern!):</u><br />
<br />
// 1 = Read:<br />
// 1 = digital: + "pin number"<br />
// 2 = analog: + "pin number"<br />
//<br />
// 2 = Counter Operations:<br />
// 1 = Enable Counter: + "pin number" + "/"<br />
// 2 = Read Counter: + "pin number" + "/"<br />
// 3 = Reset Counter: + "pin number" + "/"<br />
// 4 = Disable Counter: + "pin number" + "/"<br />
//<br />
// 3 = DC Motor (Motor Shield):<br />
// "motor number" <br />
// 1 = Forward <speed> [example: 3m1xxx]<br />
// 2 = Backward <speed> [example: 3m2xxx]<br />
// 3 = Release / Stop<br />
// 4 = SetSpeed<br />
// "speed"<br />
<br />
<u><span style="font-size: large;">PC-Seitige Bausteine:</span></u><br />
<ul>
<li><a href="http://www.microsoft.com/visualstudio/deu/products/visual-studio-express-for-windows-desktop">Visual Studio Express 2012</a>: Als Entwicklungsumgebung für den C# code.</li>
<li><a href="http://slimdx.org/download.php">SlimDX Framework</a> : Eine schlanke Lösung, einen Controller (DirectInput / XInput) abzufragen, inklusive Beispielcode, den ich für meine Zwecke angepasst habe. [Sonst muss man zunächst riesige SDKs installieren]</li>
<li>Selbstgeschriebener Code für das Arduino-Protokoll</li>
<li>Fischertechnik-Bibliothek für .NET (Ich wollte Interface-agnostisch vorgehen: Wie man im Screenshot sehen kann, lässt sich der Wrapper für die Bibliothek auswählen, je nachdem, ob man einen TX Controller oder das Arduino Interface ansteuern möchte.</li>
</ul>
Hier ein Screenshot des aktuellen GUIs.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUcrRKfzpIu4DJgO8ezaeadzBGofltUnEBSaxX8lIG65IIZfXMRlYCcZ7ob2PQDClbGvd3bPNl2ooceejP7kDRBccVOAQyCAZZg7N2GMty1dZ0l0OB3YZenjeAdKTWrluYsAIonTseZ6XD/s1600/XBox360Controls.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUcrRKfzpIu4DJgO8ezaeadzBGofltUnEBSaxX8lIG65IIZfXMRlYCcZ7ob2PQDClbGvd3bPNl2ooceejP7kDRBccVOAQyCAZZg7N2GMty1dZ0l0OB3YZenjeAdKTWrluYsAIonTseZ6XD/s1600/XBox360Controls.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<b><u>Die Counter:</u></b><br />
<div>
Die Idee ist, hier Impulse, also Zustandsänderungen am Eingang zählen zu können, wie sie ein Encoder oder die Taster an den Achsen des Roboters liefern (Die Achsen haben kleine Impulsräder).<br />
<div>
Das Problem dabei ist, dass Signale, die von einem Taster kommen, meist nicht entprellt sind. Hier muss man noch etwas tricksen (de-bouncing!). Sonst zählen wir viele kleine Spitzen, während der Schalter schliesst.</div>
<div>
<br />
<div>
<div>
Das Ganze ist noch unvollendet. - Nur eines von vielen Hobby-Projekten.<br />
Was noch zu tun wäre: Ein echtes Teach-In Programm: Über die Counter sollte die Position des Roboters ermittelt werden. Die Strecke lässt sich dann später speichern und abfahren. Dies ist dann auch ohne Gamepad möglich.<br />
<br />
Den Code werde ich dann nach Fertigstellung komplett posten. Ansonsten gibt es aber auch Code bei anderen ähnlichen Projekten. Vielleicht ohne DirectInput/XInput oder nicht .NET, aber viel Spass beim Basteln :-)<br />
<br />
<b>Ähnliche Bastelarbeiten im Netz (nur eine Auswahl):</b><br />
Fischertechnik per Gamepad/Joystick steuern (<a href="http://www.youtube.com/watch?v=RkvMvhaZ9zI">hier</a>, <a href="http://www.fischertechnik.de/home/Microsoft-Robotics-Studio.aspx/usetemplate-2_column_no_pano/">hier</a> und <a href="http://arduino.cc/forum/index.php?topic=124822.0">hier</a>)<br />
<br />
Update: Hier ist noch eines, das vielversprechend aussieht: <a href="http://www.mathias-wilhelm.de/arduino/projects/arduino-control/">http://www.mathias-wilhelm.de/arduino/projects/arduino-control/</a><br />
<br />
<b>Ausblick</b><br />
<br />
Wie oben angedeutet, hat die Sache noch mehr Potential: Ein fahrendes Robotermodell könnte via Bluetooth gesteuert werden. Da müsste ich dann die Ansteuerung der Fischertechnik-Encodermotoren genauer ansehen. Weiterhin habe ich ein paar Ultraschall-Distanzsensoren (HC-SR04), der ggf. auch mit dem TX Controller zusammen funktioniert (für den Arduino gibt es Beispielcode im Netz).<br />
Und noch ein paar andere Ideen. Mehr dazu später.<br />
<div>
<br /></div>
</div>
</div>
</div>
</div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com2tag:blogger.com,1999:blog-259154915718438244.post-52195444698851957322012-11-03T22:37:00.000+01:002012-12-30T18:24:18.674+01:00Arduino UNO an Fischertechnik anpassenWie ist das mit der elektrischen Eisenbahn? Man(n) kauft sie für die Kinder, aber am Ende spielt man doch lieber selbst damit.<br />
Ähnlich verhält es sich wohl mit <a href="http://www.fischertechnik.de/">Fischertechnik</a> auch. In meiner Jugend hatte ich ein paar Kästen. Die frühen Computing-Interfaces für den C64 waren aber nicht erschwinglich, dennoch fand ich sie interessant. Um die Geschichte kurz zu machen: Ich habe mittlerweile die aktuelle Fischertechnik Computing Reihe im Hause, aber leider viel zu wenig Zeit, damit etwas zu machen.<br />
<br />
Meine Sammlung aus Jugendtagen habe ich um folgende Baukästen der Computing-Serie ergänzt.<br />
<ul>
<li><a href="http://www.fischertechnik.de/desktopdefault.aspx/tabid-21/39_read-34/usetemplate-2_column_pano/">ROBO TX Controller</a></li>
<li><a href="http://www.fischertechnik.de/desktopdefault.aspx/tabid-21/39_read-36/usetemplate-2_column_pano/">ROBO TX Training Lab</a></li>
<li>Industry Robots II</li>
</ul>
<br />
(weitere werden nun nicht verraten).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPw8R1Hh6CBUIAnwjyNbopQcQ_fX0T2gAdU68FSEw9nHx5ehbOOPSvayiLnrkJhAaHaLLFkDQMv57s7d7aEcZD3-CK5zP55n8sgt69dVPekfl20sdVECJoQC1KIGk19415AOTn7ho8dHL7/s1600/ControllerTX.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPw8R1Hh6CBUIAnwjyNbopQcQ_fX0T2gAdU68FSEw9nHx5ehbOOPSvayiLnrkJhAaHaLLFkDQMv57s7d7aEcZD3-CK5zP55n8sgt69dVPekfl20sdVECJoQC1KIGk19415AOTn7ho8dHL7/s320/ControllerTX.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Bild des aktuellen ROBO TX Controllers</div>
<br />
Der ROBO TX Controller ist ein super Gerät zu einem fairen Preis, wenn man bedenkt, was dieses Gerät alles kann. Alle Ein- und Ausgänge sind gegen Kurzschluss und Überspannung gesichert (sagt der Hersteller. Durchprobiert habe ich das noch nicht). Die Ausgänge können 9V Motoren ansteuern, die 8 Eingänge können sowohl digital als auch analog beschaltet werden. Es gibt 4 extra Zählereingänge. Der TX verfügt über ein Display, Bluetooth und auch eine USB-Schnittstelle. Weiterhin kann der Controller Programme autonom ausführen, die zuvor in der graphischen Programmierumgebung erstellt wurden oder im Online-Betrieb über eine <a href="http://www.ftcommunity.de/ftComputingFinis/fishdlls.htm">beliebige Programmiersprache</a> vom PC aus kontrolliert werden.<br />
<br />
<br />
<b>"Commodity"</b><br />
<b><br /></b>
Andererseits gibt es seit einiger Zeit im Internet ein Embedded-Hardware-Projekt namens "<a href="http://www.arduino.cc/">Arduino</a>". Die Hardware ist modular aufgebaut (aufsteckbare "Shields"), ebenso die Programme (Libraries und "Sketches").<br />
Die C/C++ Progammierumgebung ist einfach genug, damit auch Anfänger und Interaktionskünstler ihre Programme schnell auf das Gerät bringen können. Vor allem besteht ein <a href="http://oomlout.com/blog/2009/04/breadboard_based_arduino_compa_1.html">minimaler Arduino</a> im Wesentlichem aus dem Mikrocontroller. Die Community ist gross, so findet man viele Anregungen und Bibliotheken im Netz.<br />
<br />
Ich habe mich zunächst für zwei sehr gängige Komponenten entschieden:<br />
<br />
<ul>
<li><a href="http://arduino.cc/en/Main/ArduinoBoardUno">Arduino UNO R3</a> (mit gesockeltem ATmega 328 - sicher ist sicher)</li>
<li><a href="http://www.ladyada.net/make/mshield/">Motor Shield</a> für vier DC Motoren </li>
</ul>
<br />
Als spätere Erweiterungen habe ich noch etwas Zubehör bestellt: ein Bluetooth Modul, Ultraschallsensoren, USB-Seriell-Wandler und einige Komponenten zum Selberbau kleiner ATmega / ATtiny Schaltungen.<br />
<br />
<br />
<b>Die Hardware-Seite</b><br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Das Motor Shield ist schnell auf das Arduino Board gesteckt. Aber es bleiben 2 Probleme:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ol>
<li>Gehäuse für den Controller bzw. Befestigung am Fischertechnik-Modell</li>
<li>Verkabelung</li>
</ol>
<div>
Zum ersten Punkt: Fischertechnik ist ein Konstruktionsspielzeug. Ein Gehäuse lässt sich also notfalls aus den Steinen (als Rahmen) und Platten zusammenstellen.</div>
<div>
<br /></div>
<div class="" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Mz9IPSxL-BHo0M0BM0jNRqPTa3cHAn-T0GlESs6RyAVoEqD3xLY-jkVLSjhyHyAnMhBSFs917kIm3cYfl5RJKpR5mTN67BLkn7w0o5kZfRt9dpnzqx49WLCIHed0xDT8A7MwdE6s35R1/s1600/31002+Grundplatte+90x90x5,5+rot.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><img border="0" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Mz9IPSxL-BHo0M0BM0jNRqPTa3cHAn-T0GlESs6RyAVoEqD3xLY-jkVLSjhyHyAnMhBSFs917kIm3cYfl5RJKpR5mTN67BLkn7w0o5kZfRt9dpnzqx49WLCIHed0xDT8A7MwdE6s35R1/s200/31002+Grundplatte+90x90x5,5+rot.jpg" width="200" /></a><span style="text-align: left;">Ich habe mich letztlich dafür entschieden, eine rote Grundplatte 9cm x 9cm zu verwenden. </span><span style="text-align: left;">Mit etwas Heisskleber unterhalb der vier Bohrungen des Arduino Boards lässt sich der Controller mittig auf der Oberseite der Grundplatte befestigen. </span><span style="text-align: left;">Die Unterseite bleibt frei, um mit weiteren Steinen verbunden zu werden.</span></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Verkabelung: Wie man beim original Fischertechnik-Controller erkennen kann, bedeuten viele Eingänge und Ausgänge auch, dass man Platz für viele der kleinen Fischertechnik Mini-Stecker schaffen muss. Jeder Ein- und Ausgang wird prinzipiell über ein Steckerpaar verbunden.<br />
Beim Arduino <i>mit</i> Motorshield haben wir 4 Ausgänge für DC-Motoren und 8 Eingänge ohne Modifikationen zur Verfügung [offizielle Bezeichnungen: A0 - A5,; D9, D10 (über die ungenutzten Servo-Ausgänge) Pin 2 wäre noch frei, Pin 13 ungenutzt, aber schwerer zugänglich]<br />
<br />
Wir benötigen also Anschlüsse für 8 Stecker (Motorenausgänge) und 12 bzw. 16 Stecker (6 bzw. 8 Eingänge).<br />
<br />
Die billigsten Lüsterklemmen erwiesen sich hier als ideal:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqjZYJc9RSwQgCVkYRpuRwWw31ulpe_4BY24EHs4RueXJuSiRNQRfDPhjNUGeOWkOHb5cEWnRUK90VbhI5gZBFVEjseKj0jc5ak9tX_3X6SX3kW8T44BvN8tiyUdyAS0f-FLiMel8t7ZLp/s1600/Schraubzwingen_Steckerleiste.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqjZYJc9RSwQgCVkYRpuRwWw31ulpe_4BY24EHs4RueXJuSiRNQRfDPhjNUGeOWkOHb5cEWnRUK90VbhI5gZBFVEjseKj0jc5ak9tX_3X6SX3kW8T44BvN8tiyUdyAS0f-FLiMel8t7ZLp/s1600/Schraubzwingen_Steckerleiste.JPG" /></a></div>
<div class="" style="clear: both; text-align: left;">
Wie man auf dem Bild erkennen kann, habe ich unten mit einem Cutter jeweils ein Stückchen Plastik entfernt, damit die ft-Ministecker besser passen. Die Schrauben brauchen nur ganz leicht angezogen werden. Ebenso sieht man, wie diese Klemmen wiederum mit Heisskleber wunderbar auf der Grundplatte befestigt werden können.</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Im folgenden Bild sieht man die Klemmen: Links und oben befinden sich die Eingänge, Rechts sind die Motorenausgänge:</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRM-t9rxgJATGwcC7Wr4ZXTESQ0UCgdYMA9PFh8IWQbsL5Kizuw4YCR7Hu7iNnG91ky230IWu4coAV1XfIW7jrGb4gCuI-StrCMd0TWmTP6EF867RCxsuqHDOcMIxCf5G1gsgZZeZ985eu/s1600/ArduinoFT_4.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRM-t9rxgJATGwcC7Wr4ZXTESQ0UCgdYMA9PFh8IWQbsL5Kizuw4YCR7Hu7iNnG91ky230IWu4coAV1XfIW7jrGb4gCuI-StrCMd0TWmTP6EF867RCxsuqHDOcMIxCf5G1gsgZZeZ985eu/s1600/ArduinoFT_4.JPG" /></a></div>
<div class="" style="clear: both; text-align: left;">
Die Motorausgänge werden von den kleinen blauen Klemmen zu den weissen "Ports" geführt. Ich hätte auch kürzere Leitungen nehmen können. Zugegeben, die Befestigung auf der Grundplatte war nicht die erste Überlegung.</div>
<div class="" style="clear: both; text-align: left;">
Auf dem Motor Shield befindet sich ein Block aus 3x6 Pfostenleisten für die Ausgänge A0..A6 (plus jeweils GND und +5V). Ein Stück eines alten IDE-Kabels passt hier, um die 6 Ausgänge und Masseleitungen an die Anschlussklemmen zu führen.</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Was man am Bild noch deutlich sieht: Es handelt sich in der momentanen Fassung eher um Erwachsenenspielzeug:</div>
<div class="" style="clear: both; text-align: left;">
</div>
<ul>
<li>Die Bauteile liegen offen und die Ein- und Ausgänge sind nicht wirklich gesichert gegen Verpolung, Überlast, etc. Ersteres lässt sich durch den Bau einer Abdeckung aus Steinen lösen. Aber momentan finde ich es so ganz schön :-)</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMpX_GcN4f0lDL2q8Q1BSSQtTfJncqwFViP8PffZ426mBubaWxzv4mXjaYEnYatKXCXhsap-T6a5ug1743rWIQgbQDd30OeAOmZJXcQFRziFbyAsZQ7R_wmcZPNxIPzgbB6HoXhMm-9Sbl/s1600/ArduinoFTInterface.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMpX_GcN4f0lDL2q8Q1BSSQtTfJncqwFViP8PffZ426mBubaWxzv4mXjaYEnYatKXCXhsap-T6a5ug1743rWIQgbQDd30OeAOmZJXcQFRziFbyAsZQ7R_wmcZPNxIPzgbB6HoXhMm-9Sbl/s1600/ArduinoFTInterface.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Wie man weiterhin sieht, erfolgt die 9V Stromversorgung über ein Steckernetzteil. Ein Adapter auf den Fischertechnik-Akku lässt sich aber leicht herstellen.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-size: large;">Links</span></b></div>
<div class="separator" style="clear: both; text-align: left;">
Innenleben des Original Fischertechnik-TX Controller: <a href="http://stefanbrunner.com/fischertechnik-robo-tx">hier</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<b>Nettes Projekt...</b><br />
Mittlerweile habe ich gesehen, dass Dirk Grebe eine ähnliche Idee verfolgte und einen minimalen Arduino (inkl. Treiberbaustein für 2 Motoren) in ein Fischertechnik-Batteriegehäuse eingebaut hat:<br />
<div>
<a href="http://www.ftcommunity.de/categories.php?cat_id=2677">Arduino controller mini</a> (<a href="http://www.ftcommunity.de/categories.php?cat_id=2677">http://www.ftcommunity.de/categories.php?cat_id=2677</a>)</div>
<div>
<br />
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com2tag:blogger.com,1999:blog-259154915718438244.post-6288681235740722252012-09-15T19:09:00.000+02:002013-01-07T21:32:41.196+01:00KPDFViewer - alternativer PDF Viewer für den Kindle 3<div>
Jailbreaken oder Rooten? Auch bei anderen Geräten kann man als Enthusiast noch etwas mehr aus seinen Gadgets herausholen.</div>
<div>
<br /></div>
<div>
Der Kindle 3 ist ein wunderbarer eBook Leser. Vor allem in der Sonne ist er eine gute Alternative bzw. Ergänzung zum Tablet-PC dank E-Ink Display. Ich kann keine Statistik bemühen, aber ich nehme mal an, dass er auch weniger oft geklaut wird wie ein Tablet. Obendrein spielt er auch noch Musik ab, hat einen minimalen Browser (z.B. für Safaribooks Online nützlich) und zeigt die Uhrzeit :-)</div>
<div>
Kurzum: Alles, was man im Sommerurlaub neben dem Liegestuhl braucht neben einem kühlen Bier :-)</div>
<div>
<br /></div>
<div>
Alles... nun, der eingebaute PDF Viewer ist langsam und unflexibel. Insbesondere bei einem so kleinen Bildschirm würde man gerne dynamisch in die Seiten zoomen können. Am Besten spaltenweise oder unter Ausblendung der Seitenränder.</div>
<div>
<br /></div>
<div>
Mittlerweile gibt eine entsprechende Lösung zum Nachrüsten: <a href="https://github.com/hwhw/kindlepdfviewer/#readme">KPDFViewer</a>!</div>
<div>
Neben PDF stellt er auch noch weitere Formate dar (z.B. ePub). Und vor allem lässt sich die Ausgabe an den Bildschirm anpassen. Die Einstellungen und die aktuelle Seite merkt sich der Viewer. Auch der eingebaute Filemanager bietet viele Extras (bezogen auf die Bordmittel des Kindle!).</div>
<div>
<br /></div>
<div>
Zur Installation: Als Voraussetzung benötigt man einen Launcher. Hier bietet sich "<a href="http://anoved.net/2012/02/custom-kindle-screensaver-images-with-kite/">Kite</a>" an.</div>
<div>
Als Nebeneffekt kann man damit auch eigene Bilder im Format 600x800 als Screensaver hinterlegen.</div>
<div>
<br /></div>
<div>
Zunächst wird "Kite" dem Kindle als Firmware-Upgrade untergeschoben: Die Datei "update_kite_k3w-3.2.1_install.bin" (abhängig vom Modell) wird in den Hauptordner des Kindle kopiert. Danach muss man aus dem Menü die Aktualisierung anstossen. Nach erfolgreicher Installation das Script einspielen, das den Kindle-eigenen Ordner für Screenshots zugänglich macht (siehe <a href="http://anoved.net/2012/02/custom-kindle-screensaver-images-with-kite/">http://anoved.net/2012/02/custom-kindle-screensaver-images-with-kite/</a>). Um genau zu sein: Der Ordner mit den aktuellen Bildern wird in den via USB erreichbaren Bereich des Kindle kopiert und im Hintergrund so verlinkt, das Kindle 3 künftig diese Bilder verwendet.</div>
<div>
<br /></div>
<div>
Das Resultat:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilRw6FwK5brwYlKsiYd3E97OKJ5i65P7XwRPjd8kqawkiEaUHjaW2f-2qteVFiZdYI-eCLho_nvXiewSY3VcJYGzLtC3TrWPOOZJOnPrYg1kVkBJOkADe1fc66UkcCo9uRP79jwdOhNFbH/s1600/JoschiScreenKindle3_klein.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilRw6FwK5brwYlKsiYd3E97OKJ5i65P7XwRPjd8kqawkiEaUHjaW2f-2qteVFiZdYI-eCLho_nvXiewSY3VcJYGzLtC3TrWPOOZJOnPrYg1kVkBJOkADe1fc66UkcCo9uRP79jwdOhNFbH/s320/JoschiScreenKindle3_klein.jpg" width="209" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Eigenes Screensaver-Bild. Den Balken "Slide and release" habe ich in die Bilddatei eingefügt, damit es schön einheitlich aussieht.</div>
<br />
Danach muss man den Code bei GitHub herunterladen und das Zip in den richtigen Ordner entpacken.<br />
Bei GitHub findet man auch zwei sehr aktive Branches, die oft noch ein paar Extras mehr haben bzw. einige Fehler bereits bereinigt haben:<br />
<br />
<ul>
<li>Versionen von "hwhw": <a href="https://github.com/hwhw/kindlepdfviewer/downloads">https://github.com/hwhw/kindlepdfviewer/downloads</a></li>
<li>Versionen von "dpavlin": <a href="https://github.com/dpavlin/kindlepdfviewer/downloads">https://github.com/dpavlin/kindlepdfviewer/downloads</a></li>
<li>Versionen von "tigran123": <a href="https://github.com/tigran123/kindlepdfviewer/downloads">https://github.com/tigran123/kindlepdfviewer/downloads</a></li>
</ul>
<br />
<br />
Hier noch ein paar Bilder:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZQQNdJNl3XEubzIOBAueeBnrjueLpUw28pG3RamCC7cyetPJg5sKZmgzRuHTczBJ0VT8a4xmfEirJrlx4gsAJNyarHPfZAAErYwIWax0aikWPotmkawCyLG0fNbGSBEvMDCevm3S6UIeS/s1600/KPDFViewer+(1).JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZQQNdJNl3XEubzIOBAueeBnrjueLpUw28pG3RamCC7cyetPJg5sKZmgzRuHTczBJ0VT8a4xmfEirJrlx4gsAJNyarHPfZAAErYwIWax0aikWPotmkawCyLG0fNbGSBEvMDCevm3S6UIeS/s320/KPDFViewer+(1).JPG" width="228" /></a></div>
Man beachte die Status-Balken oben und unten, die man einblenden kann: Datum, Uhrzeit, freier Speicher, offenes Dokument und Position im Dokument.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWodAdvyF9idsC4IZUx0r_Vji5AkoezibJhPuAWqU_ZuPSnzJT0V3aQWJejX3G_0eKbauLtvqsNW-9H3HC-vH7foxjY3nhbFBEN6pj27LBjKPtFMjnfzhnnyS-NYrsKn1xyosOhPwb90kd/s1600/KPDFViewer+(2).JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWodAdvyF9idsC4IZUx0r_Vji5AkoezibJhPuAWqU_ZuPSnzJT0V3aQWJejX3G_0eKbauLtvqsNW-9H3HC-vH7foxjY3nhbFBEN6pj27LBjKPtFMjnfzhnnyS-NYrsKn1xyosOhPwb90kd/s320/KPDFViewer+(2).JPG" width="232" /></a></div>
Manuelles Zuschneiden der Seiten (rechts unten): Über die Cursor-Tasten lassen sich in diesem Modus die Seitenbegrenzungen abändern. Die Anzeige lässt sich danach auf die eingestellten Werte zoomen.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-LS7VtqkOUKFPgTDEsb9Id-LTat0BO5ebQuT-emNVHME4XBrDA9dCGDRW62LvwX9tMmuRdWl2VYiPnxcRZ3LNhE6GJcoTvtM5AQH6YZMRejVgCwUbJBD2Vd3W9oONZGvZrBUpIhQ5JAZP/s1600/KPDFViewer+(3).JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-LS7VtqkOUKFPgTDEsb9Id-LTat0BO5ebQuT-emNVHME4XBrDA9dCGDRW62LvwX9tMmuRdWl2VYiPnxcRZ3LNhE6GJcoTvtM5AQH6YZMRejVgCwUbJBD2Vd3W9oONZGvZrBUpIhQ5JAZP/s320/KPDFViewer+(3).JPG" width="229" /></a></div>
<br />
Leider ist auch dieses Tool nicht sehr umfangreich dokumentiert. Aber man muss nicht extra den Code lesen. Einfach "h" wählen und man bekommt 3 Seiten Hilfedialog mit den Tastenkombinationen der vielen Extras (es lohnt sich auch nach einem Update mal zu schauen, was es Neues gibt im Filemanager und im Viewer).<br />
<br />
<b>Probleme bei der Installation?</b><br />
Zur Kontrolle ist hier noch die Ordnerstruktur, wie sie auf dem Kindle zu finden sein sollte, wenn man ihn via USB an den Computer anschliesst:<br />
<br />
<br />
<br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">documents</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- KPDFviewer (last file).pdf</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- KPDFviewer File Manager.pdf</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">music</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">audible</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">kite-uninstall.sh</span><br />
<b><span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">kite</span></b><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- onboot</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- ondrop</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- KPDFviewer (last file)</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- KPDFviewer File Manager</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- unused</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- config</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">screen_savers</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- 600x800</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">[...]</span><br />
<b><span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">launchpad</span></b><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- kpdf.ini</span><br />
<b><span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;">kindlepdfviewer</span></b><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><b> </b> [sämtliche *.lua Dateien]</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- clipboard</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- data</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- fonts</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- history</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- libs</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- resources</span><br />
<span style="background-color: #ffe599; color: #20124d; font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>|- screenshots</span><br />
<span style="color: #20124d; font-size: x-small;"><br /></span>
Die zwei PDF-Dateien unter "documents" sind übrigens lediglich Dummies über die später der KPDFViewer gestartet werden kann. Also nicht löschen!<br />
<br />
<br />
<b>Übrigens...</b><br />
Es gibt ein alternatives OS für den klassischen Kindle, das sich quasi im Dual-Boot betreiben lässt. Es heisst <a href="http://wiki.mobileread.com/wiki/Duokan_Kindle">Duokan</a> und hat seit einiger Zeit auch englische Menüs, was gegenüber den chinesischen schon ein Vorteil ist :-) Ich habe Duokan ausprobiert, bevor ich KPDFViewer entdeckt hatte. Für meinen Geschmack fährt man mit dem KPDFViewer und seinem Filemanager besser.<br />
<br />
<b>Update:</b><br />
<br />
Es existiert noch ein weiterer Fork namens "Librerator":<br />
Download: <a href="http://www.mobileread.com/forums/showthread.php?t=198742">http://www.mobileread.com/forums/showthread.php?t=198742</a><br />
GitHub: <a href="https://github.com/kai771/kindlepdfviewer/wiki">https://github.com/kai771/kindlepdfviewer/wiki</a><br />
<br />
<br />
Gute Übersicht verschiedener Kindle Hacks: <a href="http://wiki.mobileread.com/wiki/Kindle_Hacks_Information">http://wiki.mobileread.com/wiki/Kindle_Hacks_Information</a><br />
<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-53728998316256162012-08-11T02:51:00.000+02:002012-12-31T02:39:43.277+01:00Retro Gaming!<b>Nostalgie!</b><br />
In den frühen 80er Jahren, noch bevor ich selbst einen Computer hatte, war dies der Mercedes unter den Joysticks - am C64 als auch am Amiga. Ich erinnere mich an eine Mini-Version und auch eine transparente Sonderausführung im Freundeskreis.<br />
Nun ist er wieder da in einer USB-Version. Mittels Emulator und einem längerem USB-Kabel kann man die Klassiker nun wieder vom Sofa aus spielen - fast wie früher, nur dass diesmal das Bild nicht mehr aus einer kleinen Röhrenkiste, sondern von einem Beamer in voller Grösse auf die Wand gezaubert wird.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhet8P5I5-10l2zV-Nuj7ioOq_h6DfwCF9A5Ogx73A49vKPhVmBImEPpXf_s-ljXyE-wP2RtdpvglO3ys_FMnmfEsSi_5MqmHXG-V2qWWNrwimB1tdebEdhrm8mM4gh0MxIQgsP-odcL4B4/s1600/CompetitionProUSB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhet8P5I5-10l2zV-Nuj7ioOq_h6DfwCF9A5Ogx73A49vKPhVmBImEPpXf_s-ljXyE-wP2RtdpvglO3ys_FMnmfEsSi_5MqmHXG-V2qWWNrwimB1tdebEdhrm8mM4gh0MxIQgsP-odcL4B4/s200/CompetitionProUSB.jpg" width="181" /></a></div>
<div style="text-align: center;">
<a href="http://www.speedlink.com/?p=2&cat=414&pid=25585&paus=1">COMPETITION PRO USB Version (inkl. Summer und Wintergames)</a></div>
<br />
Ich habe mir gleich zwei dieser Joysticks bestellt.. Zum Glück, denn bei dem einen war die beiliegende CD unbrauchbar (angeknackst). Die Neuauflage der Summer und Wintergames... (Epyx Germany?) ... naja. Die klassische Fassung ist zwar technisch weniger ausgereift, macht aber mehr Spass dank 8bit Sound und der schönen Pixelmännchen :-)<br />
Da ich seit den 90'ern aber kaum mehr ein Computerspiel angesehen habe, steht mir da wohl kaum eine Meinung zu.<br />
<br />
Hier ist übrigens Joschi heimlich an den Joystick gegangen.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoIv3w_nVBSjtBSN5sQGVYdxbFNPEn5fxCeEUB0uCnAmzA3Twm-c5DwYl9gAReCUTCLXHyax3NnP2ho83Zzg9JsMmBc9iWU-55RLp4P3NXvVbN5yukTuj01Iwed-YfKx-2HyjevrUnwfjm/s1600/JoshiPacman.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoIv3w_nVBSjtBSN5sQGVYdxbFNPEn5fxCeEUB0uCnAmzA3Twm-c5DwYl9gAReCUTCLXHyax3NnP2ho83Zzg9JsMmBc9iWU-55RLp4P3NXvVbN5yukTuj01Iwed-YfKx-2HyjevrUnwfjm/s320/JoshiPacman.jpg" width="320" /></a></div>
Vermutlich wollte sie auch mal Pacman spielen.<br />
<br />
Beim Surfen auf der Nostalgiewelle bin ich noch auf etwas gestossen: Zum 20.Geburtstag von Giana Sisters soll es einen Remake geben.<br />
<a href="http://www.kickstarter.com/projects/project-giana/project-giana">http://www.kickstarter.com/projects/project-giana/project-giana</a><br />
<a href="http://www.youtube.com/watch?v=oWxvJoEIZwo">http://www.youtube.com/watch?v=oWxvJoEIZwo</a><br />
<br />
<b>Update: </b>Mittlerweile ist das Spiel verfügbar (<a href="http://gianasisterstwisteddreams.com/">http://gianasisterstwisteddreams.com/</a>). Aber auch wenn man es mit Tastatur spielen kann bzw. über ein Zusatzprogramm auch die Competition Pro zum Laufen bringt, macht es doch nur mit einem modernen Gamecontroller Sinn- Digitale Joysticks sind eben nicht mehr ganz so modern, wie Digital-TV :-)<br />
<br />
<b>Fazit:</b> Der Competition Pro USB ist fein für Emulator-Spiele der 80er Jahre. Man hat sogar 4 unterscheidbare Tasten (früher war es nur ein Feuerknopf). Wenn man die Browser-Version eines Klassikers damit spielen möchte (manchmal steckt auch da ein Emu dahinter), hier noch ein Tipp:<br />
<a href="http://www.electracode.com/4/joy2key/JoyToKey%20English%20Version.htm">JoyToKey</a> erlaubt es, den Achsen und Knöpfen des Joysticks beliebige Tastatur-Events zuzuordnen.<br />
<br />
<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-50506261330937525552012-03-24T03:43:00.000+01:002012-12-30T18:22:59.823+01:00Operation gelungen - 500gP lebt<i>Trotz zunehmender Miniaturisierung ist der gute alte Lötkolben manchmal doch noch der Held der Stunde.</i><br />
<br />
Angefangen hat alles mit einem harmlosen Reboot meines Routers (Asus WL-500g Premium). Als er danach nicht mehr starten wollte, dachte ich zunächst, die <a href="https://openwrt.org/">OpenWRT</a> Firmware hat sich verabschiedet. Nach einigen Versuchen habe ich ihn also neu aufgesetzt (verbunden mit einem Update auf die neueste OpenWRT Firmware). Das Problem bestand aber weiterhin.<br />
Im Netz habe ich dann Hinweise auf Probleme mit dem Netzteil gefunden. Mit einem Universalnetzteil habe ich die These überprüft. Scheinbar zieht der Router vor allem in der Startphase mehr. Normalerweise sorgt ein Kondensator im Netzteil dafür, diesen Bedarf abzufedern. Nicht aber wenn dieser Elko defekt ist (übrigens auch ein bekanntes Problem auf PC-Motherboards: defekte ELKOs, die man an den gewölbten Deckeln erkennen kann). Ich hatte den WLAN Router längere Zeit mit deaktivierten WIFI in Betrieb. Deshalb ist mir das Problem wohl nicht gleich aufgefallen. Bei abgeschaltetem WIFI ist der Energieverbrauch wohl auch deutlich niedriger in der Startphase.<br />
<br />
Bei der Fehlersuche bin ich im Netz gestossen auch noch auf diesen <a href="http://www.hackup.net/2011/12/fixing-broken-psu-of-asus-wl-500gp-router/">Blogeintrag</a> gestossen mit einer ermutigend einfachen Reparaturanleitung für dieses Problem. Schwierig war lediglich das verklebte Gehäuse zu öffnen. Der Elko ist dann schnell ausgelötet und ersetzt.<br />
Die Details und eine bebilderte Anleitung findet sich dort: <a href="http://www.hackup.net/2011/12/fixing-broken-psu-of-asus-wl-500gp-router/">http://www.hackup.net/2011/12/fixing-broken-psu-of-asus-wl-500gp-router/</a><br />
<br />
Hier sind noch zwei Fotos mit dem bereits ersetzten Elko.Der Ersatz-Elko ist etwas grösser als das Original und hat auch etwas mehr Kapazität, dafür aber kaum Platz. Jedenfalls funktioniert der Router nun wieder einwandfrei.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0FyArXWcNECmS_mZG2osUaki1pu_hEM6BrXC41e56tBP8MkKFNMz_1nfCVOUGjbyvMKKQ0ZnvKKnjrl14cSvt0qkAu69y8GKCOCTNUiIKql3VWFos1b_nyB5seqThL0MVtZQ39F1PNQG/s1600/AsusNetzteil+(2).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0FyArXWcNECmS_mZG2osUaki1pu_hEM6BrXC41e56tBP8MkKFNMz_1nfCVOUGjbyvMKKQ0ZnvKKnjrl14cSvt0qkAu69y8GKCOCTNUiIKql3VWFos1b_nyB5seqThL0MVtZQ39F1PNQG/s400/AsusNetzteil+(2).jpg" width="400" /></a></div>
<i><br /></i>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj7aWXewo1X6fMffE59-5hx1Ow8qrXInDqEHbCszsMTmdVvxRPZg2hYVN6qpsANSIFpUuxjHRNvkGUfBkdLXYPk36iqaOYPRxBaAhQx7jhMA5BSzJxqt5WYv8bjJsZO7pmT_1XdWin9lf8/s1600/AsusNetzteil.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj7aWXewo1X6fMffE59-5hx1Ow8qrXInDqEHbCszsMTmdVvxRPZg2hYVN6qpsANSIFpUuxjHRNvkGUfBkdLXYPk36iqaOYPRxBaAhQx7jhMA5BSzJxqt5WYv8bjJsZO7pmT_1XdWin9lf8/s400/AsusNetzteil.jpg" width="400" /></a></div>
<br />
<span style="color: red;">Ein Wort der Warnung: Das Löten an einem Netzteil ist gewiss nicht das Erste, was ein Anfänger sich vornehmen sollte. Gerade Kondensatoren können Restspannungen enthalten, die unangenehm bis gefährlich sein könnten (ein paar prominente Beispiele: TV-Geräte, Blitzgeräte, elektronische Fliegenklatsche).</span><br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-23030447701774222062012-01-21T00:06:00.000+01:002012-12-31T03:49:14.730+01:00Canon EOS 500D - Auslösungen (Shutter Count) und weitere Extras<br />
Seit einiger Zeit habe ich eine Spiegelreflexkamera von Canon (EOS 500D). Was mir füher nicht bewusst war: Die Mechanik einer Spiegelreflexkamera ist nur begrenzt belastbar. Bei der Amateurserie geht man davon aus, dass die Kamera so ca. 60.000 Spiegelbewegungen (Auslösungen, deren Anzahl auch als "Shutter Count" bezeichnet wird) überleben sollte.<br />
Zu Zeiten der analogen 24-Bilder Filmrollen war dies wohl kein Thema, aber bei einer Digitalkamera hat man schnell mal 12.000 Bilder geschossen. Die Bildnummern geben dann nur noch begrenzt Auskunft über die Gesamtzahl der Bilder. Bei den Profimodellen findet sich der Shutter Count in den EXIF-Metadaten jeder Bilddatei abgelegt. Einige Quellen gehen davon aus, dass die Hersteller diese Anzahl der Spiegelbewegungen lieber nicht zu prominent machen wollen und dieses Feature daher ganz bewusst weggelassen wurde.<br />
<br />
Aus reiner Neugier hätte ich gerne gewusst, was der Tachostand meiner Kamera denn eigentlich sagt.<br />
<br />
Bereits auf meiner kleinen Canon IXUS hatte ich eine Firmwareergänzung namens "<a href="http://chdk.wikia.com/wiki/German/CHDK-Handbuch">CHDK</a>". CHDK hat ein paar nette Ergänzungen parat, wie z.B. einer Anzeige der überbelichteten Bildbereiche, eine exaktere Batterieanzeige in Volt (statt dem fast binären Voll/Fast leer) und einem Bracketing Modus zur Erstellung von HDR-Aufnahmen.<br />
"Firmwareergänzung"? Die Kamera selbst wird nicht verändert, es wird lediglich ein Zusatzprogramm von der Speicherkarte während des Bootvorganges hinzugeladen.<br />
<br />
Zusätzlich gibt es aber auch noch ein Killer-Feature, mit dem man die Kamera durch Basic Scripts erweitern kann. So kann man die Kamera so programmieren, dass sie Intervallaufnahmen macht (z.B. alle 30 Sekunden ein Bild für mehrere Stunden (oder bis der Akku nachgibt) oder ein Motion-Detect Skript, das die Kamera dann auslöst, wenn im definierten Bildbereich eine Aktivität auftritt.<br />
Grund genug, diese Kamera als Zweitgerät zu behalten :-)<br />
<br />
Mittlerweile habe ich auch etwas Vergleichbares für die EOS gefunden, allerdings ohne Basic-Scripting:<br />
<br />
<b style="background-color: yellow;"><a href="http://www.magiclantern.fm/download">Magic Lantern</a> </b> (siehe User Guide <a href="http://magiclantern.wikia.com/wiki/Unified/UserGuide">http://magiclantern.wikia.com/wiki/Unified/UserGuide</a> und die Installationshinweise: <a href="http://magiclantern.wikia.com/wiki/Unified/Install">http://magiclantern.wikia.com/wiki/Unified/Install</a> )<br />
<br />
Die Installation ist nicht weiter kompliziert, wenn man der Anleitung genau folgt. Die SD-Karte muss speziell vorbereitet werden und ein paar Dateien enthalten. Das Übliche. Danach geht es los.<br />
<br />
<b><span style="font-size: large;">Magic Lantern in Aktion...</span></b><br />
<span style="text-align: center;"><span style="font-size: x-small;">[hier in der Version 2011-11-11]</span></span><br />
<span style="text-align: center;"><br /></span>
<span style="text-align: center;">Wenn Magic Lantern geladen wurde (unbedingt Anleitung beachten!), wird das Display um Zusatzangaben ergänzt:</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLXcVbiZZ3eyRcwaanRQf2FvtmK8hrx-75uYVvZ7e6CDv53iOQ4JB0I1zpDAJEb-Kx4qx3zlhPBAGKL2fhh4w4V5rWsDRCPXMlDQmCU2bHcZDHk8em9RaIbtZn_yxkGaIeoMX80hJV7H1c/s1600/CanonDisplay_mitMagicLantern.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLXcVbiZZ3eyRcwaanRQf2FvtmK8hrx-75uYVvZ7e6CDv53iOQ4JB0I1zpDAJEb-Kx4qx3zlhPBAGKL2fhh4w4V5rWsDRCPXMlDQmCU2bHcZDHk8em9RaIbtZn_yxkGaIeoMX80hJV7H1c/s320/CanonDisplay_mitMagicLantern.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Uhrzeit und Restspeicher auf der Karte reisst mich noch nicht vom Hocker, aber wenn man in das Menü wechselt, hat man die Qual der Wahl und jede Menge neuer, nützlicher und weniger nützlicher Zusatzfunktionen.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKTvolRM_f1zrgvJq6pR8oUigVFhob2Wfwx8y2yo5Zf0qiTbIS9On8p3lyPRKHHmtG1Nr5mLYX0F8wVTddXev9nP5Wgw0DwrxvUQ0wufehQwxj18CpOzJaB850qllULo_0DPU-UNYyIe3l/s1600/magiclantern+(1).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKTvolRM_f1zrgvJq6pR8oUigVFhob2Wfwx8y2yo5Zf0qiTbIS9On8p3lyPRKHHmtG1Nr5mLYX0F8wVTddXev9nP5Wgw0DwrxvUQ0wufehQwxj18CpOzJaB850qllULo_0DPU-UNYyIe3l/s400/magiclantern+(1).jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Hier ist der ersehnte Shutter Count. Knapp 14.000 Bilder - Da hab ich im ersten Jahr definitiv fleissiger geknipst.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUX9ahptvZgfd9RCCrJ6i228FmpINFvqEadlxki9nO9MQXE_W7GZHmzKqKOjYpMaKGpztGsZNgr2DvrcX0OCKiKjEZUnB2trXhbG1M0ZxSYuJuvCDRR46uqRiwhqOOblqxyGA0ik4sOhZz/s1600/magiclantern+(3).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUX9ahptvZgfd9RCCrJ6i228FmpINFvqEadlxki9nO9MQXE_W7GZHmzKqKOjYpMaKGpztGsZNgr2DvrcX0OCKiKjEZUnB2trXhbG1M0ZxSYuJuvCDRR46uqRiwhqOOblqxyGA0ik4sOhZz/s400/magiclantern+(3).jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
HDR-Bracketing: Eine Belichtungsreihe knipsen (Anzahl und EV-Intervalle einstellbar)</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggaY_n8MN05svT-VfCyLeoNf9s7X4DACIAM6P7fF9s1OAIzgjey0U0SVV1mHM1unbLoNEOJRrHddmKPA3ng5SX_Zjyqmh531npbyrJ_g_jSA2qRo5ulSJdC7YU3qoMCwO39TSg_XqT2KU1/s1600/magiclantern+(4).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggaY_n8MN05svT-VfCyLeoNf9s7X4DACIAM6P7fF9s1OAIzgjey0U0SVV1mHM1unbLoNEOJRrHddmKPA3ng5SX_Zjyqmh531npbyrJ_g_jSA2qRo5ulSJdC7YU3qoMCwO39TSg_XqT2KU1/s400/magiclantern+(4).jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVcTiMcuFTkQi2R_PpPYFq8o6HSHioXxGBiyFzil_Ebh44CM7uh-gdVmUQUXmF-qN6f49yRYxfeD7gTLHYSgOzzr9VY0D3BNoRe6uUk5Qn5sQuxm0cgf1LB3sRzCRW3n6RZYs-R4UlxaNB/s1600/magiclantern+(2).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVcTiMcuFTkQi2R_PpPYFq8o6HSHioXxGBiyFzil_Ebh44CM7uh-gdVmUQUXmF-qN6f49yRYxfeD7gTLHYSgOzzr9VY0D3BNoRe6uUk5Qn5sQuxm0cgf1LB3sRzCRW3n6RZYs-R4UlxaNB/s400/magiclantern+(2).jpg" width="400" /></a></div>
<div style="text-align: center;">
<span style="text-align: center;">Audio-Einstellungen.</span></div>
<span style="text-align: center;"><br /></span>
<span style="text-align: center;"><b>Übrigens:</b></span><br />
<span style="text-align: center;">Auch wenn die Auflösung meiner alten IXUS nicht mehr ganz zeitgemäss ist, kann man die Einzelbilder einer Intervallaufnahme auch zu einem Videoclip zusammensetzen. HD-Qualität liegt locker drin. Hier ein Beispiel für ein 800x600 Pixel Filmchen: </span><br />
<span style="text-align: center;"> <span style="color: red;">mencoder.exe mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o output.avi</span></span><br />
<br />
<div style="text-align: center;">
<br /></div>
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0tag:blogger.com,1999:blog-259154915718438244.post-67679324687262452382012-01-07T18:07:00.000+01:002012-12-31T01:48:08.406+01:00Erster Eintrag ins (B)LogbuchMein letzten Aktivitäten als Blogger liegen nun schon eine Weile zurück. 2006? Da man sich ja nicht total verweigern kann, verzichte ich lieber auf Facebook und möchte stattdessen lieber ein paar Notizen und Gedanken online stellen, die zumindest mir selbst als Gedächtnisstütze dienen werden und gelegentlich für einen vorbeisurfenden Zeitgenossen einen Wert haben.<br />
<br />
Jeder Bastelarbeit geht ja eine Idee voraus und eine Recherche nach nützlichen Bausteinen (Skripten, Tools, Tipps) im Web. Oft skizziere ich mir Lösungsansätze offline in einem Dokument oder Folder (OpenWRT Konfigurationen, Konvertierungsparameter, usw.) Meist speichere ich mir dazu lokal ein paar Links und notiere mir ein paar Schritte während der Umsetzung (insbesondere was die Konfiguration von Tools angeht).<br />
<br />
Eigentlich wollte ich schon länger diese Ideen so festhalten, dass eventuell auch andere noch davon profitieren können. Den ersten Schritt habe ich mit diesem und den folgenden Blogeinträgen gemacht. Ehrlich gesagt habe ich ein paar Artikel in 2012 anhand der Datumsangabe der Fotos zurückdatiert. So passt die chronologische Reihenfolge und es sieht nicht so aus, als wären alle Projektlein in den letzten Tagen des Jahres entstanden :-)<br />
<br />
Es geht hier also nicht um meine persönliche Eitelkeit, nicht um Selbstdarstellung, sondern eher um eine Art Ideen- oder Skizzenblock [blog] technischer Art "in the Cloud".<br />
<br />
Je nach Zeit, Lust und Laune werde ich nach und nach auch mal wieder einen alten Trick ausgraben, der sich bewährt hat.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1RFtmgI35gegbI_qFPCsObHHyU9E8Ap09V75kFVPfKjyyxaihKJ5u9Y7G5CThx_XHJHa9jnk1RCbOlEpedWG5veO8CiDVrHrxdJtOIuIN3ZhhWohTmAOvnXgZ1Ya0_kxjb6f5A7rTkOjo/s1600/Skulptur.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1RFtmgI35gegbI_qFPCsObHHyU9E8Ap09V75kFVPfKjyyxaihKJ5u9Y7G5CThx_XHJHa9jnk1RCbOlEpedWG5veO8CiDVrHrxdJtOIuIN3ZhhWohTmAOvnXgZ1Ya0_kxjb6f5A7rTkOjo/s320/Skulptur.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Geschenk mit tieferer Bedeutung:<i> Man soll sein Hobby nicht zum Beruf machen?</i></div>
<div class="separator" style="clear: both; text-align: center;">
[Was sonst?! Der Name des Arbeitgebers ist jedenfalls nicht in die Kugel graviert worden ;-) ]</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />Michaelhttp://www.blogger.com/profile/09939904683052700416noreply@blogger.com0