Stap 1: Software
De arduino was uitgerust met een Ethernet-shield, zodat het met de server communiceren kan.
Overwegen om uit te leggen van de software, in de volgende afbeelding:
In de bovenstaande afbeelding, de alpha hoek is de hoek van de eerste tak van de y-as en hoek bèta is de hoek van de tweede tak van de lijn het de eerste richting arm blijft. Dit zijn de hoeken die de servomotoren als hun waarde of hun positie gebruiken. R1 en R2 zijn de eerste en de tweede arm lengtes.
Voor het berekenen van de positie van de pen, gebruiken we deze vergelijkingen:
MX = Ox + R1 x sin(alpha)
Mijn Ox - R1 = x cos(alpha)
x = Mx + R2 x sin(alpha+beta)
y = mijn - R2 x cos(alpha+beta)
waar x groeit naar rechts en y groeit naar beneden en de oorsprong (0,0) is op de hoogste linkerhoek.
We hebben de omzetting van (alpha, beta) ruimte naar de ruimte van de afbeelding in de servercode, de arduino deel eenvoudiger maken. De server ontvangen in principe een verzoek voor een bepaalde hoek Alfa en het zou vervolgens iterate op alle waarden van de beta, berekenen de x-, y- en kaart het aan de beeldruimte, luiden naar de pixelwaarde en de waarden voor alle betas terugkeren naar de arduino.
De tekenreeks was de positie van de schouder (alpha) intensivering van 1 graad en voor elke dergelijke positie, verplaatsen de elleboog motor van sommige minimum Bèta om een maximale bèta.
De algemene stroom van de arduino software was:
1. setup - verbinding met de server tot stand brengen
2. Loop voor alpha = minAlpha naar maxAlpha
3. Bel de server om een reeks van grijswaarden niveau voor de huidige alpha
4. Sla de HTTP respons header bytes, en lees de eerste byte van de lading. deze byte zal 0 worden als de server geen meer gegevens heeft
5. Loop voor beta = minBeta naar maxBeta
6. Lees de volgende teken vertegenwoordigt de grijze niveau op de huidige beta
7. als grijs donkerder is dan een drempel, omlaag de pen 0.5 seconden en vervolgens omhoog (trek een stip)
8. Zodra gedaan, gewoon niets doen in een lus - de gebruiker moet op de knop reset te halen het volgende beeld van de server
De arduino schets broncode is hier beschikbaar: