SmoothieWare fins de course : Différence entre versions

De fablabo
Aller à : navigation, rechercher
(GitHub)
 
(6 révisions intermédiaires par un autre utilisateur non affichées)
Ligne 14 : Ligne 14 :
 
==résumé==
 
==résumé==
  
à l'occasion de la fabacademy, je profite du TP "input devices" et "output devices" pour tenter d'implémenter des fins de courses pour le smoothieware : le programme qui pilote les machines du fablab
+
<strike>à l'occasion de la fabacademy, je profite du TP "input devices" et "output devices" pour</strike>
 +
tenter d'implémenter des fins de courses pour le smoothieware : le programme qui pilote les machines du fablab
 +
 
 +
je n'ai pas le droit de faire ça dans le cadre de la fabacademy : ça ne rentre pas dans les cases
  
 
==découverte du code==
 
==découverte du code==
Ligne 42 : Ligne 45 :
 
à ce stade, je peux déjà commencer à explorer le code
 
à ce stade, je peux déjà commencer à explorer le code
  
 +
===analyse du code===
 +
 +
Actuellement, le programme en C++ qui pilote cette carte est construit de façon modulaire :
 +
 +
[[Image:Smoothie.modules.jpg]]
 +
 +
On peut créer d'autres modules à la demande
 +
 +
http://smoothieware.org/moduleexample
 +
 +
un certain nombre d'evènements sont gérés par le kernel : http://smoothieware.org/listofevents
 +
 +
====le module existant "EndStops"====
 +
 +
c'est naturellement dans ce module que j'ai commencé à regarder.
 +
 +
En fait, il ne gère actuellement que le cycle de "homing" : la recherche automatique de l'origine des axes
 +
 +
Je vais chercher à l'étendre pour réaliser une surveillance en temps réel
 +
 +
====le module Stepper====
 +
 +
Celui-ci utilise les "blocks" (voir ci dessus) pour actionner les 3 moteurs
 +
 +
Il semblerai que ce soit le bon endroit pour faire abandonner un mouvement
 +
 +
===L'idée de fonctionnement===
 +
 +
le module EndStops est abonné à l'évènement "slow_ticker"
 +
 +
<code lang=c>
 +
this->kernel->slow_ticker->attach( 100, this, &PauseButton::button_tick );
 +
</code>
  
 
[[Catégorie:FabAcademy]]
 
[[Catégorie:FabAcademy]]
 
[[Catégorie:Code]]
 
[[Catégorie:Code]]

Version actuelle en date du 19 juin 2014 à 10:17


fins de course pour smoothieware

JoliAfficheur.jpg

Contributeur·ice·s

Statut du projet

Concept

Statut de la publication

License

CC-by-sa-3.0

Fichiers source

Machines

Matériaux





résumé

à l'occasion de la fabacademy, je profite du TP "input devices" et "output devices" pour

tenter d'implémenter des fins de courses pour le smoothieware : le programme qui pilote les machines du fablab

je n'ai pas le droit de faire ça dans le cadre de la fabacademy : ça ne rentre pas dans les cases

découverte du code

GitHub

Le code source est partagé sur la plateforme de développement collaboratif github : https://github.com/Smoothieware/Smoothieware

pour pouvoir coder sans tout casser, il me fallait une copie à moi.

j'ai suivit le tutoriel https://help.github.com/articles/fork-a-repo

j'ai commencé par créer un fork sur mon propre compte github (en cliquant sur "fork")

puis j'ai récupéré un clone du code en tapant dans la terminal :

git clone https://github.com/Cdriko/Smoothieware.git

pour être tenu au courant des changements sur le dépôt d'origine :

cd Smoothieware/ git remote add upstream https://github.com/Smoothieware/Smoothieware.git git fetch upstream


à ce stade, je peux déjà commencer à explorer le code

analyse du code

Actuellement, le programme en C++ qui pilote cette carte est construit de façon modulaire :

Smoothie.modules.jpg

On peut créer d'autres modules à la demande

http://smoothieware.org/moduleexample

un certain nombre d'evènements sont gérés par le kernel : http://smoothieware.org/listofevents

le module existant "EndStops"

c'est naturellement dans ce module que j'ai commencé à regarder.

En fait, il ne gère actuellement que le cycle de "homing" : la recherche automatique de l'origine des axes

Je vais chercher à l'étendre pour réaliser une surveillance en temps réel

le module Stepper

Celui-ci utilise les "blocks" (voir ci dessus) pour actionner les 3 moteurs

Il semblerai que ce soit le bon endroit pour faire abandonner un mouvement

L'idée de fonctionnement

le module EndStops est abonné à l'évènement "slow_ticker"

this->kernel->slow_ticker->attach( 100, this, &PauseButton::button_tick );