Files
libpigpio/pigbutton.cpp
2025-08-05 22:33:23 +02:00

70 lines
1.4 KiB
C++

/*****************************************************************************
source::worx libPiGPio
Copyright © 2022 c.holzheuer
chris@sourceworx.org
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Uses:
pigpiod_if2 by joan2937, pigpio @ abyz.me.uk
https://abyz.me.uk/rpi/pigpio
sigslot by 2017 Pierre-Antoine Lacaze
https://github.com/palacaze/sigslot
***************************************************************************/
#include <iostream>
#include <pigbutton.h>
pigButton::pigButton()
{
}
pigButton::pigButton( pigpio::bcm_t bcmNo )
{
init( bcmNo );
}
pigButton::~pigButton()
{
}
void pigButton::init( pigpio::bcm_t bcmNo )
{
_pinIn.init( bcmNo, pull_up );
//pinIn.set_callback( this, rising );
_pinIn.set_callback( this, falling );
_pinIn.set_glitch_filter( 500 );
}
void pigButton::change_state( bool newState )
{
if( newState == state() )
return;
set_state( newState );
sigState( _state );
//_pinOut.set_level( _state );
}
void pigButton::trigger( pigpio::bcm_t, uint32_t )
{
//std::cout << "pigButton::trigger: " << (uint32_t) bcm << " : " << level << std::endl;
change_state( !state() );
}