ボタンでLEDをON/OFFする |
ボタンをクリックすると点灯/消灯をするアプリを作ってみます。 プログラム起動直後は、 ボタンをクリックすると、LEDが点灯します。ボタンの表示が変わります。 ボタンの名前は任意に設定することができます。 この表示だと小さすぎてわかり難い。タイトルが見えないのでカッコ悪い(マウスでドラッグすれば大きさは変えられます)。起動直後は下記の表示にします。 #include <gtkmm.h> #include <iostream> #include <wiringPi.h> #define LED_PORT 4 class MainWin : public Gtk::Window { Gtk::Button m_btnLed; int m_nLedMode; public: MainWin(); private: void on_btn_clicked(); }; MainWin::MainWin() { m_nLedMode = 0; m_btnLed.set_label("turn ON"); // シグナルとスロットをコネクト m_btnLed.signal_clicked().connect( sigc::mem_fun( *this, &MainWin::on_btn_clicked ) ); add( m_btnLed ); show_all_children(); resize(240, 32); set_title("LEDの制御"); } // スロット関数 void MainWin::on_btn_clicked() { if(m_nLedMode == 0) { m_nLedMode = 1; m_btnLed.set_label("turn OFF"); digitalWrite(LED_PORT, 1); } else { m_nLedMode = 0; m_btnLed.set_label("turn ON"); digitalWrite(LED_PORT, 0); } } int main( int argc, char *argv[] ) { if(wiringPiSetupGpio() == -1) { std::cout << "GPIO setup error!" << std::endl; return -1; } pinMode(LED_PORT, OUTPUT); Gtk::Main kit( argc, argv ); MainWin mainwin; Gtk::Main::run( mainwin ); return 0; }ボタンがクリックされると、 void MainWin::on_btn_clicked() が呼び出されるようになっています。 m_nLedMode で点灯/消灯を決定します。 m_btnLed.set_labe()でボタンの名前を変更します。 |
目次へ |