123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #pragma once
- #include <Automaton.h>
- // #include <TeensyStep.h>
- #include "AccelStepper.h"
- class Atm_stepper: public Machine {
- public:
- enum { IDLE, READY, RUNNING, STOPPING }; // STATES
- enum { EVT_IDLE_TIMER, EVT_ON_TARGET, EVT_GOTO, ELSE }; // EVENTS
- Atm_stepper( void ) : Machine() {};
- Atm_stepper& begin( int setpPin, int dirPin ) ;
- Atm_stepper& trace( Stream & stream );
- Atm_stepper& trigger( int event );
- int state( void );
- Atm_stepper& onOnchange( Machine& machine, int event = 0 );
- Atm_stepper& onOnchange( atm_cb_push_t callback, int idx = 0 );
- Atm_stepper& gotoStep( long int targetStep );
- private:
- AccelStepper _motor;
- // Stepper *_motor; // STEP pin: 2, DIR pin: 3
- // StepControl _controller;
- enum { ENT_IDLE, ENT_READY, ENT_RUNNING, LP_RUNNING, ENT_STOPPING, EXT_STOPPING }; // ACTIONS
- enum { ON_ONCHANGE, CONN_MAX }; // CONNECTORS
- atm_connector connectors[CONN_MAX];
- int event( int id );
- void action( int id );
- };
- /*
- Automaton::ATML::begin - Automaton Markup Language
- <?xml version="1.0" encoding="UTF-8"?>
- <machines>
- <machine name="Atm_stepper">
- <states>
- <IDLE index="0" on_enter="ENT_IDLE">
- <EVT_GOTO>RUNNING</EVT_GOTO>
- </IDLE>
- <READY index="1" on_enter="ENT_READY">
- <EVT_IDLE_TIMER>IDLE</EVT_IDLE_TIMER>
- <EVT_GOTO>RUNNING</EVT_GOTO>
- </READY>
- <RUNNING index="2" on_enter="ENT_RUNNING" on_loop="LP_RUNNING">
- <EVT_ON_TARGET>STOPPING</EVT_ON_TARGET>
- <EVT_GOTO>RUNNING</EVT_GOTO>
- </RUNNING>
- <STOPPING index="3" on_enter="ENT_STOPPING" on_exit="EXT_STOPPING">
- <EVT_ON_TARGET>READY</EVT_ON_TARGET>
- </STOPPING>
- </states>
- <events>
- <EVT_IDLE_TIMER index="0" access="PRIVATE"/>
- <EVT_ON_TARGET index="1" access="PRIVATE"/>
- <EVT_GOTO index="2" access="PUBLIC"/>
- </events>
- <connectors>
- <ONCHANGE autostore="0" broadcast="0" dir="PUSH" slots="1"/>
- </connectors>
- <methods>
- </methods>
- </machine>
- </machines>
- Automaton::ATML::end
- */
|