我有此代码无法正常工作。我已经为我的arduboy进行了编码(PS重置按钮已损坏:'(),它所做的只是冻结在 ARDUBOY 屏幕上,该屏幕在您启动时从屏幕顶部向下滚动起来,我不知道为什么会这样,只是这样!
代码在这里:
#include "Arduboy2.h"
Arduboy2 arduboy;
//Initiate variables:
int x = 0;
int y = 0;
//setup
void setup()
{
arduboy.begin();
// arduboy.clear();
}
//loop
void loop()
{
arduboy.clear();
// This is the code to test button inputs.
if (arduboy.pressed(UP_BUTTON))
{
y++;
}
else if (arduboy.pressed(DOWN_BUTTON))
{
y--;
}
else if (arduboy.pressed(LEFT_BUTTON))
{
x--;
}
else if (arduboy.pressed(RIGHT_BUTTON))
{
x++;
}
arduboy.setCursor(x, y);
arduboy.print("*"); //print the *
}
答案 0 :(得分:2)
此代码在打印星号后立即清除屏幕。
在所有Arduino中,loop
函数连续循环,并且循环之间没有延迟,因此您的代码不断清除屏幕。
仅当检测到更改时才应重新粉刷屏幕,如下所示:
#include "Arduboy2.h"
Arduboy2 arduboy;
//Initiate variables:
int x = 0;
int y = 0;
//setup
void setup()
{
arduboy.begin();
arduboy.clear();
}
void loop()
{
boolean change = false;
// This is the code to test button inputs.
if (arduboy.pressed(UP_BUTTON))
{
y++;
change = true;
}
else if (arduboy.pressed(DOWN_BUTTON))
{
y--;
change = true;
}
//this should be separate from the if that handles vertical buttons to allow diagonal movement
if (arduboy.pressed(LEFT_BUTTON))
{
x--;
change = true;
}
else if (arduboy.pressed(RIGHT_BUTTON))
{
x++;
change = true;
}
if (change) { //only repaint if button press is detected
arduboy.clear();
arduboy.setCursor(x, y);
arduboy.print("*"); //print the *
}
//you may also want to add delay() here to let the screen refresh
}
要平滑连续移动,还需要考虑的另一件事不是清除整个屏幕,而只是通过在此处打印空间或绘制一个小矩形来擦除先前的位置。
这是在运行速度较慢的硬件上运行的旧视频游戏中的常见做法。