VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2007/05/22(Tue) 12:01
投稿者ユウジ
Eメール
URL
タイトルRe^9: LED制御について

どうしてもチャタリング対策の仕方が分かりません。

助言頂けると幸いです。

以下のソースで(スイッチが4個→8個になりました)LEDを点けて

ボタンを押すごとに(押しっぱなしでも)LED1→8へと一瞬で点き

LED8→LED1に一瞬で戻って押しっぱなしだと永遠にループしてしまいます。


どこにどのようにして「wait,waittimer」を入れれば宜しいのでしょうか?

自分でもかなり実験したのですが分からず仕舞でしたので・・・

ご迷惑かもしれませんが助言いただけないでしょうか?



Private Sub Timer1_Timer()

        Dim lRet As Long, bRet(3) As Byte
        Static BitNo As Integer
    
        lRet = DioInpBit(lHandle, 0, bRet(0)) '**順次点灯スイッチ
        lRet = DioInpBit(lHandle, 1, bRet(1)) '**リセットスイッチ
        lRet = DioInpBit(lHandle, 2, bRet(2)) '**まだ使わないスイッチ
        lRet = DioInpBit(lHandle, 3, bRet(3)) '**まだ使わないスイッチ
      
       '**順次点灯スイッチ押した場合(スイッチ1)
        If bRet(0) <> 0 Then
            Label1(0).BackColor = &HFF
            Select Case BitNo
            Case 0
                '**LED1を点ける
                 lRet = DioOutBit(lHandle, 0, 1)
                 '**LED8を消す
                 lRet = DioOutBit(lHandle, 7, 0)
            Case 1
                '**LED1を消す
                 lRet = DioOutBit(lHandle, 0, 0)
                '**LED2を点ける
                 lRet = DioOutBit(lHandle, 1, 1)
            Case 2
                '**LED2を消す
                 lRet = DioOutBit(lHandle, 1, 0)
                '**LED3を点ける
                 lRet = DioOutBit(lHandle, 2, 1)
            Case 3
                '**LED3を消す
                 lRet = DioOutBit(lHandle, 2, 0)
                '**LED4を点ける
                 lRet = DioOutBit(lHandle, 3, 1)
            Case 4
                '**LED4を消す
                 lRet = DioOutBit(lHandle, 3, 0)
                '**LED5を点ける
                 lRet = DioOutBit(lHandle, 4, 1)
            Case 5
                '**LED5を消す
                 lRet = DioOutBit(lHandle, 4, 0)
                '**LED6を点ける
                 lRet = DioOutBit(lHandle, 5, 1)
            Case 6
                '**LED6を消す
                 lRet = DioOutBit(lHandle, 5, 0)
                '**LED7を点ける
                 lRet = DioOutBit(lHandle, 6, 1)
            Case 7
                '**LED7を消す
                 lRet = DioOutBit(lHandle, 6, 0)
                '**LED8を点ける
                 lRet = DioOutBit(lHandle, 7, 1)
                
                
                
            End Select
                BitNo = BitNo + 1
          
            If BitNo > 7 Then
                BitNo = 0
            End If
            Else
                Label1(0).BackColor = &H8000000F
        End If
        
        '**リセットスイッチ押した場合(スイッチ2)
        If bRet(1) <> 0 Then
            Label1(1).BackColor = &HFF
            lRet = DioOutBit(lHandle, 0, 0)
            lRet = DioOutBit(lHandle, 1, 0)
            lRet = DioOutBit(lHandle, 2, 0)
            lRet = DioOutBit(lHandle, 3, 0)
            lRet = DioOutBit(lHandle, 4, 0)
            lRet = DioOutBit(lHandle, 5, 0)
            lRet = DioOutBit(lHandle, 6, 0)
            lRet = DioOutBit(lHandle, 7, 0)
            BitNo = 0
        Else
            Label1(1).BackColor = &H8000000F
        End If
        
      
        '**スイッチ3(使わない
        If bRet(2) <> 0 Then
            Label1(2).BackColor = &HFF
        Else
            Label1(2).BackColor = &H8000000F
        End If
      
        '**スイッチ4(使わない
        If bRet(3) <> 0 Then
            Label1(3).BackColor = &HFF
        Else
            Label1(3).BackColor = &H8000000F
            
        End If
        End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -