タイマー割り込み

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //*******************************************
00002 // 割り込みのサンプルプログラム
00003 //*******************************************
00004 
00005 //ヘッダファイル(もしくはライブラリ)をインクルード
00006 #include "mbed.h"
00007 #include "main.h"
00008 
00009 //デジタル出力ピン(LED)の指定
00010 DigitalOut Interrupt_LED1(dp9);
00011 DigitalOut Interrupt_LED2(dp10);
00012 DigitalOut Interrupt_LED3(dp11);
00013 DigitalOut myLED(LED1);
00014 
00015 //指定時間後に、一度だけ割り込みがかかる
00016 Timeout Switch1;
00017 
00018 //一定時間ごとに、繰り返し割り込みがかかる
00019 Ticker Switch2;
00020 
00021 int main(void){
00022     
00023     //初期設定(すべてのLEDを消灯しておく)
00024     Interrupt_LED1 = LOW;
00025     Interrupt_LED2 = LOW;
00026     Interrupt_LED3 = LOW;
00027     myLED = LOW;
00028     
00029     //指定時間(2秒後)に、一度だけ割り込みがかかる
00030     Switch1.attach(&LightGlowing, 2);
00031     
00032     //指定時間(10秒毎)に、繰り返し割り込みがかかる
00033     Switch2.attach(&LightFlash, 10);
00034     
00035     while(1){
00036         //メインLEDをチカチカさせる。割り込み動作中は止まる。
00037         myLED = HIGH;
00038         wait(0.5);
00039         myLED = LOW;
00040         wait(0.5);
00041     }
00042 }
00043 
00044 //3連LEDを順に点灯させる。プロトタイプ宣言はヘッダファイル内で行う
00045 void LightGlowing(){
00046     wait(0.01);
00047     
00048     //LEDを順に光らせる
00049     Interrupt_LED1 = HIGH;
00050     wait(0.01);
00051     Interrupt_LED2 = LOW;
00052     wait(0.01);
00053     Interrupt_LED3 = LOW;
00054     
00055     wait(0.5);
00056     
00057     Interrupt_LED1 = HIGH;
00058     wait(0.01);
00059     Interrupt_LED2 = HIGH;
00060     wait(0.01);
00061     Interrupt_LED3 = LOW;
00062     
00063     wait(0.5);
00064     
00065     Interrupt_LED1 = HIGH;
00066     wait(0.01);
00067     Interrupt_LED2 = HIGH;
00068     wait(0.01);
00069     Interrupt_LED3 = HIGH;
00070     
00071     wait(0.5);
00072     
00073     Interrupt_LED1 = LOW;
00074     wait(0.01);
00075     Interrupt_LED2 = LOW;
00076     wait(0.01);
00077     Interrupt_LED3 = LOW;
00078     
00079 }
00080 
00081 //3連LEDを点滅させる。プロトタイプ宣言はヘッダファイル内で行う。
00082 void LightFlash(){
00083     
00084     wait(0.01);
00085     
00086     //LEDを順に光らせる
00087     Interrupt_LED1 = HIGH;
00088     wait(0.01);
00089     Interrupt_LED2 = LOW;
00090     wait(0.01);
00091     Interrupt_LED3 = LOW;
00092     
00093     wait(0.5);
00094     
00095     Interrupt_LED1 = LOW;
00096     wait(0.01);
00097     Interrupt_LED2 = HIGH;
00098     wait(0.01);
00099     Interrupt_LED3 = LOW;
00100     
00101     wait(0.5);
00102     
00103     Interrupt_LED1 = LOW;
00104     wait(0.01);
00105     Interrupt_LED2 = LOW;
00106     wait(0.01);
00107     Interrupt_LED3 = HIGH;
00108     
00109     wait(0.5);
00110     
00111     Interrupt_LED1 = LOW;
00112     wait(0.01);
00113     Interrupt_LED2 = LOW;
00114     wait(0.01);
00115     Interrupt_LED3 = LOW;
00116     
00117 }