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