Étape 1: logiciel
L’arduino a été équipé d’un bouclier Ethernet donc il peut communiquer avec le serveur.
Pour expliquer le logiciel, considérons le schéma suivant :
Dans le dessin ci-dessus, l’alpha de l’angle est l’angle du premier bras de l’axe y, et l’angle bêta est l’angle du second bras de la ligne le continue la première direction de bras. Ce sont les angles que des servo-moteurs utilisent comme leur valeur ou leur position. R1 et R2 sont les longueurs des bras de premier et deuxième.
Pour calculer la position du crayon, nous utilisons ces équations :
MX = Ox + R1 x sin(alpha)
Ma = Ox - R1 x cos(alpha)
x = Mx + R2 x sin(alpha+beta)
y = ma - R2 x cos(alpha+beta)
où x pousse vers la droite et y pousse vers le bas et l’origine (0,0) est dans le coin supérieur gauche.
Nous avons fait la conversion de (alpha, bêta) espace pour l’espace de l’image dans le code serveur, pour faire plus simple l’arduino. Le serveur fondamentalement a reçu une demande d’un certain alpha angle et il serait alors itérer sur tous les coefficients bêta, calculer x, y, carte à l’espace de l’image, lire la valeur de pixel et retourner les valeurs pour toutes les versions bêta à l’arduino.
La séquence de dessin a été renforcer la position des épaules (alpha) d’un degré et pour chaque telle position, déplacer le moteur de coude de certains beta minimum pour un bêta maximale.
Le flot du logiciel arduino a été :
1. Configuration - établir une connexion au serveur
2. boucle alpha = minAlpha à maxAlpha
3. appelez le serveur pour obtenir une séquence de valeurs de niveau de gris pour le cours alpha
4. sauter les octets d’en-tête de réponse HTTP et lire le premier octet de la charge utile. cet octet sera 0 si le serveur n’a aucune donnée supplémentaire ne
5. boucle pour beta = minBeta à maxBeta
6. Lisez le prochain caractère qui représente le niveau de gris à la version bêta actuelle
7. Si le gris est plus foncé qu’un seuil, déplacer le stylet vers le bas pendant 0,5 seconde et puis vers le haut (dessinez un point)
8. une fois fait, juste ne rien faire dans une boucle - l’utilisateur doit pousser le bouton de réinitialisation pour aller chercher l’image suivante à partir du serveur
Le code de source arduino sketch est disponible ici :