PiFaceでLEDの点滅(Lチカ)を速くしたり遅くしたり
私はまだC言語初心者なのであまり大したことは出来ません。
それでも、プログラミングが上手く行って楽しかったので載せることにしました。
表題にもありますとおりPiFaceでLEDの点滅(Lチカ)をPiFaceに付いているスイッチで速くしたり遅くしたりするプログラミングです。
LED2の点滅をし、(リレーに負担がかからないようリレーの無いLED2にしました。)
スイッチのS1を押すとプログラムの終了。
スイッチのS2を押すと点滅が速くなる。
スイッチのS3を押すと点滅が遅くなる。
ものです。
スイッチは消灯から点灯の瞬間のスイッチの状態で決まります。
まだ、そんな単純なものしか組めません。
gccによるコンパイルは以下のとおり実行しました。(どういう意味かは分かっていません。)
$ gcc -L/usr/local/lib/ -lpiface-1.0 -o piface_program2 piface_program2.c
下がソースです。
/*ファイル名はpiface_program2.cにしました。*/
#include <libpiface-1.0/pfio.h>
/*ファイルは/usr/local/include/libpiface-1.0/pfio.hにあります*/
void haya(void);/*点滅を速くするための関数プロトタイプ(引数、戻り値なし)*/
void oso(void);/*点滅を遅く関数プロトタイプ(引数、戻り値なし)*/
int ten=500000;/*点灯時間グローバル変数、0.5秒=500000マイクロ秒に設定*/
int metu=1000000;/*消灯(滅)時間グローバル変数、1秒=1000000マイクロ秒に設定*/
int main(void)
{
pfio_init();/*私には何のための関数か不明*/
while(1) {/*無限ループです*/
pfio_digital_write(2, 1);/*LED2を点灯*/
usleep(ten);/*tenマイクロ秒間続ける*/
pfio_digital_write(2, 0);/*LED2を消灯(滅)*/
usleep(metu);/*metuマイクロ秒間続ける*/
if(pfio_digital_read(0)==1)break;/*スイッチS1が押されていれば無限ループを終了*/
if(pfio_digital_read(1)==1)haya();/*スイッチS2が押されていれば関数haya()を実効*/
if(pfio_digital_read(2)==1)oso();/*スイッチS3が押されていれば関数oso()を実効*/
}
pfio_deinit();/*私には何のための関数か不明*/
}
void haya(void)/*関数haya()本体*/
{
if(ten<=50000)return;/*tenが50000マイクロ秒以下ならhaya()関数を終了(点滅があまり速くなりすぎないよう入れました。)*/
ten=ten-(ten*0.1);/*点灯時間が10%速くします*/
metu=metu-(metu*0.1);/*消灯時間が10%速くします*/
}
void oso(void)/*関数oso()本体*/
{
if(ten>=550000)return;/*tenが550000マイクロ秒以下ならoso()関数を終了(点滅があまり遅くなりすぎないよう入れました)*/
ten=ten+(ten*0.1111);/*点灯時間を11.11%遅くします*/
metu=metu+(metu*0.1111);/*消灯時間を11.11%遅くします*/
}
« PiFace DigitalでのC言語によるLEDの点灯 | トップページ | PiFaceでクイズの早押しボタンのプログラムを作ってみた »
「パソコン・インターネット」カテゴリの記事
- logicool M720 Triathlon マルチデバイスマウスが故障(2022.08.20)
- UbuntuのFirefoxだと雑音が入る(未解決)(2022.02.13)
- イントロンのブログが60,000カウントを達成(2022.01.13)
- GrovePi+をRaspberry Pi 4に導入してみた(上手くゆかなかった)(2021.12.26)
- Raspberry Pi 4でVLCメディアプレイヤー起動時にフリーズがなぜか解消(2021.12.20)
« PiFace DigitalでのC言語によるLEDの点灯 | トップページ | PiFaceでクイズの早押しボタンのプログラムを作ってみた »


コメント