123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- #include <Arduino.h>
- #include <TimerOne.h>
-
- #include "config.h"
- #include "config_pins.h"
- #include "common.h"
- #include "data.h"
- #include "encoder.h"
- #include "lcd.h"
- #include "steppers.h"
- #include "states.h"
-
- static volatile bool still_running = false;
-
- void print_data(void) {
- Serial.println(F("XY:"));
-
- Serial.print(F("\t X: "));
- Serial.print(X_AXIS_MIN);
- Serial.print(F(" mm - "));
- Serial.print(X_AXIS_MAX);
- Serial.println(F(" mm"));
-
- Serial.print(F("\t Y: "));
- Serial.print(Y_AXIS_MIN);
- Serial.print(F(" mm - "));
- Serial.print(Y_AXIS_MAX);
- Serial.println(F(" mm"));
-
- Serial.print(F("\t"));
- Serial.print(XY_STEPS_PER_MM);
- Serial.println(F(" steps/mm"));
-
- Serial.print(F("\t"));
- Serial.print(XY_MAX_SPEED);
- Serial.println(F(" mm/s"));
-
- Serial.print(F("\t"));
- Serial.print(XY_MAX_ACCEL);
- Serial.println(F(" mm/s^2"));
-
- Serial.println();
-
- // ----------------------------------
-
- Serial.println(F("Z:"));
-
- Serial.print(F("\t"));
- Serial.print(Z_AXIS_MIN);
- Serial.print(F(" mm - "));
- Serial.print(Z_AXIS_MAX);
- Serial.println(F(" mm"));
-
- Serial.print(F("\t"));
- Serial.print(Z_STEPS_PER_MM);
- Serial.println(F(" steps/mm"));
-
- Serial.print(F("\t"));
- Serial.print(Z_MAX_SPEED);
- Serial.println(F(" mm/s"));
-
- Serial.print(F("\t"));
- Serial.print(Z_MAX_ACCEL);
- Serial.println(F(" mm/s^2"));
-
- Serial.println();
-
- // ----------------------------------
-
- Serial.println(F("E:"));
-
- Serial.print(F("\t"));
- Serial.print(E_AXIS_MIN);
- Serial.print(F(" mm - "));
- Serial.print(E_AXIS_MAX);
- Serial.println(F(" mm"));
-
- Serial.print(F("\t"));
- Serial.print(E_STEPS_PER_PERCENT);
- Serial.println(F(" steps/percent"));
-
- Serial.print(F("\t"));
- Serial.print(E_MAX_SPEED);
- Serial.println(F(" percent/s"));
-
- Serial.print(F("\t"));
- Serial.print(E_MAX_ACCEL);
- Serial.println(F(" percent/s^2"));
-
- Serial.println();
- }
-
- void fast_loop(void) {
- still_running = steppers_run();
- encoder_run();
- }
-
- void setup() {
- pinMode(LED_PIN, OUTPUT);
- digitalWrite(LED_PIN, HIGH);
-
- pinMode(BEEPER, OUTPUT);
- blocking_beep(100, 1000);
-
- // turn on fan connected to D8 for electronics
- pinMode(FAN_PIN, OUTPUT);
- digitalWrite(FAN_PIN, HIGH);
-
- Serial.begin(115200);
- Serial.println(F("Initializing Fuellfix v2"));
- Serial.print(F("Version: "));
- Serial.println(FIRMWARE_VERSION);
-
- Serial.println(F("Init data"));
- data_init();
-
- Serial.println(F("Init encoder"));
- encoder_init();
-
- Serial.println(F("Init LCD"));
- lcd_init();
-
- Serial.println(F("Init stepper motors"));
- steppers_init();
-
- print_data();
-
- Serial.println(F("ready, showing splash screen"));
- digitalWrite(LED_PIN, LOW);
- blocking_beep(100, 2000);
-
- // wait some time to show splash screen
- delay(2000);
-
- Serial.println(F("Init state machine"));
- states_init();
-
- blocking_beep(100, 2000);
- Serial.println(F("starting main loop"));
-
- Timer1.initialize(1000); // 1000us -> 1kHz
- Timer1.attachInterrupt(fast_loop);
- }
-
- void loop() {
- common_run(millis());
-
- CLEAR_STORE_INTERRUPTS();
-
- int click = encoder_click();
- int change = encoder_change();
- int rpm = encoder_rpm();
- int kill = kill_switch();
- bool motors_done = !still_running;
-
- RESTORE_INTERRUPTS();
-
- struct StateMachineInput smi(click, change, rpm, kill, motors_done);
- states_run(smi);
-
- lcd_loop();
-
- delay(10);
- }
|