我在学校项目上工作,我使用串行8 DIP开关点亮8个数字LED。我在我的arduino上使用盾牌按下一个按钮,让我的屏幕上的位开关。例如,用户单击第一个DIP开关和第二个DIP开关。然后第一个DE1和第二个DEL将亮起。之后,我按下盾牌上的一个按钮,这些位开始移动到它们的位置。
我的问题是,当它们到达它们在切换方向上遇到的最后一位时,如何使这些位恢复到原始值。就像一个旋转的位。
旋转示例:用户点亮第一个和第三个LED,当同一个用户按下按钮时,他们开始切换。然后,第二个LED到达第0位,它返回到第7位,而第一个LED仍然位于第1位......
byte G;
byte A = 0b00000001;
char data,newData; `
void modeRotationGauche(void)
{
G = (data);
while (digitalRead(KEY_2) == LOW)
{
if ( G == 0)
{
G = data;
}
G = G >> 1;
delay(200);
Serial.write(G);
G = G >> 1;
delay(200);
Serial.write(G);
G = G >> 1;
delay(200);
Serial.write(G);
G = G >> 1;
delay(200);
Serial.write(G);
}
当用户切换DIP然后打印该值时,正在读取数据 G用于切换位,如果G = 0,则返回原始数据值。 但我想要的是让它们旋转而不是让它们传送到原始值。我需要使用if函数来完成挑战。
谢谢!
答案 0 :(得分:1)
此函数将try {
bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), m, true);
return bitmap;
} catch (OutOfMemoryError e) {
bitmap.recycle();
bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), m, true);
return bitmap;
}
向右旋转value
位并返回旋转的值。 (amount
是类型8
的大小)
byte
将byte rotateRight(byte value, int amount) {
return (value >> amount) | (value << (8 - amount));
}
替换为G = G >> 1;
。