teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]


スレッド一覧

  1. 足あと帳(0)
スレッド一覧(全1)  他のスレッドを探す 

*掲示板をお持ちでない方へ、まずは掲示板を作成しましょう。無料掲示板作成

新着順:9/836 記事一覧表示 | 《前のページ | 次のページ》

Re: sinの振幅によってLED点灯

 投稿者:ケンケン  投稿日:2020年 7月12日(日)23時36分15秒 NE0356lan33.rev.em-net.ne.jp
  通報 返信・引用
  こーたろー様

60Hzで、1周期を100分割するということは、6000分の1秒ごとに出力を更新するということです。
そのためには、出力変更後に6000分の1秒のウェイトをおいて繰り返すか、6000分の1秒ごとに
割り込みを発生させて割り込み内で出力変更するかになります。

ところで、60分の1秒周期というとかなり短くて、肉眼では認識できないと思いますが高速な
カメラで撮影なのですかね。

下記にヒントを載せておきます。

#define N 100
double a[N]


メインルーチン内

for(i=0;i<N;i++){
    a[i]=sin(3.14159*2*(double)i/N);
}

while(1){
    for(i=0;i<N;i++){
        if(0.7<=a[i] && a[i]<=1.0) LED_D3_On();
        else LED_D3_Off();
        if(0.4<=a[i] && a[i]<0.7) LED_D4_On();
        else LED_D4_Off();
        if(0.1<=a[i] && a[i]<0.4) LED_D5_On();
        else LED_D5_Off();
        if(-0.1<=a[i] && a[i]<0.1) LED_D6_On();
        else LED_D6_Off();
        if(-0.4<=a[i] && a[i]<-0.1) LED_D7_On();
        else LED_D7_Off();
        if(-0.7<=a[i] && a[i]<-0.4) LED_D8_On();
        else LED_D8_Off();
        if(-1.0<=a[i] && a[i]<-0.7) LED_D9_On();
        else LED_D9_Off();

//    ここに約1/6000秒のウェイトを入れる


    }

}
 
 
》記事一覧表示

新着順:9/836 《前のページ | 次のページ》
/836