Advertisement
Abelsor

Blink_WhitoutDelay_POO_Arduino

May 9th, 2024 (edited)
681
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. /*
  2.     Este Código Abstrae un Led como objeto y permite realizar un blink(sin utilizar delay()) en diferentes tiempos para diferentes Leds
  3. */
  4.  
  5. class Led
  6. {
  7.     public:
  8.       Led();
  9.       Led(byte, byte);
  10.       virtual ~Led();
  11.  
  12.       // Metodos
  13.       void encender();
  14.       void apagar();
  15.       void estrobo(int);
  16.      
  17.       void setTiempoActual(long);
  18.       void setTiempoAnterior(long);
  19.       void setEstado(bool);
  20.       long getTiempoActual();
  21.       long getTiempoAnterior();
  22.       bool getEstado();
  23.      
  24.  
  25.     private:
  26.       byte pin;
  27.       byte val;
  28.       long tiempoAnterior, tiempoActual;
  29.       bool estado = true;
  30. };
  31.  
  32.  
  33. Led::Led(){
  34.  
  35. }
  36.  
  37. Led::Led(byte _pin, byte _val=255){
  38.   pin = _pin;
  39.   val = _val;
  40.  
  41.   pinMode(_pin, OUTPUT);
  42. }
  43.  
  44. Led::~Led(){
  45.  
  46. }
  47.  
  48. void Led::encender(){
  49.   digitalWrite(pin,HIGH);
  50. }
  51.  
  52. void Led::apagar(){
  53.   digitalWrite(pin,LOW);
  54. }
  55. void Led::setTiempoAnterior(long _tiempoAnterior){
  56.   tiempoAnterior = _tiempoAnterior;
  57. }
  58.  
  59. void Led::setTiempoActual(long _tiempoActual){
  60.   tiempoActual = _tiempoActual;
  61. }
  62.  
  63. void Led::setEstado(bool _estado){
  64.   estado = _estado;
  65. }
  66.  
  67. long Led::getTiempoAnterior(){
  68.   return tiempoAnterior;
  69. }
  70.  
  71. long Led::getTiempoActual(){
  72.   return tiempoActual;
  73. }
  74.  
  75. bool Led::getEstado(){
  76.   return estado;
  77. }
  78.  
  79. void Led::estrobo(int tiempo){
  80.   if(Led::getTiempoActual() - Led::getTiempoAnterior() >= tiempo){
  81.     Led::setEstado(!Led::getEstado());
  82.     Led::setTiempoAnterior(tiempoActual);
  83.     digitalWrite(pin, Led::getEstado());
  84.   }
  85.  
  86. }
  87.   Led led1(4);
  88.   Led led2(5);
  89. void setup() {
  90.  
  91.   led1.setTiempoAnterior(millis());
  92.   led2.setTiempoAnterior(millis());
  93. }
  94.  
  95. void loop() {
  96.    
  97.   led1.setTiempoActual(millis());
  98.   led2.setTiempoActual(millis());
  99.  
  100.   led1.estrobo(1000);
  101.   led2.estrobo(500);
  102.  
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement