<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.opensourceecology.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nathan+Broadbent</id>
	<title>Open Source Ecology - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.opensourceecology.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nathan+Broadbent"/>
	<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/wiki/Special:Contributions/Nathan_Broadbent"/>
	<updated>2026-04-21T11:47:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Wiki_instructions&amp;diff=26490</id>
		<title>Wiki instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Wiki_instructions&amp;diff=26490"/>
		<updated>2011-05-16T12:43:37Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: Added howto for inserting source code in wiki pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OrigLang}}&lt;br /&gt;
{{Breadcrumb|Wiki}}&lt;br /&gt;
{{tip|Helpful Reading|The &#039;&#039;&#039;[[Crash course on OSE]]&#039;&#039;&#039; page will help you understand the underlying intentions for the OSE Wiki so that your contributions can be as meaningful as possible.}}&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A wiki is a place where a large number of people can contribute to content generation and organization.&lt;br /&gt;
&lt;br /&gt;
The critical point about a wiki is that &#039;&#039;&#039;it can be used as a repository for a large amount of information which can be organized later on&#039;&#039;&#039;. We encourage you to internalize this point and start using wikis as a place where human knowledge can be collected, and value can be added to that knowledge by further organization towards applications.&lt;br /&gt;
&lt;br /&gt;
== Policies ==&lt;br /&gt;
&lt;br /&gt;
In the ideal situation, a large messy hairball of input is organized into distilled, high-quality content. A successfully-implemented wiki has the capacity to self-organize under the guidance of clear procedures in the hands of wiki moderators. With this in mind, please make sure to familiarize yourself with these procedures as formalized in the following policies:&lt;br /&gt;
&lt;br /&gt;
* [[Wiki Login Policy]]&lt;br /&gt;
* [[Wiki Transparency Policy]]&lt;br /&gt;
* [[Wiki Curators]]&lt;br /&gt;
&lt;br /&gt;
==Content==&lt;br /&gt;
&lt;br /&gt;
There is a wide scope of things that can be included on the wiki - anything related to healthy, sustainable living, open source technology, good human relations, human empowerment, etc. OSE is about the integration of humans with technology in a benign way, and with a focus on open source techniques. That&#039;s just about all under the sun that was historically proven to be benign. Please be careful to keep this in mind in terms of editing. &lt;br /&gt;
&lt;br /&gt;
The wiki in general is supposed to be a &#039;braindump&#039; - so if it is not well-organized initially, it has a chance to become organized at a later date. Short entries, or stubs, are ok because they can be used as a definition later - even if nothing links at present. The expression braindump does not signify a low level of quality, though. Bad content to a Wiki is like bad nutrition to a body. If the Wiki is supposed to grow healty a certain level quality is essential. &lt;br /&gt;
Most of all bad content, which is usually added by non experts, discourages the distinctive experts to contribute. So every contributor is urged to check his contributions in matters of respect and motivation towards others. Motivation and discouragement of contributors through content qualification is probably the strongest change driver for the quality management of a Wiki.&lt;br /&gt;
&lt;br /&gt;
The OSE Wiki-contents are different from the main Wiki because they should be Open Source and Ecology related. With this difference in mind a concentrated OSE Wiki can be built that serves it`s purpose: &amp;quot;A Wiki is only as good as the search process is quick&amp;quot;. It is a well practice to examine the main Wiki concerning a topic before starting an article in the OSE Wiki.&lt;br /&gt;
   &lt;br /&gt;
===Advertisement===&lt;br /&gt;
In the spirit of OS, advertisement has a place, too. If a company offers OS content and ecological products or services they should be able to show up in the Wiki. If the contributor, who wants to offer his professional services, does not want to write a decent article it is better to insert his information in an existing article. Considering the variety of articles this is most often possible. Articles that only show a companies homepage do not meet the style of a Wiki to well.&lt;br /&gt;
In order to heed the notion of cooperative networking of a Wiki it is a good sign to note similar companies when advertising, not just the proprietary. A spirit of unity is viral to an undertaking rearing up against an establishment.&lt;br /&gt;
&lt;br /&gt;
===Style Guidelines===&lt;br /&gt;
*The first sentence of an article should be a one-sentence summary of the whole topic&lt;br /&gt;
**The next paragraph should be a longer summary of it&lt;br /&gt;
**Then go into details&lt;br /&gt;
*Be direct and practical&lt;br /&gt;
**Avoid acronyms, jargon and neologisms. &lt;br /&gt;
**Never use a long word or phrase where a short one will do.&lt;br /&gt;
**If it is possible to cut a word out, cut it out.&lt;br /&gt;
**Never use the passive where you can use the active (e.g. say &amp;quot;We built the house on Tuesday&amp;quot; rather than &amp;quot;The construction of the house took place on Tuesday&amp;quot;.)&lt;br /&gt;
**Never use a foreign phrase, a scientific word, or a jargon word if you can think of an everyday English equivalent.&lt;br /&gt;
**Break any of these rules sooner than say anything outright barbarous.&lt;br /&gt;
*When writing about measurements, list both imperial and metric values. List both Fahrenheit and Celsius for temperatures.&lt;br /&gt;
&lt;br /&gt;
==Searching==&lt;br /&gt;
You can search for contents by typing your search terms on one of the &#039;&#039;&#039;search boxes&#039;&#039;&#039; at the &#039;&#039;&#039;top left corner&#039;&#039;&#039;&lt;br /&gt;
* The &#039;&#039;&#039;first search box&#039;&#039;&#039; will search for text matches on &#039;&#039;&#039;this wiki only&#039;&#039;&#039;&lt;br /&gt;
* The &#039;&#039;&#039;second search box&#039;&#039;&#039; will perform a &#039;&#039;custom Google search&#039;&#039; on &#039;&#039;&#039;this wiki&#039;&#039;&#039;, on &#039;&#039;&#039;our [http://openfarmtech.org/weblog/ blog]&#039;&#039;&#039;, on &#039;&#039;&#039;our [http://openfarmtech.org/forum/ discussion forum]&#039;&#039;&#039; and &#039;&#039;&#039;other related sites&#039;&#039;&#039;&lt;br /&gt;
** For more details, see the page about the [[OSE custom search engine]]&lt;br /&gt;
&lt;br /&gt;
==Logging In==&lt;br /&gt;
{{Info|Log in first!|Before creating new pages or editing existing ones, you have to &#039;&#039;&#039;log in first&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
Any person contributing to the project in a substantial way should fill out the [[Team Culturing]] survey, and therefore, any name should be linkable with a full description of the person, such as [[Marcin Jakubowski]]. This will facilitate referencing and connection between projects and developers. The potential contributions of a person should be transparent if they fill out their abilities in the [[Team Culturing]] Survey.&lt;br /&gt;
&lt;br /&gt;
===Preferred Method===&lt;br /&gt;
* Click on &#039;&#039;&#039;Login with OpenID&#039;&#039;&#039; at the &#039;&#039;&#039;upper right corner&#039;&#039;&#039; of the page to log in&lt;br /&gt;
** Just follow the instructions on the page that loads&lt;br /&gt;
** &#039;&#039;If you see &#039;&#039;&#039;nyud.net&#039;&#039;&#039; appended to our domain address, [[Wiki instructions#Coral_CDN|see the section on Coral CDN below]]&#039;&#039;&lt;br /&gt;
* If you are &#039;&#039;&#039;logging in for the first time&#039;&#039;&#039;, you&#039;ll receive a &#039;&#039;&#039;confirmation email&#039;&#039;&#039;&lt;br /&gt;
** Once you follow the instructions on that email, you&#039;ll be able to make changes to our wiki&lt;br /&gt;
===Without OpenID===&lt;br /&gt;
* If you &#039;&#039;&#039;already have a wiki account&#039;&#039;&#039;, you can [http://openfarmtech.org/wiki/Special:UserLogin log in without OpenID]&lt;br /&gt;
* If you want to create an account &#039;&#039;&#039;without using OpenID&#039;&#039;&#039;, [[contact us]] to request an account (&#039;&#039;please provide desired login in the subject line&#039;&#039;)&lt;br /&gt;
===Login Problems===&lt;br /&gt;
* In case you have problems logging in, please [[contact us]] to report your problem.&lt;br /&gt;
&lt;br /&gt;
==Coral CDN==&lt;br /&gt;
* If you are accessing our site through [[Coral CDN]] (http://openfarmtech.org.nyud.net/wiki/), the login link above won&#039;t work.&lt;br /&gt;
** In that case, you have to access the [http://openfarmtech.org/w/index.php?title=Special:OpenIDLogin&amp;amp;returnto=Wiki_instructions OpenID login page] from its original URL or the [http://openfarmtech.org/wiki/Special:UserLogin standard login page].&lt;br /&gt;
* If you want to &#039;&#039;&#039;&#039;&#039;bypass&#039;&#039; Coral CDN&#039;&#039;&#039; for a given page, append &#039;&#039;&#039;coral-no-serve&#039;&#039;&#039; to the query string, like this:&lt;br /&gt;
** http://openfarmtech.org/wiki/Wiki_instructions?coral-no-serve&lt;br /&gt;
&lt;br /&gt;
== Grouping ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Categories&#039;&#039;&#039; can be used to organize a large number of pages, media, and even other categories. Read [[Using Categories]] for more information on proper categorization.&lt;br /&gt;
* &#039;&#039;&#039;[[#Creating Subpages|subpages]]&#039;&#039;&#039; can also be used to group pages. They organise information hierarchically. However, too many nesting will lead to a long name that is hard to remember.&lt;br /&gt;
&lt;br /&gt;
==Creating New Pages==&lt;br /&gt;
To start a new page or to edit an existing one, just type the desired page name in the [[#Searching|search box]] at the top left corner (the one &#039;&#039;&#039;above&#039;&#039;&#039; the &#039;&#039;OSE custom search engine&#039;&#039; box) and click on the button labeled &#039;&#039;&#039;Go&#039;&#039;&#039;. If a similar page already exists, you might want to edit that page instead of creating a new one. Otherwise, click on the message &#039;&#039;&#039;Create the page &amp;quot;&#039;&#039;your page name&#039;&#039;&amp;quot; on this wiki!&#039;&#039;&#039; (at the top of the search results) to create the new page.&lt;br /&gt;
&lt;br /&gt;
Then you can start editing the page. Also, while editing a page, you can create links to new or existing pages with double brackets around their title, for example: &amp;lt;pre&amp;gt;[[My New Additions]]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating Subpages==&lt;br /&gt;
{{Tip|When to use subpages|&lt;br /&gt;
A subpage can be used to group pages belonging to some topic or main page&lt;br /&gt;
* to create pages in a given user&#039;s &#039;&#039;[http://meta.wikimedia.org/wiki/Help:Link#User_space user space]&#039;&#039;.&lt;br /&gt;
* to create [[Translation#Page_Title_Convention|other language versions of an article]]&lt;br /&gt;
* to create &#039;&#039;&#039;archives of old discussions&#039;&#039;&#039; under a talk page&lt;br /&gt;
* to create &#039;&#039;&#039;scratchpad editing spaces&#039;&#039;&#039; under a user page&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Info|User Spaces|Pages on user spaces do not have to follow strict quality guidelines, as they &#039;&#039;&#039;are not official&#039;&#039;&#039; OSE content.&lt;br /&gt;
Other pages should reflect more closely the official OSE stance on a given issue.}}&lt;br /&gt;
&lt;br /&gt;
If you want to create a [http://www.mediawiki.org/wiki/Help:Subpages subpage] named &#039;&#039;&#039;A subpage name&#039;&#039;&#039; under a given page (for instance, &#039;&#039;&#039;My Parent Page&#039;&#039;&#039;), all you have to do is to &#039;&#039;create a page&#039;&#039; whose title is &#039;&#039;&#039;My Parent Page/A subpage name&#039;&#039;&#039; &#039;&#039;(see [[#Creating_New_Pages|how to create a page]])&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You can also link to subpages from the parent page using a [http://meta.wikimedia.org/wiki/Help:Link#Subpage_feature specific link format].&lt;br /&gt;
&lt;br /&gt;
==Deleting Pages==&lt;br /&gt;
===When to Delete===&lt;br /&gt;
A page is a good candidate for deletion if:&lt;br /&gt;
* it is &#039;&#039;&#039;clearly and beyond and doubt&#039;&#039;&#039; spam or complete nonsense&lt;br /&gt;
* it&#039;s a redirect page whose title has nothing to do with the page it redirects to&lt;br /&gt;
** &#039;&#039;Example:&#039;&#039; a page named &#039;&#039;&#039;How to cook using only sunlight&#039;&#039;&#039; that redirects to &#039;&#039;&#039;Arduino controller schematics&#039;&#039;&#039; doesn&#039;t make sense. Either redirect it to a page that deals with the subject of &#039;&#039;cooking using only sunlight&#039;&#039;, or delete it.&lt;br /&gt;
&lt;br /&gt;
===How to Delete===&lt;br /&gt;
{{Warn|Before Deleting a Page|&lt;br /&gt;
&#039;&#039;&#039;Never delete a page that is not clearly and beyond and doubt&#039;&#039;&#039; a spam page. &#039;&#039;&#039;A [[#Redirecting|redirect]] is often more appropriate&#039;&#039;&#039;.&amp;lt;br/&amp;gt;&lt;br /&gt;
You&#039;re urged to read [http://www.mediawiki.org/wiki/Help:Deleting_a_page Deleting a page] and [http://www.mediawiki.org/wiki/Help:Sysop_deleting_and_undeleting Sysop: deleting and undeleting] before you delete a page.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Only Sysops can delete pages. If you&#039;re not a Sysop and you would like to mark a page as a candidate for deletion &#039;&#039;&#039;(see the [[#When_to_Delete|criteria for deletion above]])&#039;&#039;&#039;, you should add the following text at the top of the page you would like to delete:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{delete}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
This will include the [[Template: delete| delete]] template and will add that page to a list of [[:Category: candidates for speedy deletion| candidates for speedy deletion]].&lt;br /&gt;
&lt;br /&gt;
==Redirecting==&lt;br /&gt;
You can redirect a page to another page by replacing the contents of the original page with a &#039;&#039;&#039;#REDIRECT&#039;&#039;&#039;, like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#REDIRECT [[My destination article]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can redirect a page to an [http://www.mediawiki.org/wiki/Help:Links#Interwiki_links interwiki link] too:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#REDIRECT [[Appropedia: Justa stove]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Using Categories|Adding a category]] may help others find the page, since it&#039;ll be listed on the corresponding category page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#REDIRECT [[Appropedia: Justa stove]]&lt;br /&gt;
[[Category: Cooking]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Too many redirect pages?|If you&#039;re afraid that the wiki will get cluttered with redirected pages, fear not. You can see this as a feature (a good one), not a bug, since anytime someone tries to add a page with title X (X being one of those redirected pages), they would be redirected to the appropriately-named page, instead of being given the chance to create a page with different title but similar content.}}&lt;br /&gt;
&lt;br /&gt;
==Editing Pages==&lt;br /&gt;
&lt;br /&gt;
{{Tip|Tips|&lt;br /&gt;
* &#039;&#039;&#039;Before editing&#039;&#039;&#039; a page, click the &#039;&#039;&#039;discussion&#039;&#039;&#039; tab at the top to check what others are saying about that page&lt;br /&gt;
** You can add your own considerations or questions there too&lt;br /&gt;
* &#039;&#039;&#039;To edit existing pages&#039;&#039;&#039;, just click the &#039;&#039;&#039;edit&#039;&#039;&#039; tab&lt;br /&gt;
* &#039;&#039;&#039;Before saving&#039;&#039;&#039; your changes, click the &#039;&#039;&#039;Show preview&#039;&#039;&#039; button located just below the editing window to make sure everything is as expected&lt;br /&gt;
* &#039;&#039;&#039;To save&#039;&#039;&#039; your work, click the &#039;&#039;&#039;Save page&#039;&#039;&#039; button&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
While in edit mode, there are some buttons at the top of the editing window to help with formatting text, creating links, inserting objects, etc.  &lt;br /&gt;
&lt;br /&gt;
=== Sections ===&lt;br /&gt;
&#039;&#039;&#039;[http://meta.wikimedia.org/wiki/Help:Section Sections]&#039;&#039;&#039; are created by creating their headings, as below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==First Section==&lt;br /&gt;
===First sub-section===&lt;br /&gt;
====First sub-sub-section====&lt;br /&gt;
==Second Sectoin==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Headers with only one equals sign on a side (=text here=) causes a title the size of the page name. On Wikimedia wikis they are used only sparingly and in prescribed circumstances.&lt;br /&gt;
&lt;br /&gt;
=== Inserting Tables ===&lt;br /&gt;
You can copy and paste your data from your spreadsheet to http://area23.brightbyte.de/csv2wp.php and it will convert it to a cut and pasteable mediawiki table.&lt;br /&gt;
&lt;br /&gt;
=== Inserting Templates ===&lt;br /&gt;
&lt;br /&gt;
You can insert a [http://meta.wikimedia.org/wiki/Help:Template template] using this code:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;{{My Template}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;create or edit a template&#039;&#039;&#039; named &#039;&#039;My Template&#039;&#039;, &#039;&#039;&#039;simply create a page&#039;&#039;&#039; named &#039;&#039;[[Template: My Template]]&#039;&#039; (see [[#Creating_New_Pages|how to create a page]]).&lt;br /&gt;
&lt;br /&gt;
===Text color===&lt;br /&gt;
&lt;br /&gt;
Put in the name of the color in this markup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Some text&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
The example above generates this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Some text&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Inserting Images===&lt;br /&gt;
&lt;br /&gt;
====Uploaded Images====&lt;br /&gt;
To insert an image, anywhere in the body of a page, type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[[Image:filename.jpg]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then click &#039;&#039;Save page&#039;&#039;. After the page is saved, you&#039;ll be allowed to click on that filename, and the wiki will prompt you for an image file to upload.&lt;br /&gt;
&lt;br /&gt;
====External Images====&lt;br /&gt;
You can simply paste links to images from any of the sites defined on [[MediaWiki: External image whitelist]].&lt;br /&gt;
See also: [http://www.mediawiki.org/wiki/Manual:$wgEnableImageWhitelist $wgEnableImageWhitelist]&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://openfarmtech.org/temp-gvcs-icons/3d-printer.png&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; gives this image:&lt;br /&gt;
&lt;br /&gt;
http://openfarmtech.org/temp-gvcs-icons/3d-printer.png&lt;br /&gt;
&lt;br /&gt;
====Inserting Image Galleries====&lt;br /&gt;
Use the &#039;&#039;gallery&#039;&#039; tag. Example code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:fefrepstrap1.jpg&lt;br /&gt;
Image:fefrepstrap2.jpg&lt;br /&gt;
Image:fefrepstrap3.jpg&lt;br /&gt;
Image:fefrepstrap4.jpg&lt;br /&gt;
Image:fefrepstrap5.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Produces this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:fefrepstrap1.jpg&lt;br /&gt;
Image:fefrepstrap2.jpg&lt;br /&gt;
Image:fefrepstrap3.jpg&lt;br /&gt;
Image:fefrepstrap4.jpg&lt;br /&gt;
Image:fefrepstrap5.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Inserting Movies===&lt;br /&gt;
&lt;br /&gt;
To insert movies, see this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;embed src=&amp;quot;http://blip.tv/play/nQaynDuJ6BU&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot;&lt;br /&gt;
  width=&amp;quot;640&amp;quot; height=&amp;quot;510&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; allowfullscreen=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code above generates this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;embed src=&amp;quot;http://blip.tv/play/nQaynDuJ6BU&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; width=&amp;quot;640&amp;quot; height=&amp;quot;510&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; allowfullscreen=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For any video, insert the &amp;lt;nowiki&amp;gt;&amp;lt;html&amp;gt; and &amp;lt;/html&amp;gt;&amp;lt;/nowiki&amp;gt; tags, and put in the html code that you get from YouTube or some other video format.&lt;br /&gt;
&lt;br /&gt;
===Embedding from Blip.tv===&lt;br /&gt;
&lt;br /&gt;
Here is a sample embed settings screen from blip.tv. Note that you do &#039;share&#039;, &#039;legacy player&#039;, then click &#039;go.&#039; Then, make sure you select &#039;in-line player&#039;, flv for flash video - and then click &#039;update embed code above&#039;. Then, copy the code into the blog, and in the blog, make sure you are in HTML, not visual, mode.&lt;br /&gt;
&lt;br /&gt;
[[Image:blipembed.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Subtitling Videos===&lt;br /&gt;
Here&#039;s how to activate Universal Subtitles for your videos:&lt;br /&gt;
&lt;br /&gt;
1- Go to http://universalsubtitles.org/ and click on &amp;quot;Subtitle a video&amp;quot;&lt;br /&gt;
2- Paste the URL of the video you want to have subtitled. The URL can point to a file in Ogg, WebM or FLV format, or it can point to a video hosted on YouTube or Blip.TV (Vimeo support will be available soon). Examples of URL:&lt;br /&gt;
&lt;br /&gt;
WebM file: http://content.bitsontherun.com/videos/m3P14laP-283112.webm&lt;br /&gt;
YouTube video: http://www.youtube.com/watch?v=shqrdCBTD70&lt;br /&gt;
Blip.TV video: http://blip.tv/file/3841170/&lt;br /&gt;
&lt;br /&gt;
3- A black page with a central video and a close button (a red tab on the top right corner) will appear. This is the initial step where users can start typing the subtitles for the video. Since you probably don&#039;t want to create the subtitle text right away, but instead want the embed code to paste on your blog, you can just click on the close button.&lt;br /&gt;
&lt;br /&gt;
4- In the next screen, the embed code can be found inside the text box below &amp;quot;Embed this video in your site&amp;quot;. Just click on the &#039;Copy to clipboard&#039; icon next to it. The embed code will look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    (&lt;br /&gt;
&lt;br /&gt;
      {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch?v=shqrdCBTD70&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This embed widget is in alpha stage, so it may have some bugs. I have tested it with youtube videos and it worked quite well. With Blip.TV, the video wouldn&#039;t play though.&lt;br /&gt;
&lt;br /&gt;
It&#039;ll be really great when it&#039;s working correctly with Vimeo and Blip.TV&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Inserting Source Code===&lt;br /&gt;
&lt;br /&gt;
Always wrap source code in &#039;pre&#039; tags. This ensures proper formatting, and means that someone can copy code without having to &#039;edit&#039; the page first.&lt;br /&gt;
&lt;br /&gt;
An example looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int mainup = 5;   // Define pins by plugin of hydraulics&lt;br /&gt;
int maindown = 6;&lt;br /&gt;
int secin = 10;&lt;br /&gt;
int secout = 11;&lt;br /&gt;
// Define pins 5, 6, 10, and 11 according to their hydraulic&lt;br /&gt;
// function on the CEB press - moving main cylinder up and down,&lt;br /&gt;
// and moving secondary cylinder in and out. &#039;In&#039; is defined as&lt;br /&gt;
// the direction of brick ejection motion out of the machine.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Next steps ==&lt;br /&gt;
&lt;br /&gt;
This wiki is powered by MediaWiki. For complete and up-to-date technical information about using this wiki, refer to the [http://www.mediawiki.org/wiki/Help:Contents MediaWiki help pages]. Keep this page in mind as a reference for future use.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re confident about your understanding of everything written in this page, the following pages will point you towards what to do next:&lt;br /&gt;
&lt;br /&gt;
* [[Wiki maintenance]]&lt;br /&gt;
* [[Wiki Reorganization 2011]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Policies]]&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Testcodemainy_v1.0&amp;diff=26489</id>
		<title>Testcodemainy v1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Testcodemainy_v1.0&amp;diff=26489"/>
		<updated>2011-05-16T12:36:37Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: View this in edit mode to see actual code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int mainup = 5;   // Define pins by plugin of hydraulics&lt;br /&gt;
int maindown = 6;&lt;br /&gt;
int secin = 10;&lt;br /&gt;
int secout = 11;&lt;br /&gt;
// Define pins 5, 6, 10, and 11 according to their hydraulic&lt;br /&gt;
// function on the CEB press - moving main cylinder up and down,&lt;br /&gt;
// and moving secondary cylinder in and out. &#039;In&#039; is defined as&lt;br /&gt;
// the direction of brick ejection motion out of the machine.&lt;br /&gt;
&lt;br /&gt;
// Define base motion time as 1000 milliseconds.&lt;br /&gt;
unsigned long time = 1000; &lt;br /&gt;
// Define scaling factors that determine all motion of cylinders,&lt;br /&gt;
// based on known cylinder diameters and known motion distances.&lt;br /&gt;
float factor1 = 1; &lt;br /&gt;
float factor2 = 1; &lt;br /&gt;
float factor3 = 1; &lt;br /&gt;
float factor4 = 1; &lt;br /&gt;
float factor5 = 1; &lt;br /&gt;
float factor6 = 1; &lt;br /&gt;
float factor7 = 1; &lt;br /&gt;
float factor8 = 1; &lt;br /&gt;
float factor9 = 1; &lt;br /&gt;
float factor10 = 1; &lt;br /&gt;
&lt;br /&gt;
// delay() function below happens to require unsigned longs&lt;br /&gt;
&lt;br /&gt;
// The setup() content between {} runs once only&lt;br /&gt;
// when the sketch starts.&lt;br /&gt;
&lt;br /&gt;
 void setup()   {                &lt;br /&gt;
   // initialize pins 5, 6, 10, and 11 as outputs:&lt;br /&gt;
   pinMode(mainup, OUTPUT);&lt;br /&gt;
   pinMode(maindown, OUTPUT);&lt;br /&gt;
   pinMode(secin, OUTPUT);&lt;br /&gt;
   pinMode(secout, OUTPUT);&lt;br /&gt;
   // Initialization should involve this series of steps:&lt;br /&gt;
   // 1. a quick drop of the main cylinder (to release pressure on drawer)&lt;br /&gt;
   // 2. motion of secondary cylinder all the way out (to expose any bricks)&lt;br /&gt;
   // 3. motion of main cylinder all the way up (to eject any bricks from hopper) &lt;br /&gt;
   // 4. motion of the secondary cylinder all the way in (to eject any brick from machine)&lt;br /&gt;
   // The result is all bricks cleared from machine - ready to start pressing cycles.&lt;br /&gt;
   digitalWrite(maindown, HIGH);   // start moving main cylinder down&lt;br /&gt;
   delay(time*2);                  // move it 6 seconds&lt;br /&gt;
   digitalWrite(maindown, LOW);    // stop moving&lt;br /&gt;
   digitalWrite(secin, HIGH);      // Start moving secondary cylinder in&lt;br /&gt;
   delay(time*2);                  // ...&lt;br /&gt;
   digitalWrite(secin, LOW);&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // The loop() method runs over and over again,&lt;br /&gt;
 // as long as the Arduino has power.&lt;br /&gt;
&lt;br /&gt;
 void loop()                     &lt;br /&gt;
 {&lt;br /&gt;
   // Order of motion starts with main cylinder down and&lt;br /&gt;
   // secondary cylinder all the way in.&lt;br /&gt;
   // Motion pattern is to:&lt;br /&gt;
   // 1. Move secondary cylinder to pressing position&lt;br /&gt;
   digitalWrite(secout, HIGH);   // start moving&lt;br /&gt;
   delay(time*factor1);                  // for a given duration&lt;br /&gt;
   digitalWrite(secout, LOW);    // and stop moving&lt;br /&gt;
   // 2. Start compression half way up.&lt;br /&gt;
   digitalWrite(mainup, HIGH);  &lt;br /&gt;
   delay(time*factor2);                 &lt;br /&gt;
   digitalWrite(mainup, LOW);   &lt;br /&gt;
   // 3.              &lt;br /&gt;
   digitalWrite(secout, HIGH);  &lt;br /&gt;
   delay(time);                 &lt;br /&gt;
   digitalWrite(secout, LOW);    &lt;br /&gt;
                &lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Source Code]][[Category:CEB Press]][[Category:CEB]]&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Press_Intro&amp;diff=26488</id>
		<title>CEB Press Intro</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Press_Intro&amp;diff=26488"/>
		<updated>2011-05-16T12:33:51Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: /* Specifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OrigLang}}&lt;br /&gt;
{{Category=CEB press}}&lt;br /&gt;
&lt;br /&gt;
{{ToolTemplate|ToolName=CEB Press}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;&amp;quot;Liberator&amp;quot; Compressed Earth Block Press&#039;&#039;&#039; is a machine that makes compressed earth blocks (&#039;&#039;&#039;CEB&#039;&#039;&#039;s). It takes earth/dirt/soil and squeezes it really hard to make solid blocks which can be used for building. Compressed earth blocks have many advantages as a building material: by making the building materials from the ground on the site, they eliminate the need to cart them in from elsewhere. This cuts down the costs and environmental impact of transport. Compressed earth blocks are very strong and insulate well against both heat and sound. This makes for a very energy-efficient building. Best of all, there is no charge for using dirt; it is literally a dirt-cheap way of building! See the wiki page on [[Compressed Earth Blocks]] and the [[:Category:CEB|CEB category]] for more details on building with CEBs.&lt;br /&gt;
&lt;br /&gt;
[[File:Machine.jpg|right|400px]]The Liberator has been fully designed and tested by the Open Ecology team. You can now follow the instructions to build your own, or contact us if you want to buy a kit or a finished machine.&lt;br /&gt;
&lt;br /&gt;
Building a machine yourself might seem scary, but every step of the process is fully documented and the OSE community is available on our [http://openfarmtech.org/forum/ discussion forums] if you need help, advice, or a little hand-holding.&lt;br /&gt;
&lt;br /&gt;
With the Liberator, two people can build a 6 foot high (1.83m) round wall, 20 feet (6.1m) in diameter, 1 foot (30cm) thick, in one 8 hour day - though construction time will vary somewhat depending on other factors: preparation time, what equipment is available (tractor etc.) and the quality of the soil. The bigger the block size, the faster a wall is errected.  And obviously, the bigger the block size, the heavier the block.  Blocks from &#039;&#039;The Liberator&#039;&#039; will average 25 pounds (11.3kg).&lt;br /&gt;
&lt;br /&gt;
The [[Torch Table|torch table]] will be used to automate the fabrication of the CEB machine, reducing fabrication time by an estimated 20 hours and thus reducing the cost of the final product.&lt;br /&gt;
&lt;br /&gt;
==How does it work?==&lt;br /&gt;
Loose dirt is loaded into the hopper at the top. This falls through to a chamber where a pair of hydraulic arms compress it and then eject it. This video shows how the machine works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;object width=&amp;quot;300&amp;quot; height=&amp;quot;270&amp;quot;&amp;gt;&amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.youtube.com/v/zoPq639C4CA&amp;amp;hl=en&amp;amp;fs=1&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;param name=&amp;quot;allowFullScreen&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;embed src=&amp;quot;http://www.youtube.com/v/zoPq639C4CA&amp;amp;hl=en&amp;amp;fs=1&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; allowfullscreen=&amp;quot;true&amp;quot; width=&amp;quot;300&amp;quot; height=&amp;quot;260&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===List of components===&lt;br /&gt;
The purpose is to explain the design very simply so that when it is explained in detail later, it will be easier to understand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Liberator consists of -&amp;lt;br&amp;gt; {{Wanted|Refine this list (perhaps based on [[The Liberator Master Bill of Materials]] ). This list should be the model for the [[CEB Press Build Instructions|build instructions]].}}&lt;br /&gt;
*A hopper at the top which you fill with loose dirt. This is made from welded steel. We made the hopper six feet wide, so it can hold a lot of dirt.&lt;br /&gt;
*Grate and grate shaker - the grate is at the bottom of the hopper. The grate shaker shakes it so that soil falls through into the compression chamber, while large stones and things like that are caught in the grate.&lt;br /&gt;
*A compression chamber where the bricks are actually pressed. This is a metal box with a nylon liner bolted on the inside. The liner gives the bricks a smoother finish. It will have to be replaced every hundred thousand bricks or so.&lt;br /&gt;
*A frame that bolts together for easy assembly and disassembly. &lt;br /&gt;
*Hydraulic cylinders - These are the muscles of the machine; they apply the pressure to the dirt. They are readily removable with pins. There are two hydraulic cylinders: &lt;br /&gt;
**The soil drawer - this moves from left to right and performs the dual function of loading soil into the compression chamber and ejecting blocks from the machine&lt;br /&gt;
**The main cylinder, which moves up and down and compresses the blocks&lt;br /&gt;
*Tractor mount - this is where an external hydraulic power source can be attached to the hydraulic cylinders.&lt;br /&gt;
*Pressure gauge&lt;br /&gt;
*Arduino board controls the timing and sequence of operations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;390px&amp;quot; heights=&amp;quot;350px&amp;quot; perrow=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
File:Machine-front.jpg&lt;br /&gt;
File:Machine-back.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Product Ecology===&lt;br /&gt;
*[[Rototiller]] to prepare the soil.&lt;br /&gt;
*Power source such as [[LifeTrac]].&lt;br /&gt;
*Tractor to load the hopper (optional)&lt;br /&gt;
&lt;br /&gt;
{{Wanted|Cost assessment of this. How much would an external hydraulic power source cost?}}&lt;br /&gt;
&lt;br /&gt;
===The Liberator in action===&lt;br /&gt;
{{Wanted|Demo Photos.}}&lt;br /&gt;
&lt;br /&gt;
{{Wanted|Video of building with it}}. Check youtube channel - [http://www.youtube.com/watch?v=C_9rQ61wi_o][http://www.youtube.com/watch?v=aN5o-mdO1CY][http://www.youtube.com/watch?v=y4cTyHedH58][http://www.youtube.com/watch?v=9OU5ulNgiqo][http://www.youtube.com/watch?v=ju_tAn7Mw5c] &lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Bricks per minute output&lt;br /&gt;
! 16&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Brick size&lt;br /&gt;
! 12x6x6 inches (30.5x15.3x10.2 cm)&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! People operating machine&lt;br /&gt;
! 1-2&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Power source&lt;br /&gt;
! Tractor hydraulics or any hydraulic power source with 6 gallon per minute capacity (22.71 liters per minute)&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Machine mounting&lt;br /&gt;
! tractor 3 point hitch or stand-alone foot&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Hydraulic pressure&lt;br /&gt;
! 2000psi / 137.90 bar&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Hydraulic cylinder&lt;br /&gt;
! 5 inch diameter, 19.6 inch area; 2.5 inch rod&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Pressing cylinder pressure&lt;br /&gt;
! 39,250 lb pushing force (~18 tons)&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Controls&lt;br /&gt;
! 2 spool, manual, hydraulic valve; automatic version forthcoming.&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Compressive strength of bricks&lt;br /&gt;
! 795psi (54.81 bar) using plain earth. &amp;lt;br&amp;gt;1200psi (82.74 bar) with 10% Portland cement.&amp;lt;br&amp;gt;Strong enough to build a 60 storey building [http://openfarmtech.org/weblog/2010/06/ceb-compressive-strength-test-results/]&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Structural cold rolled steel construction throughout&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Height: 6 foot 11 inches/ 210.82 cm &lt;br /&gt;
*Machine lifetime goals: 1 million bricks before repairs; liner may be replaced every 100,000 bricks&lt;br /&gt;
*Fabrication time requirement for optimized production: 3-5 days, about 20 hours of direct fabrication&lt;br /&gt;
*Manual fabrication tooling requirements: drill press, welder, acetylene torch&lt;br /&gt;
*Optimal fabrication tooling: XYZ table with torch, MIG welder, hoist&lt;br /&gt;
*Material costs: $1000-1350&lt;br /&gt;
*Cost for machine: you can build your own for $3-5k in parts, or [[Buy CEB Press|buy a readymade one here]] for $8k&lt;br /&gt;
&lt;br /&gt;
(All prices above are in US dollars.)&lt;br /&gt;
&lt;br /&gt;
==Advantages of The Liberator==&lt;br /&gt;
[[File:Liberator_V_commercial.JPG|center|700px]]&lt;br /&gt;
*&#039;&#039;&#039;Easy repair&#039;&#039;&#039;. The Liberator was designed to make maintenance as easy and infrequent as possible. The part that is most likely to need replacement is a rubber sheet from McMaster-Carr.  The press is designed for disassembly, so if repairs are needed, the cost should be minimal. And unlike commercial machines, you have all the blueprints and sources for parts here, so there should be no difficulty repairing it.&lt;br /&gt;
*Requires as little as 1 person to operate.  The only control required is turning the machine on, and from that point one simply loads soil and unloads bricks. There is an alternative manual version for $500 less &#039;&#039;&#039;(Is that correct?)&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Modular power source&#039;&#039;&#039;. The Liberator does not have its own power source; it is designed to be attached to an external power source. This is in line with the [[Key Features of the GVCS|OSE principle]] of modularity; different tools can be run from the same power source, allowing the same tool to fulfill many functions flexibly. The power source could be the hydraulics from [[LifeTrac]] (our tractor any flexible source of machanical power), [[Power Cube]], or any hydraulic power source with a capacity of 6 gallon per minute (22.71 liters per minute).&lt;br /&gt;
*&#039;&#039;&#039;Large hopper&#039;&#039;&#039;. Compared to other CEB presses on the market, The Liberator has a very large hopper. We found with earlier editions that a small hopper requires constant loading and this slows down the construction process.&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Press_Intro&amp;diff=26487</id>
		<title>CEB Press Intro</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Press_Intro&amp;diff=26487"/>
		<updated>2011-05-16T12:32:29Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: /* List of components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OrigLang}}&lt;br /&gt;
{{Category=CEB press}}&lt;br /&gt;
&lt;br /&gt;
{{ToolTemplate|ToolName=CEB Press}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;&amp;quot;Liberator&amp;quot; Compressed Earth Block Press&#039;&#039;&#039; is a machine that makes compressed earth blocks (&#039;&#039;&#039;CEB&#039;&#039;&#039;s). It takes earth/dirt/soil and squeezes it really hard to make solid blocks which can be used for building. Compressed earth blocks have many advantages as a building material: by making the building materials from the ground on the site, they eliminate the need to cart them in from elsewhere. This cuts down the costs and environmental impact of transport. Compressed earth blocks are very strong and insulate well against both heat and sound. This makes for a very energy-efficient building. Best of all, there is no charge for using dirt; it is literally a dirt-cheap way of building! See the wiki page on [[Compressed Earth Blocks]] and the [[:Category:CEB|CEB category]] for more details on building with CEBs.&lt;br /&gt;
&lt;br /&gt;
[[File:Machine.jpg|right|400px]]The Liberator has been fully designed and tested by the Open Ecology team. You can now follow the instructions to build your own, or contact us if you want to buy a kit or a finished machine.&lt;br /&gt;
&lt;br /&gt;
Building a machine yourself might seem scary, but every step of the process is fully documented and the OSE community is available on our [http://openfarmtech.org/forum/ discussion forums] if you need help, advice, or a little hand-holding.&lt;br /&gt;
&lt;br /&gt;
With the Liberator, two people can build a 6 foot high (1.83m) round wall, 20 feet (6.1m) in diameter, 1 foot (30cm) thick, in one 8 hour day - though construction time will vary somewhat depending on other factors: preparation time, what equipment is available (tractor etc.) and the quality of the soil. The bigger the block size, the faster a wall is errected.  And obviously, the bigger the block size, the heavier the block.  Blocks from &#039;&#039;The Liberator&#039;&#039; will average 25 pounds (11.3kg).&lt;br /&gt;
&lt;br /&gt;
The [[Torch Table|torch table]] will be used to automate the fabrication of the CEB machine, reducing fabrication time by an estimated 20 hours and thus reducing the cost of the final product.&lt;br /&gt;
&lt;br /&gt;
==How does it work?==&lt;br /&gt;
Loose dirt is loaded into the hopper at the top. This falls through to a chamber where a pair of hydraulic arms compress it and then eject it. This video shows how the machine works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;object width=&amp;quot;300&amp;quot; height=&amp;quot;270&amp;quot;&amp;gt;&amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.youtube.com/v/zoPq639C4CA&amp;amp;hl=en&amp;amp;fs=1&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;param name=&amp;quot;allowFullScreen&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;embed src=&amp;quot;http://www.youtube.com/v/zoPq639C4CA&amp;amp;hl=en&amp;amp;fs=1&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; allowscriptaccess=&amp;quot;always&amp;quot; allowfullscreen=&amp;quot;true&amp;quot; width=&amp;quot;300&amp;quot; height=&amp;quot;260&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===List of components===&lt;br /&gt;
The purpose is to explain the design very simply so that when it is explained in detail later, it will be easier to understand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Liberator consists of -&amp;lt;br&amp;gt; {{Wanted|Refine this list (perhaps based on [[The Liberator Master Bill of Materials]] ). This list should be the model for the [[CEB Press Build Instructions|build instructions]].}}&lt;br /&gt;
*A hopper at the top which you fill with loose dirt. This is made from welded steel. We made the hopper six feet wide, so it can hold a lot of dirt.&lt;br /&gt;
*Grate and grate shaker - the grate is at the bottom of the hopper. The grate shaker shakes it so that soil falls through into the compression chamber, while large stones and things like that are caught in the grate.&lt;br /&gt;
*A compression chamber where the bricks are actually pressed. This is a metal box with a nylon liner bolted on the inside. The liner gives the bricks a smoother finish. It will have to be replaced every hundred thousand bricks or so.&lt;br /&gt;
*A frame that bolts together for easy assembly and disassembly. &lt;br /&gt;
*Hydraulic cylinders - These are the muscles of the machine; they apply the pressure to the dirt. They are readily removable with pins. There are two hydraulic cylinders: &lt;br /&gt;
**The soil drawer - this moves from left to right and performs the dual function of loading soil into the compression chamber and ejecting blocks from the machine&lt;br /&gt;
**The main cylinder, which moves up and down and compresses the blocks&lt;br /&gt;
*Tractor mount - this is where an external hydraulic power source can be attached to the hydraulic cylinders.&lt;br /&gt;
*Pressure gauge&lt;br /&gt;
*Arduino board controls the timing and sequence of operations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;390px&amp;quot; heights=&amp;quot;350px&amp;quot; perrow=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
File:Machine-front.jpg&lt;br /&gt;
File:Machine-back.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Product Ecology===&lt;br /&gt;
*[[Rototiller]] to prepare the soil.&lt;br /&gt;
*Power source such as [[LifeTrac]].&lt;br /&gt;
*Tractor to load the hopper (optional)&lt;br /&gt;
&lt;br /&gt;
{{Wanted|Cost assessment of this. How much would an external hydraulic power source cost?}}&lt;br /&gt;
&lt;br /&gt;
===The Liberator in action===&lt;br /&gt;
{{Wanted|Demo Photos.}}&lt;br /&gt;
&lt;br /&gt;
{{Wanted|Video of building with it}}. Check youtube channel - [http://www.youtube.com/watch?v=C_9rQ61wi_o][http://www.youtube.com/watch?v=aN5o-mdO1CY][http://www.youtube.com/watch?v=y4cTyHedH58][http://www.youtube.com/watch?v=9OU5ulNgiqo][http://www.youtube.com/watch?v=ju_tAn7Mw5c] &lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Bricks per minute output&lt;br /&gt;
! 16&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Brick size&lt;br /&gt;
! 12x6x6 inches (30.5x15.3x10.2 cm)&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! People operating machine&lt;br /&gt;
! 1-2&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Power source&lt;br /&gt;
! Tractor hydraulics or any hydraulic power source with 6 gallon per minute capacity (22.71 liters per minute)&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Machine mounting&lt;br /&gt;
! tractor 3 point hitch or stand-alone foot&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Hydraulic pressure&lt;br /&gt;
! 2000psi / 137.90 bar&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Hydraulic cylinder&lt;br /&gt;
! 5 inch diameter, 19.6 inch area; 2.5 inch rod&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Pressing cylinder pressure&lt;br /&gt;
! 39,250 lb pushing force (~18 tons)&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Controls&lt;br /&gt;
! 2 spool, manual, hydraulic valve; automatic version forthcoming.&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Compressive strength of bricks&lt;br /&gt;
! 795psi (54.81 bar) using plain earth. &amp;lt;br&amp;gt;1200psi (82.74 bar) with 10% Portland cement.&amp;lt;br&amp;gt;Strong enough to build a 60 storey building [http://openfarmtech.org/weblog/2010/06/ceb-compressive-strength-test-results/]&lt;br /&gt;
&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Structural cold rolled steel construction throughout&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Height: 6 foot 11 inches/ 210.82 cm &lt;br /&gt;
*Machine lifetime goals: 1 million bricks before repairs; liner may be replaced every 100,000 bricks&lt;br /&gt;
*Fabrication time requirement for optimized production: 3-5 days, about 20 hours of direct fabrication&lt;br /&gt;
*Manual fabrication tooling requirements: drill press, welder, acetylene torch&lt;br /&gt;
*Optimal fabrication tooling: XYZ table with torch, MIG welder, hoist&lt;br /&gt;
*Material costs: $1000-1350&lt;br /&gt;
*Cost for machine: you can build your own for $3-5k in parts, or [[Buy CEB Press|buy a readymade one here]] for $8k&lt;br /&gt;
&lt;br /&gt;
==Advantages of The Liberator==&lt;br /&gt;
[[File:Liberator_V_commercial.JPG|center|700px]]&lt;br /&gt;
*&#039;&#039;&#039;Easy repair&#039;&#039;&#039;. The Liberator was designed to make maintenance as easy and infrequent as possible. The part that is most likely to need replacement is a rubber sheet from McMaster-Carr.  The press is designed for disassembly, so if repairs are needed, the cost should be minimal. And unlike commercial machines, you have all the blueprints and sources for parts here, so there should be no difficulty repairing it.&lt;br /&gt;
*Requires as little as 1 person to operate.  The only control required is turning the machine on, and from that point one simply loads soil and unloads bricks. There is an alternative manual version for $500 less &#039;&#039;&#039;(Is that correct?)&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Modular power source&#039;&#039;&#039;. The Liberator does not have its own power source; it is designed to be attached to an external power source. This is in line with the [[Key Features of the GVCS|OSE principle]] of modularity; different tools can be run from the same power source, allowing the same tool to fulfill many functions flexibly. The power source could be the hydraulics from [[LifeTrac]] (our tractor any flexible source of machanical power), [[Power Cube]], or any hydraulic power source with a capacity of 6 gallon per minute (22.71 liters per minute).&lt;br /&gt;
*&#039;&#039;&#039;Large hopper&#039;&#039;&#039;. Compared to other CEB presses on the market, The Liberator has a very large hopper. We found with earlier editions that a small hopper requires constant loading and this slows down the construction process.&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Control_Code&amp;diff=26235</id>
		<title>CEB Control Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Control_Code&amp;diff=26235"/>
		<updated>2011-05-13T17:19:53Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category=CEB press software}}&lt;br /&gt;
&lt;br /&gt;
== Code has been moved to GitHub: https://github.com/OSE/ceb-controller ==&lt;br /&gt;
&lt;br /&gt;
=2 Sensor Control Code=&lt;br /&gt;
&lt;br /&gt;
The code as of 4.22.10 is shown below. This code operates with two position-sensor-magnets, where the concept was to avoid using 3 magnets for simplicity. This code works by calibrating timing between the initial and mid position of a given sensor, such that the completion of the stroke is attained by timing. It turns out in practice that at high machine speed, over 15 gpm, the timing is not robust and errors on the order of up to 1/2&amp;quot; in positioning may occur sporadically. Because of this reason, the code was updated to 3 position-sensor-magnets for each cylinder, such that timing is avoided.&lt;br /&gt;
&lt;br /&gt;
//Notes: In every WHILE loop, shut off solenoids explicitly after &lt;br /&gt;
//escaping from the loop. Orientation is defined by machine user&lt;br /&gt;
//facing the control panel. 2 magnets (sensor actuators) are used &lt;br /&gt;
//for main cylinder, 4 magnets for soil drawer, and 2 magnets are&lt;br /&gt;
//are used for soil grate shaker. Copyright April 2010, Creative &lt;br /&gt;
//Commons CC-BY-SA-compatible OSE License, by Marcin Jakubowski,&lt;br /&gt;
//Ph.D., for OSE. This code and other documentation is available &lt;br /&gt;
//at the Open+Pario project management site under the CEB Project, &lt;br /&gt;
//under Documents - Liberator Beta 2.0 Control Code, &lt;br /&gt;
//http://openpario.net/projects/OSE?&lt;br /&gt;
&lt;br /&gt;
=Code - Liberator Beta v2.0=&lt;br /&gt;
//Notes: In every WHILE loop, shut off solenoids explicitly after &lt;br /&gt;
//escaping from the loop. Orientation is defined by machine user&lt;br /&gt;
//facing the control panel. 2 magnets (sensor actuators) are used &lt;br /&gt;
//for main cylinder, 4 magnets for soil drawer, and 2 magnets are&lt;br /&gt;
//are used for soil grate shaker. Copyright April 2010, Creative &lt;br /&gt;
//Commons CC-BY-SA-compatible OSE License, by Marcin Jakubowski,&lt;br /&gt;
//Ph.D., for OSE. This code and other documentation is available &lt;br /&gt;
//at the Open+Pario project management site under the CEB Project, &lt;br /&gt;
//under Documents - Liberator Beta 2.0 Control Code, &lt;br /&gt;
//http://openpario.net/projects/OSE?&lt;br /&gt;
&lt;br /&gt;
int val;&lt;br /&gt;
int val2;&lt;br /&gt;
unsigned long startcounter;&lt;br /&gt;
unsigned long counter;&lt;br /&gt;
unsigned long startcounter2;&lt;br /&gt;
unsigned long counter2;&lt;br /&gt;
&lt;br /&gt;
//0. Initialization.&lt;br /&gt;
&lt;br /&gt;
void setup(){&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  pinMode(19,INPUT);//Digital 19 is Analog 5.&lt;br /&gt;
  pinMode(18,INPUT);//Digital 18 is Analog 4.&lt;br /&gt;
  pinMode(3,OUTPUT);//Pins 3 and 5 are up and down motion,&lt;br /&gt;
  pinMode(6,OUTPUT);//respectively.&lt;br /&gt;
  pinMode(9,OUTPUT);//Pins 9 and 10 are right and left.&lt;br /&gt;
  pinMode(10,OUTPUT);&lt;br /&gt;
  counter=0;&lt;br /&gt;
  counter2=0;&lt;br /&gt;
  val=analogRead(5);//Read the sensor.\&lt;br /&gt;
  val2=analogRead(4);&lt;br /&gt;
  Serial.println(&amp;quot;Main cylinder state:&amp;quot;);&lt;br /&gt;
  Serial.println(val);&lt;br /&gt;
  Serial.println(&amp;quot;Drawer cylinder state:&amp;quot;);&lt;br /&gt;
  Serial.println(val2);&lt;br /&gt;
&lt;br /&gt;
//1. Move big cylinder down all way to identify bottom point (+).&lt;br /&gt;
&lt;br /&gt;
while (val&amp;lt;500){&lt;br /&gt;
  digitalWrite(3, LOW);//Move main cylinder down.&lt;br /&gt;
  digitalWrite(6, HIGH);//Control solenoids in pairs to keep track.&lt;br /&gt;
  val=analogRead(5);&lt;br /&gt;
  Serial.println(&amp;quot;moving down&amp;quot;);&lt;br /&gt;
  Serial.println(val);&lt;br /&gt;
//  delay(500);&lt;br /&gt;
}&lt;br /&gt;
  digitalWrite(3, LOW);//Turn solenoids off.&lt;br /&gt;
  digitalWrite(6, LOW);&lt;br /&gt;
  &lt;br /&gt;
Serial.println(&amp;quot;Waiting for approval...&amp;quot;);&lt;br /&gt;
//  delay(4000);&lt;br /&gt;
&lt;br /&gt;
//2. Move drawer left - all way to brick ejection position.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  val2=analogRead(4);&lt;br /&gt;
  Serial.println(&amp;quot;Drawer State reading:&amp;quot;);&lt;br /&gt;
  Serial.println(val2);&lt;br /&gt;
//  Serial.println(&amp;quot;Waiting 5 seconds for next step...&amp;quot;);&lt;br /&gt;
//  delay(5000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  while(val2 &amp;lt; 500){&lt;br /&gt;
    digitalWrite(9, LOW);//Move left.&lt;br /&gt;
    digitalWrite(10, HIGH);//Solenoids are controlled in pairs.&lt;br /&gt;
    val2=analogRead(4);&lt;br /&gt;
    Serial.println(&amp;quot;Moving left&amp;quot;);&lt;br /&gt;
    Serial.println(val2);&lt;br /&gt;
    //Need to keep reading state of sensor.&lt;br /&gt;
    };//stop upon reaching left (magnet at LEFT induces + state)&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(9, LOW);&lt;br /&gt;
  digitalWrite(10, LOW);&lt;br /&gt;
  val2=analogRead(4);&lt;br /&gt;
  Serial.println(&amp;quot;Finished left. Drawer state:&amp;quot;);&lt;br /&gt;
  Serial.println(val2);&lt;br /&gt;
//    Serial.println(&amp;quot;WAITING FOR APPROVAL...&amp;quot;);&lt;br /&gt;
//  delay(4000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//3. Calibrate main cylinder/eject.&lt;br /&gt;
&lt;br /&gt;
  val=analogRead(5);&lt;br /&gt;
  startcounter=millis();&lt;br /&gt;
 &lt;br /&gt;
  while(val &amp;gt; 500){&lt;br /&gt;
    digitalWrite(3, HIGH);//Start upward motion.&lt;br /&gt;
    digitalWrite(6, LOW);&lt;br /&gt;
    Serial.println(&amp;quot;Time during motion (ms):&amp;quot;);&lt;br /&gt;
    Serial.println(millis()-startcounter);  &lt;br /&gt;
    val=analogRead(5); &lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
    digitalWrite(3, LOW);//stop motion&lt;br /&gt;
    digitalWrite(6, LOW);&lt;br /&gt;
    counter=millis()-startcounter;&lt;br /&gt;
    Serial.println(&amp;quot;Time after leaving loop:&amp;quot;);&lt;br /&gt;
    Serial.println(counter);&lt;br /&gt;
    val=analogRead(5);&lt;br /&gt;
    Serial.println(&amp;quot;Finished calibrations. Main cylinder state:&amp;quot;);&lt;br /&gt;
    Serial.println(val);&lt;br /&gt;
    Serial.println(&amp;quot;Waiting for approval.&amp;quot;);&lt;br /&gt;
 //   delay(40000);&lt;br /&gt;
&lt;br /&gt;
//4. Calibrate drawer&lt;br /&gt;
  val=analogRead(4);&lt;br /&gt;
  startcounter2=millis();&lt;br /&gt;
 &lt;br /&gt;
  while(val2 &amp;gt; 500){&lt;br /&gt;
    digitalWrite(9, HIGH);//Start upward motion.&lt;br /&gt;
    digitalWrite(10, LOW);&lt;br /&gt;
    Serial.println(&amp;quot;Time during motion (ms):&amp;quot;);&lt;br /&gt;
    Serial.println(millis()-startcounter2);  &lt;br /&gt;
    val2=analogRead(4); &lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
//    digitalWrite(9, LOW);//stop motion&lt;br /&gt;
//    digitalWrite(10, LOW);&lt;br /&gt;
    counter2=millis()-startcounter2;&lt;br /&gt;
    Serial.println(&amp;quot;Time after leaving loop:&amp;quot;);&lt;br /&gt;
    Serial.println(counter2);&lt;br /&gt;
    val=analogRead(4);&lt;br /&gt;
    Serial.println(&amp;quot;Finished calibration 2. Drawer cylinder state:&amp;quot;);&lt;br /&gt;
    Serial.println(val2);&lt;br /&gt;
&lt;br /&gt;
//5. Continue moving for the calibrated duration&lt;br /&gt;
//  digitalWrite(9, HIGH);&lt;br /&gt;
//  digitalWrite(10, LOW);&lt;br /&gt;
  delay(counter2);&lt;br /&gt;
  digitalWrite(9, LOW);&lt;br /&gt;
  digitalWrite(10, LOW);&lt;br /&gt;
    Serial.println(&amp;quot;Moved into soil loading position.&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
} &lt;br /&gt;
//**************************** END OF INITIALIZATION&lt;br /&gt;
&lt;br /&gt;
void loop(){&lt;br /&gt;
&lt;br /&gt;
//8. Lower main cylinder.&lt;br /&gt;
  val=analogRead(5);&lt;br /&gt;
  Serial.println(&amp;quot;Main cylinder state:&amp;quot;);&lt;br /&gt;
  Serial.println(val);&lt;br /&gt;
  while(val &amp;lt; 500){;//Sensor is low at start.&lt;br /&gt;
    digitalWrite(3, LOW);//Move main cylinder down.&lt;br /&gt;
    digitalWrite(6, HIGH);//Control solenoids in pairs to keep track.&lt;br /&gt;
    val=analogRead(5);&lt;br /&gt;
    Serial.println(&amp;quot;moving down&amp;quot;);&lt;br /&gt;
    Serial.println(val);&lt;br /&gt;
    };//stop upon reaching bottom (magnet at bottom induces high state)&lt;br /&gt;
  digitalWrite(3,LOW);&lt;br /&gt;
  digitalWrite(6,LOW);&lt;br /&gt;
  &lt;br /&gt;
//9. Close compression chamber. Needs timing.&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(9, LOW);//Move left.&lt;br /&gt;
    digitalWrite(10, HIGH);//Solenoids are controlled in pairs.&lt;br /&gt;
        Serial.println(&amp;quot;Moving left&amp;quot;);&lt;br /&gt;
    delay(counter2*.84);//.75 is the exact factor&lt;br /&gt;
    &lt;br /&gt;
    digitalWrite(9, LOW);//Stopping by timing only.&lt;br /&gt;
    digitalWrite(10, LOW);&lt;br /&gt;
&lt;br /&gt;
    Serial.println(&amp;quot;Finished left. Drawer state:&amp;quot;);&lt;br /&gt;
  Serial.println(val2);&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
//10. Begin pressing cycle with main cylinder, and then release &lt;br /&gt;
// pressure by moving 1/2 sec down.&lt;br /&gt;
  digitalWrite(3, HIGH);// Start cycle, and time motion.&lt;br /&gt;
  digitalWrite(6, LOW);// Start from bottom cylinder position.&lt;br /&gt;
  delay (counter/2);//Go up half way. Time counted in milliseconds.&lt;br /&gt;
  Serial.println(&amp;quot;PRESSING...UP TO TIME OF (ms):&amp;quot;);&lt;br /&gt;
  Serial.println(counter/2);&lt;br /&gt;
  digitalWrite(3, LOW);//  Stop motion.&lt;br /&gt;
  digitalWrite(6, LOW);&lt;br /&gt;
  val=analogRead(5);&lt;br /&gt;
  Serial.println(&amp;quot;Main cylinder State:&amp;quot;);&lt;br /&gt;
  Serial.println(val);&lt;br /&gt;
&lt;br /&gt;
//******************************************************   RELEASE CYCLE&lt;br /&gt;
  digitalWrite(3, LOW);//Release, by time.&lt;br /&gt;
  digitalWrite(6, HIGH);//&lt;br /&gt;
  delay (counter/100);&lt;br /&gt;
  Serial.println(&amp;quot;Releasing...&amp;quot;);  &lt;br /&gt;
  digitalWrite(3, LOW);//  Stop motion.&lt;br /&gt;
  digitalWrite(6, LOW);&lt;br /&gt;
  val=analogRead(5);&lt;br /&gt;
  Serial.println(&amp;quot;State:&amp;quot;);&lt;br /&gt;
  Serial.println(val);&lt;br /&gt;
  &lt;br /&gt;
//11. Open compression chamber by moving drawer left.&lt;br /&gt;
&lt;br /&gt;
  val2=analogRead(4);&lt;br /&gt;
  Serial.println(&amp;quot;Drawer State reading:&amp;quot;);&lt;br /&gt;
  Serial.println(val2);&lt;br /&gt;
//  Serial.println(&amp;quot;Waiting 5 seconds for next step...&amp;quot;);&lt;br /&gt;
//  delay(5000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  while(val2 &amp;lt; 500){&lt;br /&gt;
    digitalWrite(9, LOW);//Move left.&lt;br /&gt;
    digitalWrite(10, HIGH);//Solenoids are controlled in pairs.&lt;br /&gt;
    val2=analogRead(4);&lt;br /&gt;
    Serial.println(&amp;quot;Moving left&amp;quot;);&lt;br /&gt;
    Serial.println(val2);&lt;br /&gt;
    //Need to keep reading state of sensor.&lt;br /&gt;
    };//stop upon reaching left (magnet at LEFT induces + state)&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(9, LOW);&lt;br /&gt;
  digitalWrite(10, LOW);&lt;br /&gt;
  val2=analogRead(4);&lt;br /&gt;
  Serial.println(&amp;quot;Finished left. Drawer state:&amp;quot;);&lt;br /&gt;
  Serial.println(val2);&lt;br /&gt;
  &lt;br /&gt;
//12. Push brick up.&lt;br /&gt;
&lt;br /&gt;
  val=analogRead(5);&lt;br /&gt;
  while (val &amp;gt; 500){;//Complete motion up to sensor.&lt;br /&gt;
    digitalWrite(3, HIGH);//Complete up motion.&lt;br /&gt;
    digitalWrite(6, LOW); &lt;br /&gt;
    val=analogRead(5);&lt;br /&gt;
    Serial.println(&amp;quot;Pushing brick up...&amp;quot;);  &lt;br /&gt;
    Serial.println(&amp;quot;Main cylinder State:&amp;quot;);&lt;br /&gt;
    Serial.println(val);  &lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(3, LOW);&lt;br /&gt;
  digitalWrite(6, LOW);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//13. Eject brick from machine by moving drawer to the right.&lt;br /&gt;
&lt;br /&gt;
  val=analogRead(4);&lt;br /&gt;
  startcounter2=millis();&lt;br /&gt;
 &lt;br /&gt;
  while(val2 &amp;gt; 500){&lt;br /&gt;
    digitalWrite(9, HIGH);//Start upward motion.&lt;br /&gt;
    digitalWrite(10, LOW);&lt;br /&gt;
    Serial.println(&amp;quot;Time during motion (ms):&amp;quot;);&lt;br /&gt;
    Serial.println(millis()-startcounter2);  &lt;br /&gt;
    val2=analogRead(4); &lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
//    digitalWrite(9, LOW);//stop motion&lt;br /&gt;
//    digitalWrite(10, LOW);&lt;br /&gt;
    counter2=millis()-startcounter2;&lt;br /&gt;
    Serial.println(&amp;quot;Time after leaving loop:&amp;quot;);&lt;br /&gt;
    Serial.println(counter2);&lt;br /&gt;
    val=analogRead(4);&lt;br /&gt;
    Serial.println(&amp;quot;Finished calibration 2. Drawer cylinder state:&amp;quot;);&lt;br /&gt;
    Serial.println(val2);&lt;br /&gt;
&lt;br /&gt;
//14. Continue moving for the calibrated duration (into loading pos.)&lt;br /&gt;
//  digitalWrite(9, HIGH);&lt;br /&gt;
//  digitalWrite(10, LOW);&lt;br /&gt;
  delay(counter2);&lt;br /&gt;
  digitalWrite(9, LOW);&lt;br /&gt;
  digitalWrite(10, LOW);&lt;br /&gt;
    Serial.println(&amp;quot;Moved into soil loading position.&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Three Sensor Control Code=&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
===Secondary Cylinder===&lt;br /&gt;
This code is for the secondary (drawer) cylinder. This code may be used for calibration or troubleshooting purposes. This code zeroes the drawer cylinder by moving it to the far left (direction is determined by user facing the machine control panel). This code cycles between the 3 positions. You may use this code for determining positioning replicability at various speeds of the machine.&lt;br /&gt;
&lt;br /&gt;
Correct zeroing occurs in most cases. If the machine was turned off in the far-right-position, this code does not work properly. This is an artifact of the control mechanism, and cannot be avoided easily. The user needs to reset the machine if this happens. To determine if the machine is zeroed properly, observe the position of the drawer during the initial 5 second rest (after zeroing occurred). If the machine did not reset properly, reset it manually via the reset button on the Arduino shield or by cycling the power to the controller.&lt;br /&gt;
&lt;br /&gt;
Beginning of code follows.&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
//Notes: In every WHILE loop, shut off solenoids explicitly after &lt;br /&gt;
//escaping from the loop. Orientation is defined by machine user&lt;br /&gt;
//facing the control panel. 3 magnets (sensor actuators) are used &lt;br /&gt;
//for main cylinder, 3 magnets for soil drawer, and 2 magnets are&lt;br /&gt;
//are used for soil grate shaker. Copyright April 2010, Creative &lt;br /&gt;
//Commons CC-BY-SA-compatible Open Source Ecology (OSE) License,&lt;br /&gt;
//by Marcin Jakubowski, Ph.D., for OSE. This code and other &lt;br /&gt;
//documentation is available at the Open+Pario project management &lt;br /&gt;
//site under the CEB Project, under Documents - Liberator Beta 2.0 &lt;br /&gt;
//Control Code, http://openpario.net/projects/OSE&lt;br /&gt;
&lt;br /&gt;
int val;&lt;br /&gt;
int val2;&lt;br /&gt;
int val3;&lt;br /&gt;
&lt;br /&gt;
unsigned long startcounter;&lt;br /&gt;
unsigned long counter;&lt;br /&gt;
unsigned long startcounter2;&lt;br /&gt;
unsigned long counter2;&lt;br /&gt;
&lt;br /&gt;
//0. Initialization.&lt;br /&gt;
&lt;br /&gt;
void setup(){&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  pinMode(19,INPUT);//Digital 19 is Analog 5.&lt;br /&gt;
  pinMode(18,INPUT);//Digital 18 is Analog 4.&lt;br /&gt;
  pinMode(17,INPUT);//Digital 17 is Analog 3.&lt;br /&gt;
  pinMode(3,OUTPUT);//Pins 3 and 6 are up and down motion,&lt;br /&gt;
  pinMode(6,OUTPUT);//respectively.&lt;br /&gt;
  pinMode(9,OUTPUT);//Pins 9 and 10 are right and left,&lt;br /&gt;
  pinMode(10,OUTPUT);//respectively.&lt;br /&gt;
  pinMode(11,OUTPUT);//Hopper shaker motor.&lt;br /&gt;
  counter=0;&lt;br /&gt;
  counter2=0;&lt;br /&gt;
  val=analogRead(5);//Read the sensor.\&lt;br /&gt;
  val2=analogRead(4);&lt;br /&gt;
  Serial.println(&amp;quot;Main cylinder state:&amp;quot;);&lt;br /&gt;
  Serial.println(val);&lt;br /&gt;
  Serial.println(&amp;quot;Drawer cylinder state:&amp;quot;);&lt;br /&gt;
  Serial.println(val2);&lt;br /&gt;
&lt;br /&gt;
//1. Move sec cylinder Left 1/2 sec&lt;br /&gt;
digitalWrite(10,HIGH);&lt;br /&gt;
delay(400);&lt;br /&gt;
digitalWrite(10,LOW);&lt;br /&gt;
//2. If +, then stop, else keep moving left until +.&lt;br /&gt;
while (analogRead(4) &amp;lt; 500){&lt;br /&gt;
  digitalWrite(10, HIGH);&lt;br /&gt;
}&lt;br /&gt;
digitalWrite(10, LOW);&lt;br /&gt;
//3. Wait 6 seconds. If stopped and not zeroed, turn controller on and off.&lt;br /&gt;
delay(6000);&lt;br /&gt;
}&lt;br /&gt;
//**************************** END OF INITIALIZATION&lt;br /&gt;
&lt;br /&gt;
void loop(){&lt;br /&gt;
&lt;br /&gt;
//L1. Move right to -&lt;br /&gt;
while(analogRead(4) &amp;gt; 500){&lt;br /&gt;
  digitalWrite(9, HIGH);//Move right.&lt;br /&gt;
  }&lt;br /&gt;
//L2. Continue moving right to +. Wait a second.&lt;br /&gt;
while(analogRead(4) &amp;lt; 500){&lt;br /&gt;
}&lt;br /&gt;
digitalWrite(9, LOW);&lt;br /&gt;
delay(1000);&lt;br /&gt;
//L3. Move left till -. Wait a second.&lt;br /&gt;
digitalWrite(10, HIGH);&lt;br /&gt;
while (analogRead(4) &amp;gt;500){&lt;br /&gt;
  }&lt;br /&gt;
digitalWrite(10, LOW);&lt;br /&gt;
delay(1000);&lt;br /&gt;
//L4. Move left till +. Wait a second.&lt;br /&gt;
digitalWrite(10, HIGH);&lt;br /&gt;
while (analogRead(4) &amp;lt; 500){&lt;br /&gt;
  }&lt;br /&gt;
digitalWrite(10, LOW);&lt;br /&gt;
delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}//final loop closure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Main Cylinder===&lt;br /&gt;
&lt;br /&gt;
Note: Position-sensor-magnets induce high and low latch-states in the Hall effect sensor. The magnet positions are ordered: (1), high at the bottom, (2), low in the middle, and (3), high at top. The states are read by the Arduino controller analog inputs. The bottom, mid, and top positions are determined by the magnet locations.&lt;br /&gt;
&lt;br /&gt;
The testing code for the main cylinder actives the following procedure:&lt;br /&gt;
#Moves main cylinder down for 1/2 second, and keeps moving down to the bottom if it&#039;s not at the bottom after the 1/2 second.&lt;br /&gt;
#Waits 6 seconds for user-determination of correct zeroing procedure. User cycles power to controller if not zeroed properly at this time.&lt;br /&gt;
#Calibrates the timing of the main cylinder for the purpose of determining the duration of the &#039;&#039;release stroke&#039;&#039;. To do this, code moves the main cylinder all the way to the top, and then measures the time to return all the way to the bottom. This calibration depends on the hydraulic fluid flow, hence it is needed for efficient operation under different power source conditions.&lt;br /&gt;
#Repetitive cycling begins:&lt;br /&gt;
##Move up to middle, stop.&lt;br /&gt;
##Release pressure. \&lt;br /&gt;
##Move up to top, stop.&lt;br /&gt;
##Move down to middle, stop.&lt;br /&gt;
##Move down to bottom, stop.&lt;br /&gt;
&lt;br /&gt;
=Control Code with Simultaneous Cylinder Motion=&lt;br /&gt;
&lt;br /&gt;
Code annotation for testv3 code - full code, including simultaneous cylinder motion, for the Liberator Beta v2.0 open source CEB press.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
#Initial or zero position for main cylinder- bottom of stroke.&lt;br /&gt;
#Initial or zero position for main cylinder - leftmost position&lt;br /&gt;
#Left and right - as observed with user facing the control box.&lt;br /&gt;
#Bottom and top - with respect to the ground.&lt;br /&gt;
#Terminal position - Top for main cylinder, rightmost for secondary cylinder.&lt;br /&gt;
#C2 - secondary cylinder.&lt;br /&gt;
#C1 - main cylinder.&lt;br /&gt;
&lt;br /&gt;
==Initialization==&lt;br /&gt;
&lt;br /&gt;
Move main and secondary cylinder down 1/2 second. Allows one to assess correct zeroing more quickly (in case both cylinders are in &#039;initialization failure&#039; position, defined as the position of each respective cylinder in which initialization fails.&lt;br /&gt;
&lt;br /&gt;
Zero the cylinders (allows you to determine position, otherwise one has to compensate with further motion for not knowing this information.&lt;br /&gt;
&lt;br /&gt;
Eject soil from chamber with main cylinder, push soil out of way with secondary cylinder. This avoids potential problems asssociated with unbalanced stress on press foot.&lt;br /&gt;
&lt;br /&gt;
The result of initialization is that the secondary cylinder is in the initial position, and main cylinder is the terminal position.&lt;br /&gt;
&lt;br /&gt;
==Loop==&lt;br /&gt;
&lt;br /&gt;
In order to effect simultaneous cylinder motion, we divide the motion into segments as a general strategy. Each segment consists of the span between two position-sensor-magnets, with the beginning at one sensor and the end at the next sensor. There are 3 magnets for each cylinder, ordered as +, -, and +, where the + or - corresponds to the state that the magnet induces in the sensor circuit. This means that the initial and terminal positions are defined as +, and the middle position is defined as -.&lt;br /&gt;
&lt;br /&gt;
The simultaneous cylinder motion is framed by the motion of the secondary cylinder. In practical terms, this means that it is determined within a &#039;&#039;while loop&#039;&#039; for the secondary cylinder. Within this &#039;&#039;while loop&#039;&#039;, the code determines the location of the main cylinder.&lt;br /&gt;
&lt;br /&gt;
The motion is continuous through 2 magnets for both the main and secondary cylinders. To determine the terminal position, the cylinders go through a toggle at the midpoint of motion. This toggle is set high (toggle = 1), so that: &#039;&#039;the toggle combined with the cylinder detector reaching + determines the terminal stroke position&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
The code consists essentially of these steps:&lt;br /&gt;
&lt;br /&gt;
INITIALIZATION&lt;br /&gt;
&lt;br /&gt;
#Move main and secondary cylinder down 1/2 second.&lt;br /&gt;
#Zero secondary and main cylinders.&lt;br /&gt;
#Eject soil from chamber with main cylinder.&lt;br /&gt;
#With secondary cylinder - push soil out of way, stop in closed compression chamber position, and re-initialize.&lt;br /&gt;
#Calibrate main cylinder (move from top to bottom and obtain time).&lt;br /&gt;
#Move main cylinder to terminal position.&lt;br /&gt;
&lt;br /&gt;
At this point, secondary cylinder is in initial position and main cylinder is in terminal position.&lt;br /&gt;
&lt;br /&gt;
LOOP&lt;br /&gt;
&lt;br /&gt;
#Move C1 right.&lt;br /&gt;
#Wait 0.2 seconds&lt;br /&gt;
#Move C2 down. This marks the beginning of simultaneous motion.&lt;br /&gt;
#Detect C2. Set toggle2 to 0.&lt;br /&gt;
#While C2 is high (motion from left to middle):&lt;br /&gt;
        #Detect C1 and C2.&lt;br /&gt;
        #If C1 goes low, then toggle1=1&lt;br /&gt;
        #If C1 is toggled and goes high, stop C1.&lt;br /&gt;
#While C2 is low (motion from middle to right):&lt;br /&gt;
        #Detect C1 and C2.&lt;br /&gt;
        #If C1 goes low, then toggle1=1&lt;br /&gt;
        #If C1 is toggled and goes high, stop C1. &lt;br /&gt;
#Stop C2&lt;br /&gt;
#C1 may not be toggled (may still be moving). &lt;br /&gt;
        #Use a for loop that escapes upon toggle and terminal position:&lt;br /&gt;
                #for i=1 to 2&lt;br /&gt;
                    #read state of C1&lt;br /&gt;
                    #if state is low then toggle and set i to 1&lt;br /&gt;
                    #if it&#039;s toggled and state is high then i=2&lt;br /&gt;
                                          (escapes loop)&lt;br /&gt;
#Stop C1. This ends the soil loading cycle&lt;br /&gt;
#Wait 0.2 seconds.&lt;br /&gt;
#Close drawer by moving left.&lt;br /&gt;
#Press.&lt;br /&gt;
#Release.&lt;br /&gt;
#Open drawer.&lt;br /&gt;
#Eject. This completes cycle.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
See [[ceb control code 5.15.10]]&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Controller_Box/Source_Code&amp;diff=26234</id>
		<title>CEB Press/Manufacturing Instructions/Controller Box/Source Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Controller_Box/Source_Code&amp;diff=26234"/>
		<updated>2011-05-13T17:15:28Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category=CEB press}}&lt;br /&gt;
&lt;br /&gt;
* [[/v1.0]]&lt;br /&gt;
* [[/v1.01]]&lt;br /&gt;
* [[/v1.01 Annotated]]&lt;br /&gt;
&lt;br /&gt;
{{Wanted|We should create a project for this and move the source code to https://github.com/OSE/ceb-controller}}&lt;br /&gt;
&lt;br /&gt;
== Code has been moved to GitHub. (Nathan B) ==&lt;br /&gt;
&lt;br /&gt;
[[Category: CEB press software]]&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Controller_Box/Source_Code&amp;diff=26233</id>
		<title>CEB Press/Manufacturing Instructions/Controller Box/Source Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Controller_Box/Source_Code&amp;diff=26233"/>
		<updated>2011-05-13T17:14:49Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category=CEB press}}&lt;br /&gt;
&lt;br /&gt;
* [[/v1.0]]&lt;br /&gt;
* [[/v1.01]]&lt;br /&gt;
* [[/v1.01 Annotated]]&lt;br /&gt;
&lt;br /&gt;
{{Wanted|We should create a project for this and move the source code to https://github.com/OSE/ceb-controller}}&lt;br /&gt;
&lt;br /&gt;
{{Done|Code has been moved to GitHub. (Nathan B)}}&lt;br /&gt;
&lt;br /&gt;
[[Category: CEB press software]]&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Control_Source_Code_v1.01_Annotated&amp;diff=26232</id>
		<title>CEB Press/Manufacturing Instructions/Control Source Code v1.01 Annotated</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Control_Source_Code_v1.01_Annotated&amp;diff=26232"/>
		<updated>2011-05-13T17:14:02Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category=CEB press}}&lt;br /&gt;
&lt;br /&gt;
== Code has moved to GitHub: https://github.com/OSE/ceb-controller ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;// State Machine for CEB Press&lt;br /&gt;
// Open Source Ecology / Factor-E Farm&lt;br /&gt;
// Benjamin Gatti - 10-5-2009&lt;br /&gt;
// This code is provided free to use and modify under the GPL&lt;br /&gt;
&lt;br /&gt;
// Constants Defined&lt;br /&gt;
int State = 0;&lt;br /&gt;
float TFactor = .6;&lt;br /&gt;
boolean Run = 1;&lt;br /&gt;
BaseTime = 4000&lt;br /&gt;
// End of Constants Defined&lt;br /&gt;
&lt;br /&gt;
// Definition of Positions and Sequence Timing&lt;br /&gt;
#define STATEMIN  1&lt;br /&gt;
#define STATEDOWN  1 //Drop the press all the way down&lt;br /&gt;
int TD = 3000;&lt;br /&gt;
#define STATELOAD  2 //Wait/Jiggle for chamber to fill&lt;br /&gt;
int TL = 250;&lt;br /&gt;
#define STATECLOSE  3 //Move Drawer to closed position - (Move for TC millis)&lt;br /&gt;
int TC = 660;&lt;br /&gt;
#define STATEPRESS  4  //Raise the press&lt;br /&gt;
int TP = 5000;&lt;br /&gt;
#define STATERELEASE  5  //Drop the Press slightly (TR millis)&lt;br /&gt;
int TR = 120;&lt;br /&gt;
#define STATEOUT  6  //Move Drawer to open position - fully Out&lt;br /&gt;
int TO = 2000;&lt;br /&gt;
#define STATEUP  7  //Raise the press all the way Up - lifting the Brick above the eject trough&lt;br /&gt;
int TU = 600;&lt;br /&gt;
#define STATEEJECT  8  //Move Drawer - full In&lt;br /&gt;
int TE = 500;&lt;br /&gt;
#define STATEMAX  STATEEJECT&lt;br /&gt;
//End of Definition of Positions and Sequence Timing&lt;br /&gt;
&lt;br /&gt;
// Definition of Output Pin Assignment on Arduino&lt;br /&gt;
int solPressUp = 5;&lt;br /&gt;
int solPressDown = 6;&lt;br /&gt;
int solDrawerIn = 10;&lt;br /&gt;
int solDrawerOut = 11;&lt;br /&gt;
int Timer = 0; //clock for current state&lt;br /&gt;
int ledPin = 13;                // LED connected to digital pin 13&lt;br /&gt;
// End of Definition of Output Pin Assignment on Arduino&lt;br /&gt;
&lt;br /&gt;
// Setup &lt;br /&gt;
void setup()                    // run once, when the sketch starts&lt;br /&gt;
{&lt;br /&gt;
  shutdown();&lt;br /&gt;
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
 &lt;br /&gt;
  pinMode(solPressUp, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
  pinMode(solPressDown, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
  pinMode(solDrawerIn, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
  pinMode(solDrawerOut, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
&lt;br /&gt;
  Run = 1; &lt;br /&gt;
  Serial.begin (19200);&lt;br /&gt;
  Serial.println(&amp;quot;Started&amp;quot;);&lt;br /&gt;
  State = STATEMIN;&lt;br /&gt;
  shutdown();&lt;br /&gt;
  Timer = 100;&lt;br /&gt;
}&lt;br /&gt;
// End Setup &lt;br /&gt;
&lt;br /&gt;
// Shutdown&lt;br /&gt;
void shutdown(){&lt;br /&gt;
  digitalWrite(solPressUp,LOW);&lt;br /&gt;
  digitalWrite(solPressDown,LOW);&lt;br /&gt;
  digitalWrite(solDrawerIn,LOW);&lt;br /&gt;
  digitalWrite(solDrawerOut,LOW);&lt;br /&gt;
}&lt;br /&gt;
//End Shutdown&lt;br /&gt;
&lt;br /&gt;
// Actual Pressing Steps&lt;br /&gt;
void Transition()&lt;br /&gt;
{&lt;br /&gt;
  shutdown();&lt;br /&gt;
  //  Serial.writeln (State,DEC)&lt;br /&gt;
  switch (State)    {&lt;br /&gt;
  case STATEDOWN:  //Drop the press all the way down&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TD * TFactor;&lt;br /&gt;
      digitalWrite(solPressDown,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Down&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATELOAD: //Wait/Jiggle for chamber to fill&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TL * TFactor;&lt;br /&gt;
      Serial.println(&amp;quot;Load&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATECLOSE:  //Move Drawer to closed position - (Move for TC millis)&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TC * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerIn,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Close&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEPRESS: //Raise the press&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TP * TFactor;&lt;br /&gt;
      digitalWrite(solPressUp,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Press&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATERELEASE: //Drop the Press slightly (TR millis)&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TR * TFactor;&lt;br /&gt;
      digitalWrite(solPressDown,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Release&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEOUT:   //Move Drawer to open position - fully Out&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TO * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerOut,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Out&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEUP:  //Raise the press all the way Up - lifting the Brick above the eject trough&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TU * TFactor;&lt;br /&gt;
      digitalWrite(solPressUp,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Up&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEEJECT:   //Move Drawer - full In&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TE * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerIn,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Eject&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  default:&lt;br /&gt;
    Run =0;&lt;br /&gt;
    Serial.println(&amp;quot;Error on State Case Shut Down&amp;quot;);&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
// End Actual Pressing Steps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop()                     // run over and over again&lt;br /&gt;
{&lt;br /&gt;
  if(Run==1)&lt;br /&gt;
  {&lt;br /&gt;
    if (Timer&amp;gt;0){&lt;br /&gt;
      delay(1);&lt;br /&gt;
      Timer--;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      State++;&lt;br /&gt;
      if (State &amp;gt; STATEMAX) {&lt;br /&gt;
        State=STATEMIN;&lt;br /&gt;
      }&lt;br /&gt;
      Transition();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(solPressUp,LOW);&lt;br /&gt;
    digitalWrite(solPressDown,LOW);&lt;br /&gt;
    digitalWrite(solDrawerIn,LOW);&lt;br /&gt;
    digitalWrite(solDrawerOut,LOW);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //  digitalWrite(ledPin, HIGH);   // sets the LED on&lt;br /&gt;
  //  digitalWrite(Chnl0, HIGH);   // sets the LED on&lt;br /&gt;
  //  delay(500);                  // waits for a second&lt;br /&gt;
  //  digitalWrite(ledPin, LOW);   // sets the LED on&lt;br /&gt;
  //  digitalWrite(Chnl0, LOW);   // sets the LED on&lt;br /&gt;
  //  delay(500);                  // waits for a second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Category: CEB press software]]&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Control_Source_Code_v1.0&amp;diff=26231</id>
		<title>CEB Press/Manufacturing Instructions/Control Source Code v1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Control_Source_Code_v1.0&amp;diff=26231"/>
		<updated>2011-05-13T17:13:26Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category=CEB press}}&lt;br /&gt;
&lt;br /&gt;
== Code has moved to GitHub: https://github.com/OSE/ceb-controller ==&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// State Machine for CEB Press&lt;br /&gt;
// Open Source Ecology / Factor-E Farm&lt;br /&gt;
// Benjamin Gatti - 10-5-2009&lt;br /&gt;
// This code is provided free to use and modify under the GPL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int State = 0;&lt;br /&gt;
float TFactor = .6;&lt;br /&gt;
boolean Run = 1;&lt;br /&gt;
&lt;br /&gt;
#define STATEMIN  1&lt;br /&gt;
#define STATEDOWN  1 //Drop the press all the way down&lt;br /&gt;
int TD = 3000;&lt;br /&gt;
#define STATELOAD  2 //Wait/Jiggle for chamber to fill&lt;br /&gt;
int TL = 250;&lt;br /&gt;
#define STATECLOSE  3 //Move Drawer to closed position - (Move for TC millis)&lt;br /&gt;
int TC = 660;&lt;br /&gt;
#define STATEPRESS  4  //Raise the press&lt;br /&gt;
int TP = 5000;&lt;br /&gt;
#define STATERELEASE  5  //Drop the Press slightly (TR millis)&lt;br /&gt;
int TR = 120;&lt;br /&gt;
#define STATEOUT  6  //Move Drawer to open position - fully Out&lt;br /&gt;
int TO = 2000;&lt;br /&gt;
#define STATEUP  7  //Raise the press all the way Up - lifting the Brick above the eject trough&lt;br /&gt;
int TU = 600;&lt;br /&gt;
#define STATEEJECT  8  //Move Drawer - full In&lt;br /&gt;
int TE = 500;&lt;br /&gt;
#define STATEMAX  STATEEJECT&lt;br /&gt;
&lt;br /&gt;
int solPressUp = 5;&lt;br /&gt;
int solPressDown = 6;&lt;br /&gt;
int solDrawerIn = 9;&lt;br /&gt;
int solDrawerOut = 10;&lt;br /&gt;
int Timer = 0; //clock for current state&lt;br /&gt;
int ledPin = 13;                // LED connected to digital pin 13&lt;br /&gt;
int Chnl0 = 5;                // LED connected to digital pin 13&lt;br /&gt;
&lt;br /&gt;
void setup()                    // run once, when the sketch starts&lt;br /&gt;
{&lt;br /&gt;
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
  pinMode(Chnl0, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
  Run = 1; &lt;br /&gt;
  Serial.begin (19200);&lt;br /&gt;
  Serial.println(&amp;quot;Started&amp;quot;);&lt;br /&gt;
  State = STATEMIN;&lt;br /&gt;
  shutdown();&lt;br /&gt;
  Timer = 100;&lt;br /&gt;
}&lt;br /&gt;
void shutdown(){&lt;br /&gt;
  digitalWrite(solPressUp,LOW);&lt;br /&gt;
  digitalWrite(solPressDown,LOW);&lt;br /&gt;
  digitalWrite(solDrawerIn,LOW);&lt;br /&gt;
  digitalWrite(solDrawerOut,LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Transition()&lt;br /&gt;
{&lt;br /&gt;
  shutdown();&lt;br /&gt;
  //  Serial.writeln (State,DEC)&lt;br /&gt;
  switch (State)    {&lt;br /&gt;
  case STATEDOWN:  //Drop the press all the way down&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TD * TFactor;&lt;br /&gt;
      digitalWrite(solPressDown,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Down&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATELOAD: //Wait/Jiggle for chamber to fill&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TL * TFactor;&lt;br /&gt;
      Serial.println(&amp;quot;Load&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATECLOSE:  //Move Drawer to closed position - (Move for TC millis)&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TC * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerIn,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Close&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEPRESS: //Raise the press&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TP * TFactor;&lt;br /&gt;
      digitalWrite(solPressUp,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Press&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATERELEASE: //Drop the Press slightly (TR millis)&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TR * TFactor;&lt;br /&gt;
      digitalWrite(solPressDown,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Release&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEOUT:   //Move Drawer to open position - fully Out&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TO * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerOut,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Out&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEUP:  //Raise the press all the way Up - lifting the Brick above the eject trough&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TU * TFactor;&lt;br /&gt;
      digitalWrite(solPressUp,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Up&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEEJECT:   //Move Drawer - full In&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TE * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerIn,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Eject&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  default:&lt;br /&gt;
    Run =0;&lt;br /&gt;
    Serial.println(&amp;quot;Error on State Case Shut Down&amp;quot;);&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()                     // run over and over again&lt;br /&gt;
{&lt;br /&gt;
  if(Run==1)&lt;br /&gt;
  {&lt;br /&gt;
    if (Timer&amp;gt;0){&lt;br /&gt;
      delay(1);&lt;br /&gt;
      Timer--;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      State++;&lt;br /&gt;
      if (State &amp;gt; STATEMAX) {&lt;br /&gt;
        State=STATEMIN;&lt;br /&gt;
      }&lt;br /&gt;
      Transition();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(solPressUp,LOW);&lt;br /&gt;
    digitalWrite(solPressDown,LOW);&lt;br /&gt;
    digitalWrite(solDrawerIn,LOW);&lt;br /&gt;
    digitalWrite(solDrawerOut,LOW);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //  digitalWrite(ledPin, HIGH);   // sets the LED on&lt;br /&gt;
  //  digitalWrite(Chnl0, HIGH);   // sets the LED on&lt;br /&gt;
  //  delay(500);                  // waits for a second&lt;br /&gt;
  //  digitalWrite(ledPin, LOW);   // sets the LED on&lt;br /&gt;
  //  digitalWrite(Chnl0, LOW);   // sets the LED on&lt;br /&gt;
  //  delay(500);                  // waits for a second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Control_Source_Code_v1.0&amp;diff=26230</id>
		<title>CEB Press/Manufacturing Instructions/Control Source Code v1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Press/Manufacturing_Instructions/Control_Source_Code_v1.0&amp;diff=26230"/>
		<updated>2011-05-13T17:12:10Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category=CEB press}}&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code has moved to GitHub: [https://github.com/OSE/ceb-controller] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// State Machine for CEB Press&lt;br /&gt;
// Open Source Ecology / Factor-E Farm&lt;br /&gt;
// Benjamin Gatti - 10-5-2009&lt;br /&gt;
// This code is provided free to use and modify under the GPL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int State = 0;&lt;br /&gt;
float TFactor = .6;&lt;br /&gt;
boolean Run = 1;&lt;br /&gt;
&lt;br /&gt;
#define STATEMIN  1&lt;br /&gt;
#define STATEDOWN  1 //Drop the press all the way down&lt;br /&gt;
int TD = 3000;&lt;br /&gt;
#define STATELOAD  2 //Wait/Jiggle for chamber to fill&lt;br /&gt;
int TL = 250;&lt;br /&gt;
#define STATECLOSE  3 //Move Drawer to closed position - (Move for TC millis)&lt;br /&gt;
int TC = 660;&lt;br /&gt;
#define STATEPRESS  4  //Raise the press&lt;br /&gt;
int TP = 5000;&lt;br /&gt;
#define STATERELEASE  5  //Drop the Press slightly (TR millis)&lt;br /&gt;
int TR = 120;&lt;br /&gt;
#define STATEOUT  6  //Move Drawer to open position - fully Out&lt;br /&gt;
int TO = 2000;&lt;br /&gt;
#define STATEUP  7  //Raise the press all the way Up - lifting the Brick above the eject trough&lt;br /&gt;
int TU = 600;&lt;br /&gt;
#define STATEEJECT  8  //Move Drawer - full In&lt;br /&gt;
int TE = 500;&lt;br /&gt;
#define STATEMAX  STATEEJECT&lt;br /&gt;
&lt;br /&gt;
int solPressUp = 5;&lt;br /&gt;
int solPressDown = 6;&lt;br /&gt;
int solDrawerIn = 9;&lt;br /&gt;
int solDrawerOut = 10;&lt;br /&gt;
int Timer = 0; //clock for current state&lt;br /&gt;
int ledPin = 13;                // LED connected to digital pin 13&lt;br /&gt;
int Chnl0 = 5;                // LED connected to digital pin 13&lt;br /&gt;
&lt;br /&gt;
void setup()                    // run once, when the sketch starts&lt;br /&gt;
{&lt;br /&gt;
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
  pinMode(Chnl0, OUTPUT);      // sets the digital pin as output&lt;br /&gt;
  Run = 1; &lt;br /&gt;
  Serial.begin (19200);&lt;br /&gt;
  Serial.println(&amp;quot;Started&amp;quot;);&lt;br /&gt;
  State = STATEMIN;&lt;br /&gt;
  shutdown();&lt;br /&gt;
  Timer = 100;&lt;br /&gt;
}&lt;br /&gt;
void shutdown(){&lt;br /&gt;
  digitalWrite(solPressUp,LOW);&lt;br /&gt;
  digitalWrite(solPressDown,LOW);&lt;br /&gt;
  digitalWrite(solDrawerIn,LOW);&lt;br /&gt;
  digitalWrite(solDrawerOut,LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Transition()&lt;br /&gt;
{&lt;br /&gt;
  shutdown();&lt;br /&gt;
  //  Serial.writeln (State,DEC)&lt;br /&gt;
  switch (State)    {&lt;br /&gt;
  case STATEDOWN:  //Drop the press all the way down&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TD * TFactor;&lt;br /&gt;
      digitalWrite(solPressDown,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Down&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATELOAD: //Wait/Jiggle for chamber to fill&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TL * TFactor;&lt;br /&gt;
      Serial.println(&amp;quot;Load&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATECLOSE:  //Move Drawer to closed position - (Move for TC millis)&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TC * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerIn,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Close&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEPRESS: //Raise the press&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TP * TFactor;&lt;br /&gt;
      digitalWrite(solPressUp,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Press&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATERELEASE: //Drop the Press slightly (TR millis)&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TR * TFactor;&lt;br /&gt;
      digitalWrite(solPressDown,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Release&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEOUT:   //Move Drawer to open position - fully Out&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TO * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerOut,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Out&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEUP:  //Raise the press all the way Up - lifting the Brick above the eject trough&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TU * TFactor;&lt;br /&gt;
      digitalWrite(solPressUp,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Up&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  case STATEEJECT:   //Move Drawer - full In&lt;br /&gt;
    {&lt;br /&gt;
      Timer = TE * TFactor;&lt;br /&gt;
      digitalWrite(solDrawerIn,HIGH);&lt;br /&gt;
      Serial.println(&amp;quot;Eject&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  default:&lt;br /&gt;
    Run =0;&lt;br /&gt;
    Serial.println(&amp;quot;Error on State Case Shut Down&amp;quot;);&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()                     // run over and over again&lt;br /&gt;
{&lt;br /&gt;
  if(Run==1)&lt;br /&gt;
  {&lt;br /&gt;
    if (Timer&amp;gt;0){&lt;br /&gt;
      delay(1);&lt;br /&gt;
      Timer--;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      State++;&lt;br /&gt;
      if (State &amp;gt; STATEMAX) {&lt;br /&gt;
        State=STATEMIN;&lt;br /&gt;
      }&lt;br /&gt;
      Transition();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(solPressUp,LOW);&lt;br /&gt;
    digitalWrite(solPressDown,LOW);&lt;br /&gt;
    digitalWrite(solDrawerIn,LOW);&lt;br /&gt;
    digitalWrite(solDrawerOut,LOW);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //  digitalWrite(ledPin, HIGH);   // sets the LED on&lt;br /&gt;
  //  digitalWrite(Chnl0, HIGH);   // sets the LED on&lt;br /&gt;
  //  delay(500);                  // waits for a second&lt;br /&gt;
  //  digitalWrite(ledPin, LOW);   // sets the LED on&lt;br /&gt;
  //  digitalWrite(Chnl0, LOW);   // sets the LED on&lt;br /&gt;
  //  delay(500);                  // waits for a second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Plasma_Cutter_Intro&amp;diff=26081</id>
		<title>Plasma Cutter Intro</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Plasma_Cutter_Intro&amp;diff=26081"/>
		<updated>2011-05-12T16:22:23Z</updated>

		<summary type="html">&lt;p&gt;Nathan Broadbent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category=Plasma Cutter}}&lt;br /&gt;
{{ToolTemplate|ToolName=Plasma Cutter}}&lt;br /&gt;
A &#039;&#039;&#039;Plasma Cutter&#039;&#039;&#039; is used to cut metals and other materials. An inert gas or compressed air is exposed to an electrical arc and blown at high speed from a nozzle. Some of the gas ionizes to plasma form, which has a temperature high enough to melt metal. The plasma stream moves quickly enough to blow molten metal away from the points it is melting, creating cuts in material. See [http://www.plasmacam.com/archive/cnchow.htm how a plasma cutter works]. &lt;br /&gt;
&lt;br /&gt;
[[User:Lawrence|Lawrence Kincheloe]] used a commercial plasma cutter with his [[Torch Table Build]] as part of his [[One Month Project-Based Visits|project based visits]] to [[Factor e Farm]]. &lt;br /&gt;
&lt;br /&gt;
===Plans===&lt;br /&gt;
*DIY plasma cutter on [http://www.instructables.com/id/HOMEMADE_PLASMA_CUTTER/ Instructables]&lt;br /&gt;
*DIY plasma cutter schematic on [http://www.cnczone.com/forums/showthread.php?t=48631 CNCzone] &lt;br /&gt;
&amp;lt;!---[[Image:plsmacut.jpg|Schematic from CNCzone]]---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Product Ecology===&lt;br /&gt;
&lt;br /&gt;
The plasma cutter is used with the [[Torch Table]] to cut metals and other materials. To read about this integration, see:&lt;br /&gt;
*[[Torch Table Build#Plasma Cutter Interference Problems|Plasma Cutter Interference Problems]]&lt;br /&gt;
*[[Torch Table Build#Plasma Cutter PC Interface|Plasma Cutter PC Interface]]&lt;/div&gt;</summary>
		<author><name>Nathan Broadbent</name></author>
	</entry>
</feed>