幻影麦昆(失败的尝试)
原设想是利用 POV 的原理,在 microbit 上用一列 LED 来顺序显示一串字或图的每一列,让麦昆原地旋转来实现 POV 效果。还没有发现怎样快速点 microbit 的一列 LED,只能用显示只有一列的 5x5 图形来显示,结果发现 LED 显示的切换很慢,即使没有加任何延迟的循环切换都感觉有 0.2 秒的延迟。然后是即使是使用最快的电机速度,结果还是太慢,最终这个幻影麦昆的尝试以失败告终。
在这里抛砖引玉,希望有大神指点。
这是一些失败代码(需要使用手动编辑):
#include <Maqueen_Motor.h>
#include <DFRobot_NeoPixel.h>
#include <Microbit_Matrix.h>
#include <Microbit_Sensors.h>
Maqueen_Motor motor;
DFRobot_NeoPixelrgb_display_15;
const uint8_t bitmap_orginal[] = {
// B00110,B01111,B11110,B01111,B00110,
B11111,B00010,B00100,B00010,B11111,
/* B11100,B01010,B01001,B01010,B11100,
B00110,B01001,B11001,B10110,B00000,
B01111,B10000,B10000,B10000,B01111,
B11111,B10101,B10101,B10101,B10001,
B11111,B10101,B10101,B10101,B10001,
B11111,B00010,B00100,B01000,B11111
*/
};
const int BITMAP_COUNT = sizeof(bitmap_orginal) / sizeof(bitmap_orginal);
uint8_t bitmap_sets;
void process_bit_map()
{
for (int i = 0; i < BITMAP_COUNT; ++i)
{
bitmap_sets = (bitmap_orginal >> 0) & 0x01;
bitmap_sets = (bitmap_orginal >> 1) & 0x01;
bitmap_sets = (bitmap_orginal >> 2) & 0x01;
bitmap_sets = (bitmap_orginal >> 3) & 0x01;
bitmap_sets = (bitmap_orginal >> 4) & 0x01;
}
}
void setup() {
// motor.motorRun(motor.LEFT,motor.CW,255);
// motor.motorRun(motor.RIGHT,motor.CCW,255);
rgb_display_15.begin(15, 4, 255);
rgb_display_15.setRangeColor(0, 0, 0xff0000);
rgb_display_15.setRangeColor(1, 1, 0xffff00);
rgb_display_15.setRangeColor(2, 2, 0x0000ff);
rgb_display_15.setRangeColor(3, 3, 0x00ff00);
process_bit_map();
}
void loop1() {
static int i = -1;
if (++i >= BITMAP_COUNT)
i = 0;
MMatrix.show(bitmap_sets);
delay(1);
}
void loop() {
static int i = -1;
while(true)
{
if (((Sensors.acceleration(Sensors.Y)) < 0)) {
continue;
}
if (++i >= BITMAP_COUNT)
i = 0;
MMatrix.show(bitmap_sets);
}
}
上面的图形数组是用自动生成的代码复制过去的,长这样:
最终呢试了试只显示一个麦昆的 M 字,用手摇,效果也不咋滴,原因是这些 LED 点阵本来就是动态扫描的,所以最后的显示也会发生错乱:
小板凳已搬好,帮大神占个位 dfrobot 发表于 2019-5-29 17:40
小板凳已搬好,帮大神占个位
:hug: 大神快来
页:
[1]