diff --git a/ino/contact_printer/ContactPrinter.cpp b/ino/contact_printer/ContactPrinter.cpp index 1bd775f..f9cabfe 100644 --- a/ino/contact_printer/ContactPrinter.cpp +++ b/ino/contact_printer/ContactPrinter.cpp @@ -12,6 +12,7 @@ void ContactPrinter::Setup () { pinMode(start_button_pin, INPUT_PULLUP); drive_motor.Setup(); + lamp.Setup(); ledcSetup(takeup_pwm_channel, pwm_frequency, pwm_resolution); Serial.print("Attaching pin "); @@ -40,6 +41,7 @@ void ContactPrinter::Start () { void ContactPrinter::Stop () { Serial.println("Stop()"); + lamp.Off(); drive_motor.Stop(); StopTakeup(); run_time = timer; @@ -127,17 +129,19 @@ bool ContactPrinter::IsRunning () { } void ContactPrinter::Loop () { + int32_t frame; timer = millis(); - /*ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - pos = posi; - }*/ if (initialized) { ButtonLoop(); if (running) { drive_motor.Loop(); - if (drive_motor.GetFrames() >= 1000) { - Stop(); + frame = drive_motor.GetFrames(); + if (!lamp.IsOn() && frame >= start_after) { + lamp.On(); } + /*if (frame >= 1000) { + Stop(); + }*/ } } else if (timer >= start_time + 100) { initialized = true; diff --git a/ino/contact_printer/ContactPrinter.h b/ino/contact_printer/ContactPrinter.h index 869ac45..60a5124 100644 --- a/ino/contact_printer/ContactPrinter.h +++ b/ino/contact_printer/ContactPrinter.h @@ -53,6 +53,8 @@ class ContactPrinter { volatile uint8_t load = 2; //0 = no load, 1 = single thread, 2 = dual thread + volatile uint32_t start_after = 24; + volatile bool takeup_dir = true; volatile bool initialized = false; volatile bool running = false; diff --git a/ino/contact_printer/Lamp.cpp b/ino/contact_printer/Lamp.cpp index 758e488..7d34dee 100644 --- a/ino/contact_printer/Lamp.cpp +++ b/ino/contact_printer/Lamp.cpp @@ -2,4 +2,25 @@ Lamp::Lamp () { // -} \ No newline at end of file +} + +void Lamp::Setup() { + pinMode(lamp_pin_a, OUTPUT); + digitalWrite(lamp_pin_a, LOW); + Serial.print("Simple white LED lamp on pin: "); + Serial.println(lamp_pin_a); +} + +void Lamp::On () { + digitalWrite(lamp_pin_a, HIGH); + on = true; +} + +void Lamp::Off () { + digitalWrite(lamp_pin_a, LOW); + on = false; +} + +boolean Lamp::IsOn () { + return on; +} \ No newline at end of file diff --git a/ino/contact_printer/Lamp.h b/ino/contact_printer/Lamp.h index 357fde0..9fb0186 100644 --- a/ino/contact_printer/Lamp.h +++ b/ino/contact_printer/Lamp.h @@ -5,13 +5,17 @@ class Lamp { private: + const uint8_t lamp_pin_a = 32; volatile boolean on = false; - volatile uint8_t lamp_pin_a = 33; public: Lamp(); void Setup(); void Loop(); + void On(); + void Off(); + boolean IsOn(); + }; #endif \ No newline at end of file