![]() |
| ボタンで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()でボタンの名前を変更します。 |
| 目次へ |