#実現したいこと
ArduinoのPORTB(下位4ビットのみ)を使用して、LEDを点灯させたいです。
0、1、2・・・と15(下位4ビットオール1)までの現在のPORTBの状態を求め、比較する方法を教えていただけますか?
15の時は、
(PORTB & 0xf) == 0x0f
で15(下位4ビットオール1)かそうでないかが比較できるそうです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
int work; work = PORTB &0x0f; switch(work){ case 0: // 0 の時 break; case 1: // 1 の時 break; case 2: // 2 の時 break; case 15: //15 の時 }
と書いたら?
投稿2016/11/11 03:41
総合スコア3778
0
ベストアンサー
LED4つをPORTBの下位4bitでON/OFF(1bitあたり1つのLEDに対応)させていると解釈していいですか?
2進数表記
0001 で1番目のLEDだけ光る
0010 で2番目のLEDだけ光る
0100 で3番目のLEDだけ光る
1000 で4番目のLEDだけ光る
0011 なら1番目と2番目が同時光る
という構成なら
if(PORTB & 0x01){/* 1番目が点灯している */} if(PORTB & 0x02){/* 2番目が点灯している */} if(PORTB & 0x04){/* 3番目が点灯している */} if(PORTB & 0x08){/* 4番目が点灯している */}
他の方も回答で??と思われている通り、整数でLED番号指定する。。。この場合ならLEDが15個付いているような構成が思い浮かばなかったのでこちらの判断で4つのLED制御として回答しています。
追記
質問者様の他の質問を見るとビット演算あたりがまだ少し苦手なのかなと見受けられましたので。
2進数で
0010というのはつまり16進数で0x02
PORTBは8bit?かわかりませんが、下位4ビット以外は全て無視したければ
PORTB & 0x0f
<- 0x0fは2進数表記で00001111なので
としてやれば
PORTBがもし2進数で11010011だったとしたら上記処理で
11010011 00001111 をビット演算で&すると 00000011
で00000011という結果を得られます(ようは条件判定に必要のない値を無視する)
その要領で
PORTBのBIT状態を比較するのに
0001 は16進数で 0x01
0010 は16進数で 0x02
0100 は16進数で 0x04
1000 は16進数で 0x08
という値でビット演算した値が0になるかどうかで各ビットが1なのか0なのかを判断しています。
これの応用でPORTBの下位1ビットと3ビットがONかどうかというのは
if((PORTB & 0x01) && (PORTB & 0x04)){}
でもできますが、
0x01 | 0x04 つまり
if((PORTB & 0x05) == 0x05)でも比較できます(
下位ビットがすべて1かどうかの判定は
0x01 | 0x02 | 0x04 | 0x08 = 0x0F
なので
if((PORTB & 0x0F) == 0x0F)
となるわけです。
投稿2016/11/11 05:07
編集2016/11/11 05:31総合スコア1689
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/11 15:30
2016/11/11 15:36
2016/11/11 15:38

0
こう言うことでしょうか?
C++/C#
1 2for(int i = 0; i < 4; i++) 3 if((PORTB & (1 << i)) != 0) 4 { 5 // true 6 } 7 8
投稿2016/11/11 03:46
総合スコア1046
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/11 03:48
2016/11/11 04:28
2016/11/11 06:06

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/11 03:43
2016/11/11 03:43
2016/11/11 05:24