mirror of https://github.com/meshcore-dev/MeshCore
5 changed files with 73 additions and 79 deletions
@ -0,0 +1,38 @@ |
|||
#ifdef PIN_VIBRATION |
|||
#include "GenericVibration.h" |
|||
|
|||
void GenericVibration::begin() { |
|||
pinMode(PIN_VIBRATION, OUTPUT); |
|||
digitalWrite(PIN_VIBRATION, LOW); |
|||
duration = 0; |
|||
} |
|||
|
|||
void GenericVibration::trigger() { |
|||
duration = millis(); |
|||
digitalWrite(PIN_VIBRATION, HIGH); |
|||
} |
|||
|
|||
void GenericVibration::loop() { |
|||
if (isVibrating()) { |
|||
if ((millis() / 1000) % 2 == 0) { |
|||
digitalWrite(PIN_VIBRATION, LOW); |
|||
} else { |
|||
digitalWrite(PIN_VIBRATION, HIGH); |
|||
} |
|||
|
|||
if (millis() - duration > VIBRATION_TIMEOUT) { |
|||
stop(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
bool GenericVibration::isVibrating() { |
|||
return duration > 0; |
|||
} |
|||
|
|||
void GenericVibration::stop() { |
|||
duration = 0; |
|||
digitalWrite(PIN_VIBRATION, LOW); |
|||
} |
|||
|
|||
#endif // ifdef PIN_VIBRATION
|
|||
@ -0,0 +1,33 @@ |
|||
#pragma once |
|||
|
|||
#ifdef PIN_VIBRATION |
|||
|
|||
#include <Arduino.h> |
|||
|
|||
/*
|
|||
* Vibration motor control class |
|||
* |
|||
* Provides vibration feedback for events like new messages and new contacts |
|||
* Features: |
|||
* - 1-second vibration pulse |
|||
* - 5-second nag timeout (cooldown between vibrations) |
|||
* - Non-blocking operation |
|||
*/ |
|||
|
|||
#ifndef VIBRATION_TIMEOUT |
|||
#define VIBRATION_TIMEOUT 5000 // 5 seconds default
|
|||
#endif |
|||
|
|||
class GenericVibration { |
|||
public: |
|||
void begin(); // set up vibration pin
|
|||
void trigger(); // trigger vibration if cooldown has passed
|
|||
void loop(); // non-blocking timer handling
|
|||
bool isVibrating(); // returns true if currently vibrating
|
|||
void stop(); // stop vibration immediately
|
|||
|
|||
private: |
|||
unsigned long duration; |
|||
}; |
|||
|
|||
#endif // ifdef PIN_VIBRATION
|
|||
@ -1,43 +0,0 @@ |
|||
#ifdef PIN_VIBRATION |
|||
#include "vibration.h" |
|||
|
|||
void genericVibration::begin() |
|||
{ |
|||
pinMode(PIN_VIBRATION, OUTPUT); |
|||
digitalWrite(PIN_VIBRATION, LOW); |
|||
duration = 0; |
|||
} |
|||
|
|||
void genericVibration::trigger() |
|||
{ |
|||
duration = millis(); |
|||
digitalWrite(PIN_VIBRATION, HIGH); |
|||
} |
|||
|
|||
void genericVibration::loop() |
|||
{ |
|||
if (isVibrating()) { |
|||
if ((millis() / 1000) % 2 == 0) { |
|||
digitalWrite(PIN_VIBRATION, LOW); |
|||
} else { |
|||
digitalWrite(PIN_VIBRATION, HIGH); |
|||
} |
|||
|
|||
if (millis() - duration > VIBRATION_TIMEOUT) { |
|||
stop(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
bool genericVibration::isVibrating() |
|||
{ |
|||
return duration > 0; |
|||
} |
|||
|
|||
void genericVibration::stop() |
|||
{ |
|||
duration = 0; |
|||
digitalWrite(PIN_VIBRATION, LOW); |
|||
} |
|||
|
|||
#endif // ifdef PIN_VIBRATION
|
|||
@ -1,34 +0,0 @@ |
|||
#pragma once |
|||
|
|||
#ifdef PIN_VIBRATION |
|||
|
|||
#include <Arduino.h> |
|||
|
|||
/*
|
|||
* Vibration motor control class |
|||
* |
|||
* Provides vibration feedback for events like new messages and new contacts |
|||
* Features: |
|||
* - 1-second vibration pulse |
|||
* - 5-second nag timeout (cooldown between vibrations) |
|||
* - Non-blocking operation |
|||
*/ |
|||
|
|||
#ifndef VIBRATION_TIMEOUT |
|||
#define VIBRATION_TIMEOUT 5000 // 5 seconds default
|
|||
#endif |
|||
|
|||
class genericVibration |
|||
{ |
|||
public: |
|||
void begin(); // set up vibration pin
|
|||
void trigger(); // trigger vibration if cooldown has passed
|
|||
void loop(); // non-blocking timer handling
|
|||
bool isVibrating(); // returns true if currently vibrating
|
|||
void stop(); // stop vibration immediately
|
|||
|
|||
private: |
|||
unsigned long duration; |
|||
}; |
|||
|
|||
#endif // ifdef PIN_VIBRATION
|
|||
Loading…
Reference in new issue