我们中的许多人都玩过经典的街机游戏 Space Invaders。这是一种将其实施到您的日常生活中的方法!
这个漂亮的时钟充满了时髦的动画和音效。它非常适合您的桌面,并且会让工作/学习变得更加有趣。
零部件
Pro Trinket 5V (1)
DS1307 实时时钟分线板 (1)
8 针 IC 插座(可选)
双色 LED 方形像素矩阵双肩包 (4)
8Ω 0.5W 迷你音箱(1)
红色面板安装瞬时按钮 (1)
各种热缩管
面板安装 2.1mm DC 桶形插孔 (1)
5V 开关电源 (1)
20-22 AWG 电子线
半尺寸 Perma-Proto 面包板 (1)
注意:您不必使用 Adafruit 的 Pro Trinket。任何基于 Arduino 的 5V 微控制器只要有足够的 I/O 引脚并适合项目外壳,就可以工作。
工具
烙铁(当然带焊料)
帮助之手或 PCB 虎钳
尖嘴钳
砂纸
文件
热胶枪
乐泰 5 分钟环氧树脂
计算机
微型 USB 数据线
哟哟哟!您刚刚构建了自己的 Space Invaders 桌面时钟!
我希望你喜欢这个项目,但不要止步于此。我鼓励大家实施自己的想法,让这个项目更酷!
最后,我想特别感谢伟大的 Tomohiro Nishikado,他是世界上最伟大的街机游戏的设计者和创造者。










项目代码
/**************************************************
Arduino source code for Space Invaders Desktop Clock
----> www.instructables.com/id/Space-Invaders-Desktop-Clock/
Revision 2.2
Adafruit libraries written by Limor Fried/Ladyada for Adafruit Industries.
Created 2015 by Desmond Andersen, CC BY-NC-SA License.
Feel free to use, modify, and remix as long as you credit all text above.
****************************************************/
#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_LEDBackpack.h>
#include <Adafruit_GFX.h>
// Declare I2C objects
RTC_DS1307 rtc;
Adafruit_BicolorMatrix matrix1 = Adafruit_BicolorMatrix();
Adafruit_BicolorMatrix matrix2 = Adafruit_BicolorMatrix();
Adafruit_BicolorMatrix matrix3 = Adafruit_BicolorMatrix();
Adafruit_BicolorMatrix matrix4 = Adafruit_BicolorMatrix();
// Declare I/O pin connections
const int mainButtonPin = 4;
const int speakerPin = 9;
// Declare global variables
DateTime now;
int currentInvader = 1;
int mainButtonState = 0;
// Store bitmaps
static const uint8_t PROGMEM
hour_one_bmp[] =
{ B00000000,
B00000100,
B00000100,
B00000101,
B00000100,
B00000101,
B00000100,
B00000000 },
hour_two_bmp[] =
{ B00000000,
B00011100,
B00000100,
B00000101,
B00011100,
B00010001,
B00011100,
B00000000 },
hour_three_bmp[] =
{ B00000000,
B00011100,
B00000100,
B00000101,
B00001100,
B00000101,
B00011100,
B00000000 },
hour_four_bmp[] =
{ B00000000,
B00010100,
B00010100,
B00010101,
B00011100,
B00000101,
B00000100,
B00000000 },
hour_five_bmp[] =
{ B00000000,
B00011100,
B00010000,
B00010001,
B00011100,
B00000101,
B00011100,
B00000000 },
hour_six_bmp[] =
{ B00000000,
B00011100,
B00010000,
B00010001,
B00011100,
B00010101,
B00011100,
B00000000 },
hour_seven_bmp[] =
{ B00000000,
B00011100,
B00000100,
B00000101,
B00000100,
B00000101,
B00000100,
B00000000 },
hour_eight_bmp[] =
{ B00000000,
B00011100,
B00010100,
B00010101,
B00011100,
B00010101,
B00011100,
B00000000 },
hour_nine_bmp[] =
{ B00000000,
B00011100,
B00010100,
B00010101,
B00011100,
B00000101,
B00011100,
B00000000 },
hour_ten_bmp[] =
{ B00000000,
B01011100,
B01010100,
B01010101,
B01010100,
B01010101,
B01011100,
B00000000 },
hour_eleven_bmp[] =
{ B00000000,
B01000100,
B01000100,
B01000101,
B01000100,
B01000101,
B01000100,
B00000000 },
hour_twelve_bmp[] =
{ B00000000,
B01011100,
B01000100,
B01000101,
B01011100,
B01010001,
B01011100,
B00000000 },
minute_zero_bmp[] =
{ B00000000,
B01110111,
B01010101,
B01010101,
B01010101,
B01010101,
B01110111,
B00000000 },
minute_one_bmp[] =
{ B00000000,
B01110001,
B01010001,
B01010001,
B01010001,
B01010001,
B01110001,
B00000000 },
minute_two_bmp[] =
{ B00000000,
B01110111,
B01010001,
B01010001,
B01010111,
B01010100,
B01110111,
B00000000 },
minute_three_bmp[] =
{ B00000000,
B01110111,
B01010001,
B01010001,
B01010111,
B01010001,
B01110111,
B00000000 },
minute_four_bmp[] =
{ B00000000,
B01110101,
B01010101,
B01010101,
B01010111,
B01010001,
B01110001,
B00000000 },
minute_five_bmp[] =
{ B00000000,
B01110111,
B01010100,
B01010100,
B01010111,
B01010001,
B01110111,
B00000000 },
minute_six_bmp[] =
{ B00000000,
B01110111,
B01010100,
B01010100,
B01010111,
B01010101,
B01110111,
B00000000 },
minute_seven_bmp[] =
{ B00000000,
B01110111,
B01010001,
B01010001,
B01010001,
B01010001,
B01110001,
B00000000 },
minute_eight_bmp[] =
{ B00000000,
B01110111,
B01010101,
B01010101,
B01010111,
B01010101,
B01110111,
B00000000 },
minute_nine_bmp[] =
{ B00000000,
B01110111,
B01010101,
B01010101,
B01010111,
B01010001,
B01110111,
B00000000 },
minute_ten_bmp[] =
{ B00000000,
B00010111,
B00010101,
B00010101,
B00010101,
B00010101,
B00010111,
B00000000 },
minute_eleven_bmp[] =
{ B00000000,
B00010001,
B00010001,
B00010001,
B00010001,
B00010001,
B00010001,
B00000000 },
minute_twelve_bmp[] =
{ B00000000,
B00010111,
B00010001,
B00010001,
B00010111,
B00010100,
B00010111,
B00000000 },
minute_thirteen_bmp[] =
{ B00000000,
B00010111,
B00010001,
B00010001,
B00010111,
B00010001,
B00010111,
B00000000 },
minute_fourteen_bmp[] =
{ B00000000,
B00010101,
B00010101,
B00010101,
B00010111,
B00010001,
B00010001,
B00000000 },
minute_fifteen_bmp[] =
{ B00000000,
B00010111,
B00010100,
B00010100,
B00010111,
B00010001,
B00010111,
B00000000 },
minute_sixteen_bmp[] =
{ B00000000,
B00010111,
B00010100,
B00010100,
B00010111,
B00010101,
B00010111,
B00000000 },
minute_seventeen_bmp[] =
{ B00000000,
B00010111,
B00010001,
B00010001,
B00010001,
B00010001,
B00010001,
B00000000 },
minute_eighteen_bmp[] =
{ B00000000,
B00010111,
B00010101,
B00010101,
B00010111,
B00010101,
B00010111,
B00000000 },
minute_nineteen_bmp[] =
{ B00000000,
B00010111,
B00010101,
B00010101,
B00010111,
B00010001,
B00010111,
B00000000 },
minute_twenty_bmp[] =
{ B00000000,
B01110111,
B00010101,
B00010101,
B01110101,
B01000101,
B01110111,
B00000000 },
minute_twentyone_bmp[] =
{ B00000000,
B01110001,
B00010001,
B00010001,
B01110001,
B01000001,
B01110001,
B00000000 },
minute_twentytwo_bmp[] =
{ B00000000,
B01110111,
B00010001,
B00010001,
B01110111,
B01000100,
B01110111,
B00000000 },
minute_twentythree_bmp[] =
{ B00000000,
B01110111,
B00010001,
B00010001,
B01110111,
B01000001,
B01110111,
B00000000 },
minute_twentyfour_bmp[] =
{ B00000000,
B01110101,
B00010101,
B00010101,
B01110111,
B01000001,
B01110001,
B00000000 },
minute_twentyfive_bmp[] =
{ B00000000,
B01110111,
B00010100,
B00010100,
B01110111,
B01000001,
B01110111,
B00000000 },
minute_twentysix_bmp[] =
{ B00000000,
B01110111,
B00010100,
B00010100,
B01110111,
B01000101,
B01110111,
B00000000 },
minute_twentyseven_bmp[] =
{ B00000000,
B01110111,
B00010001,
B00010001,
B01110001,
B01000001,
B01110001,
B00000000 },
minute_twentyeight_bmp[] =
{ B00000000,
B01110111,
B00010101,
B00010101,
B01110111,
B01000101,
B01110111,
B00000000 },
minute_twentynine_bmp[] =
{ B00000000,
B01110111,
B00010101,
B00010101,
B01110111,
B01000001,
B01110111,
B00000000 },
minute_thirty_bmp[] =
{ B00000000,
B01110111,
B00010101,
B00010101,
B01110101,
B00010101,
B01110111,
B00000000 },
minute_thirtyone_bmp[] =
{ B00000000,
B01110001,
B00010001,
B00010001,
B01110001,
B00010001,
B01110001,
B00000000 },
minute_thirtytwo_bmp[] =
{ B00000000,
B01110111,
B00010001,
B00010001,
B01110111,
B00010100,
B01110111,
B00000000 },
minute_thirtythree_bmp[] =
{ B00000000,
B01110111,
B00010001,
B00010001,
B01110111,
B00010001,
B01110111,
B00000000 },
minute_thirtyfour_bmp[] =
{ B00000000,
B01110101,
B00010101,
B00010101,
B01110111,
B00010001,
B01110001,
B00000000 },
minute_thirtyfive_bmp[] =
{ B00000000,
B01110111,
B00010100,
B00010100,
B01110111,
B00010001,
B01110111,
B00000000 },
minute_thirtysix_bmp[] =
{ B00000000,
B01110111,
B00010100,
B00010100,
B01110111,
B00010101,
B01110111,
B00000000 },
minute_thirtyseven_bmp[] =
{ B00000000,
B01110111,
B00010001,
B00010001,
B01110001,
B00010001,
B01110001,
B00000000 },
minute_thirtyeight_bmp[] =
{ B00000000,
B01110111,
B00010101,
B00010101,
B01110111,
B00010101,
B01110111,
B00000000 },
minute_thirtynine_bmp[] =
{ B00000000,
B01110111,
B00010101,
B00010101,
B01110111,
B00010001,
B01110111,
B00000000 },
minute_forty_bmp[] =
{ B00000000,
B01010111,
B01010101,
B01010101,
B01110101,
B00010101,
B00010111,
B00000000 },
minute_fortyone_bmp[] =
{ B00000000,
B01010001,
B01010001,
B01010001,
B01110001,
B00010001,
B00010001,
B00000000 },
minute_fortytwo_bmp[] =
{ B00000000,
B01010111,
B01010001,
B01010001,
B01110111,
B00010100,
B00010111,
B00000000 },
minute_fortythree_bmp[] =
{ B00000000,
B01010111,
B01010001,
B01010001,
B01110111,
B00010001,
B00010111,
B00000000 },
minute_fortyfour_bmp[] =
{ B00000000,
B01010101,
B01010101,
B01010101,
B01110111,
B00010001,
B00010001,
B00000000 },
minute_fortyfive_bmp[] =
{ B00000000,
B01010111,
B01010100,
B01010100,
B01110111,
B00010001,
B00010111,
B00000000 },
minute_fortysix_bmp[] =
{ B00000000,
B01010111,
B01010100,
B01010100,
B01110111,
B00010101,
B00010111,
B00000000 },
minute_fortyseven_bmp[] =
{ B00000000,
B01010111,
B01010001,
B01010001,
B01110001,
B00010001,
B00010001,
B00000000 },
minute_fortyeight_bmp[] =
{ B00000000,
B01010111,
B01010101,
B01010101,
B01110111,
B00010101,
B00010111,
B00000000 },
minute_fortynine_bmp[] =
{ B00000000,
B01010111,
B01010101,
B01010101,
B01110111,
B00010001,
B00010111,
B00000000 },
minute_fifty_bmp[] =
{ B00000000,
B01110111,
B01000101,
B01000101,
B01110101,
B00010101,
B01110111,
B00000000 },
minute_fiftyone_bmp[] =
{ B00000000,
B01110001,
B01000001,
B01000001,
B01110001,
B00010001,
B01110001,
B00000000 },
minute_fiftytwo_bmp[] =
{ B00000000,
B01110111,
B01000001,
B01000001,
B01110111,
B00010100,
B01110111,
B00000000 },
minute_fiftythree_bmp[] =
{ B00000000,
B01110111,
B01000001,
B01000001,
B01110111,
B00010001,
B01110111,
B00000000 },
minute_fiftyfour_bmp[] =
{ B00000000,
B01110101,
B01000101,
B01000101,
B01110111,
B00010001,
B01110001,
B00000000 },
minute_fiftyfive_bmp[] =
{ B00000000,
B01110111,
B01000100,
B01000100,
B01110111,
B00010001,
B01110111,
B00000000 },
minute_fiftysix_bmp[] =
{ B00000000,
B01110111,
B01000100,
B01000100,
B01110111,
B00010101,
B01110111,
B00000000 },
minute_fiftyseven_bmp[] =
{ B00000000,
B01110111,
B01010001,
B01010001,
B01110001,
B00010001,
B01110001,
B00000000 },
minute_fiftyeight_bmp[] =
{ B00000000,
B01110111,
B01000101,
B01000101,
B01110111,
B00010101,
B01110111,
B00000000 },
minute_fiftynine_bmp[] =
{ B00000000,
B01110111,
B01000101,
B01000101,
B01110111,
B00010001,
B01110111,
B00000000 },
text_pressA_bmp[] =
{ B00000000,
B00000011,
B00000010,
B00000010,
B01110011,
B00000010,
B00000010,
B00000000 },
text_pressB_bmp[] =
{ B00000000,
B10111011,
B10101010,
B10101010,
B10101011,
B00110010,
B00101011,
B00000000 },
text_pressC_bmp[] =
{ B00000000,
B10111011,
B00100010,
B00100010,
B10111011,
B00001000,
B10111011,
B00000000 },
text_pressD_bmp[] =
{ B00000000,
B10000000,
B00000000,
B00000000,
B10011100,
B10000000,
B10000000,
B00000000 },
text_startA_bmp[] =
{ B00000000,
B00000011,
B00000010,
B00000010,
B01110011,
B00000000,
B00000011,
B00000000 },
text_startB_bmp[] =
{ B00000000,
B10111011,
B00010010,
B00010010,
B10010011,
B10010010,
B10010010,
B00000000 },
text_startC_bmp[] =
{ B00000000,
B10111011,
B10101001,
B10101001,
B10101001,
B10110001,
B10101001,
B00000000 },
text_startD_bmp[] =
{ B00000000,
B10000000,
B00000000,
B00000000,
B00011100,
B00000000,
B00000000,
B00000000 },
invader_1AA_bmp[] =
{ B00000001,
B00000011,
B00000111,
B00001101,
B00001111,
B00000010,
B00000101,
B00001010 },
invader_1AB_bmp[] =
{ B10000000,
B11000000,
B11100000,
B10110000,
B11110000,
B01000000,
B10100000,
B01010000 },
invader_1BA_bmp[] =
{ B00000001,
B00000011,
B00000111,
B00001101,
B00001111,
B00000101,
B00001000,
B00000100 },
invader_1BB_bmp[] =
{ B10000000,
B11000000,
B11100000,
B10110000,
B11110000,
B10100000,
B00010000,
B00100000 },
invader_2AA_bmp[] =
{ B00000100,
B00000010,
B00000111,
B00001101,
B00011111,
B00010111,
B00010100,
B00000011 },
invader_2AB_bmp[] =
{ B00010000,
B00100000,
B11110000,
B11011000,
B11111100,
B11110100,
B00010100,
B01100000 },
invader_2BA_bmp[] =
{ B00000100,
B00010010,
B00010111,
B00011101,
B00001111,
B00000111,
B00000100,
B00001000 },
invader_2BB_bmp[] =
{ B00010000,
B00100100,
B11110100,
B11011100,
B11111000,
B11110000,
B00010000,
B00001000 },
invader_3AA_bmp[] =
{ B00000011,
B00011111,
B00111111,
B00111001,
B00111111,
B00000110,
B00001101,
B00110000, },
invader_3AB_bmp[] =
{ B11000000,
B11111000,
B11111100,
B10011100,
B11111100,
B01100000,
B10110000,
B00001100, },
invader_3BA_bmp[] =
{ B00000011,
B00011111,
B00111111,
B00111001,
B00111111,
B00001110,
B00011001,
B00001100, },
invader_3BB_bmp[] =
{ B11000000,
B11111000,
B11111100,
B10011100,
B11111100,
B01110000,
B10011000,
B00110000 },
invader_popA_bmp[] =
{ B00001000,
B00000100,
B00000010,
B00111000,
B00000000,
B00001001,
B00010010,
B00000010 },
invader_popB_bmp[] =
{ B10000000,
B10010010,
B00010100,
B00100000,
B00001110,
B00000000,
B01010000,
B01001000 };
void setup()
{
// Pass in I2C addresses
matrix1.begin(0x70);
matrix2.begin(0x71);
matrix3.begin(0x72);
matrix4.begin(0x73);
// Setup time
rtc.begin();
if (! rtc.isrunning())
{
// This sets the RTC to the date and time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Setup display
matrix1.setRotation(3);
matrix2.setRotation(3);
matrix3.setRotation(3);
matrix4.setRotation(3);
matrix1.setBrightness(5);
matrix2.setBrightness(5);
matrix3.setBrightness(5);
matrix4.setBrightness(5);
// Setup buttons
pinMode(mainButtonPin, INPUT);
// Setup speaker
pinMode(speakerPin, OUTPUT);
// Splash screen
mainButtonState = digitalRead(mainButtonPin);
while(!mainButtonState)
{
matrix1.clear();
matrix2.clear();
matrix3.clear();
matrix4.clear();
matrix1.drawBitmap(0, 0, text_pressA_bmp, 8, 8, LED_RED);
matrix2.drawBitmap(0, 0, text_pressB_bmp, 8, 8, LED_RED);
matrix3.drawBitmap(0, 0, text_pressC_bmp, 8, 8, LED_RED);
matrix4.drawBitmap(0, 0, text_pressD_bmp, 8, 8, LED_RED);
matrix1.writeDisplay();
matrix2.writeDisplay();
matrix3.writeDisplay();
matrix4.writeDisplay();
tone(speakerPin, 139, 600);
delay(800);
mainButtonState = digitalRead(mainButtonPin);
if(mainButtonState == HIGH)
break;
tone(speakerPin, 123, 600);
delay(800);
mainButtonState = digitalRead(mainButtonPin);
if(mainButtonState == HIGH)
break;
matrix1.clear();
matrix2.clear();
matrix3.clear();
matrix4.clear();
matrix1.drawBitmap(0, 0, text_startA_bmp, 8, 8, LED_RED);
matrix2.drawBitmap(0, 0, text_startB_bmp, 8, 8, LED_RED);
matrix3.drawBitmap(0, 0, text_startC_bmp, 8, 8, LED_RED);
matrix4.drawBitmap(0, 0, text_startD_bmp, 8, 8, LED_RED);
matrix1.writeDisplay();
matrix2.writeDisplay();
matrix3.writeDisplay();
matrix4.writeDisplay();
tone(speakerPin, 110, 600);
delay(800);
mainButtonState = digitalRead(mainButtonPin);
if(mainButtonState == HIGH)
break;
tone(speakerPin, 104, 600);
delay(800);
mainButtonState = digitalRead(mainButtonPin);
}
matrix1.clear();
matrix2.clear();
matrix3.clear();
matrix4.clear();
matrix1.writeDisplay();
matrix2.writeDisplay();
matrix3.writeDisplay();
matrix4.writeDisplay();
delay(1000);
}
void loop()
{
// Check for button press
mainButtonState = digitalRead(mainButtonPin);
if(mainButtonState == HIGH)
shootInvader();
// Update time
now = rtc.now();
// Display time
displayHour(now.hour());
displayMinute(now.minute());
// Update invader every hour
if(now.minute() == 0 && now.second() == 0)
currentInvader = cycleInvader(currentInvader);
// Display invader
displayInvader(currentInvader, now.second());
delay(1000);
}
void displayHour (int h)
{
matrix1.clear();
switch (h)
{
case 1: case 13:
matrix1.drawBitmap(0, 0, hour_one_bmp, 8, 8, LED_GREEN);
break;
case 2: case 14:
matrix1.drawBitmap(0, 0, hour_two_bmp, 8, 8, LED_GREEN);
break;
case 3: case 15:
matrix1.drawBitmap(0, 0, hour_three_bmp, 8, 8, LED_GREEN);
break;
case 4: case 16:
matrix1.drawBitmap(0, 0, hour_four_bmp, 8, 8, LED_GREEN);
break;
case 5: case 17:
matrix1.drawBitmap(0, 0, hour_five_bmp, 8, 8, LED_GREEN);
break;
case 6: case 18:
matrix1.drawBitmap(0, 0, hour_six_bmp, 8, 8, LED_GREEN);
break;
case 7: case 19:
matrix1.drawBitmap(0, 0, hour_seven_bmp, 8, 8, LED_GREEN);
break;
case 8: case 20:
matrix1.drawBitmap(0, 0, hour_eight_bmp, 8, 8, LED_GREEN);
break;
case 9: case 21:
matrix1.drawBitmap(0, 0, hour_nine_bmp, 8, 8, LED_GREEN);
break;
case 10: case 22:
matrix1.drawBitmap(0, 0, hour_ten_bmp, 8, 8, LED_GREEN);
break;
case 11: case 23:
matrix1.drawBitmap(0, 0, hour_eleven_bmp, 8, 8, LED_GREEN);
break;
case 12: case 24:
matrix1.drawBitmap(0, 0, hour_twelve_bmp, 8, 8, LED_GREEN);
break;
}
matrix1.writeDisplay();
}
void displayMinute (int m)
{
matrix2.clear();
switch (m)
{
case 0:
matrix2.drawBitmap(0, 0, minute_zero_bmp, 8, 8, LED_GREEN);
break;
case 1:
matrix2.drawBitmap(0, 0, minute_one_bmp, 8, 8, LED_GREEN);
break;
case 2:
matrix2.drawBitmap(0, 0, minute_two_bmp, 8, 8, LED_GREEN);
break;
case 3:
matrix2.drawBitmap(0, 0, minute_three_bmp, 8, 8, LED_GREEN);
break;
case 4:
matrix2.drawBitmap(0, 0, minute_four_bmp, 8, 8, LED_GREEN);
break;
case 5:
matrix2.drawBitmap(0, 0, minute_five_bmp, 8, 8, LED_GREEN);
break;
case 6:
matrix2.drawBitmap(0, 0, minute_six_bmp, 8, 8, LED_GREEN);
break;
case 7:
matrix2.drawBitmap(0, 0, minute_seven_bmp, 8, 8, LED_GREEN);
break;
case 8:
matrix2.drawBitmap(0, 0, minute_eight_bmp, 8, 8, LED_GREEN);
break;
case 9:
matrix2.drawBitmap(0, 0, minute_nine_bmp, 8, 8, LED_GREEN);
break;
case 10:
matrix2.drawBitmap(0, 0, minute_ten_bmp, 8, 8, LED_GREEN);
break;
case 11:
matrix2.drawBitmap(0, 0, minute_eleven_bmp, 8, 8, LED_GREEN);
break;
case 12:
matrix2.drawBitmap(0, 0, minute_twelve_bmp, 8, 8, LED_GREEN);
break;
case 13:
matrix2.drawBitmap(0, 0, minute_thirteen_bmp, 8, 8, LED_GREEN);
break;
case 14:
matrix2.drawBitmap(0, 0, minute_fourteen_bmp, 8, 8, LED_GREEN);
break;
case 15:
matrix2.drawBitmap(0, 0, minute_fifteen_bmp, 8, 8, LED_GREEN);
break;
case 16:
matrix2.drawBitmap(0, 0, minute_sixteen_bmp, 8, 8, LED_GREEN);
break;
case 17:
matrix2.drawBitmap(0, 0, minute_seventeen_bmp, 8, 8, LED_GREEN);
break;
case 18:
matrix2.drawBitmap(0, 0, minute_eighteen_bmp, 8, 8, LED_GREEN);
break;
case 19:
matrix2.drawBitmap(0, 0, minute_nineteen_bmp, 8, 8, LED_GREEN);
break;
case 20:
matrix2.drawBitmap(0, 0, minute_twenty_bmp, 8, 8, LED_GREEN);
break;
case 21:
matrix2.drawBitmap(0, 0, minute_twentyone_bmp, 8, 8, LED_GREEN);
break;
case 22:
matrix2.drawBitmap(0, 0, minute_twentytwo_bmp, 8, 8, LED_GREEN);
break;
case 23:
matrix2.drawBitmap(0, 0, minute_twentythree_bmp, 8, 8, LED_GREEN);
break;
case 24:
matrix2.drawBitmap(0, 0, minute_twentyfour_bmp, 8, 8, LED_GREEN);
break;
case 25:
matrix2.drawBitmap(0, 0, minute_twentyfive_bmp, 8, 8, LED_GREEN);
break;
case 26:
matrix2.drawBitmap(0, 0, minute_twentysix_bmp, 8, 8, LED_GREEN);
break;
case 27:
matrix2.drawBitmap(0, 0, minute_twentyseven_bmp, 8, 8, LED_GREEN);
break;
case 28:
matrix2.drawBitmap(0, 0, minute_twentyeight_bmp, 8, 8, LED_GREEN);
break;
case 29:
matrix2.drawBitmap(0, 0, minute_twentynine_bmp, 8, 8, LED_GREEN);
break;
case 30:
matrix2.drawBitmap(0, 0, minute_thirty_bmp, 8, 8, LED_GREEN);
break;
case 31:
matrix2.drawBitmap(0, 0, minute_thirtyone_bmp, 8, 8, LED_GREEN);
break;
case 32:
matrix2.drawBitmap(0, 0, minute_thirtytwo_bmp, 8, 8, LED_GREEN);
break;
case 33:
matrix2.drawBitmap(0, 0, minute_thirtythree_bmp, 8, 8, LED_GREEN);
break;
case 34:
matrix2.drawBitmap(0, 0, minute_thirtyfour_bmp, 8, 8, LED_GREEN);
break;
case 35:
matrix2.drawBitmap(0, 0, minute_thirtyfive_bmp, 8, 8, LED_GREEN);
break;
case 36:
matrix2.drawBitmap(0, 0, minute_thirtysix_bmp, 8, 8, LED_GREEN);
break;
case 37:
matrix2.drawBitmap(0, 0, minute_thirtyseven_bmp, 8, 8, LED_GREEN);
break;
case 38:
matrix2.drawBitmap(0, 0, minute_thirtyeight_bmp, 8, 8, LED_GREEN);
break;
case 39:
matrix2.drawBitmap(0, 0, minute_thirtynine_bmp, 8, 8, LED_GREEN);
break;
case 40:
matrix2.drawBitmap(0, 0, minute_forty_bmp, 8, 8, LED_GREEN);
break;
case 41:
matrix2.drawBitmap(0, 0, minute_fortyone_bmp, 8, 8, LED_GREEN);
break;
case 42:
matrix2.drawBitmap(0, 0, minute_fortytwo_bmp, 8, 8, LED_GREEN);
break;
case 43:
matrix2.drawBitmap(0, 0, minute_fortythree_bmp, 8, 8, LED_GREEN);
break;
case 44:
matrix2.drawBitmap(0, 0, minute_fortyfour_bmp, 8, 8, LED_GREEN);
break;
case 45:
matrix2.drawBitmap(0, 0, minute_fortyfive_bmp, 8, 8, LED_GREEN);
break;
case 46:
matrix2.drawBitmap(0, 0, minute_fortysix_bmp, 8, 8, LED_GREEN);
break;
case 47:
matrix2.drawBitmap(0, 0, minute_fortyseven_bmp, 8, 8, LED_GREEN);
break;
case 48:
matrix2.drawBitmap(0, 0, minute_fortyeight_bmp, 8, 8, LED_GREEN);
break;
case 49:
matrix2.drawBitmap(0, 0, minute_fortynine_bmp, 8, 8, LED_GREEN);
break;
case 50:
matrix2.drawBitmap(0, 0, minute_fifty_bmp, 8, 8, LED_GREEN);
break;
case 51:
matrix2.drawBitmap(0, 0, minute_fiftyone_bmp, 8, 8, LED_GREEN);
break;
case 52:
matrix2.drawBitmap(0, 0, minute_fiftytwo_bmp, 8, 8, LED_GREEN);
break;
case 53:
matrix2.drawBitmap(0, 0, minute_fiftythree_bmp, 8, 8, LED_GREEN);
break;
case 54:
matrix2.drawBitmap(0, 0, minute_fiftyfour_bmp, 8, 8, LED_GREEN);
break;
case 55:
matrix2.drawBitmap(0, 0, minute_fiftyfive_bmp, 8, 8, LED_GREEN);
break;
case 56:
matrix2.drawBitmap(0, 0, minute_fiftysix_bmp, 8, 8, LED_GREEN);
break;
case 57:
matrix2.drawBitmap(0, 0, minute_fiftyseven_bmp, 8, 8, LED_GREEN);
break;
case 58:
matrix2.drawBitmap(0, 0, minute_fiftyeight_bmp, 8, 8, LED_GREEN);
break;
case 59:
matrix2.drawBitmap(0, 0, minute_fiftynine_bmp, 8, 8, LED_GREEN);
break;
}
matrix2.writeDisplay();
}
int cycleInvader (int i)
{
if(i == 3)
i = 1;
else
i += 1;
return i;
}
void displayInvader (int i, int s)
{
matrix3.clear();
matrix4.clear();
// Animate invader
if((s % 2) == 0)
{
switch (i)
{
case 1:
matrix3.drawBitmap(0, 0, invader_1AA_bmp, 8, 8, LED_YELLOW);
matrix4.drawBitmap(0, 0, invader_1AB_bmp, 8, 8, LED_YELLOW);
break;
case 2:
matrix3.drawBitmap(0, 0, invader_2AA_bmp, 8, 8, LED_YELLOW);
matrix4.drawBitmap(0, 0, invader_2AB_bmp, 8, 8, LED_YELLOW);
break;
case 3:
matrix3.drawBitmap(0, 0, invader_3AA_bmp, 8, 8, LED_YELLOW);
matrix4.drawBitmap(0, 0, invader_3AB_bmp, 8, 8, LED_YELLOW);
break;
}
}
else
{
switch (i)
{
case 1:
matrix3.drawBitmap(0, 0, invader_1BA_bmp, 8, 8, LED_YELLOW);
matrix4.drawBitmap(0, 0, invader_1BB_bmp, 8, 8, LED_YELLOW);
break;
case 2:
matrix3.drawBitmap(0, 0, invader_2BA_bmp, 8, 8, LED_YELLOW);
matrix4.drawBitmap(0, 0, invader_2BB_bmp, 8, 8, LED_YELLOW);
break;
case 3:
matrix3.drawBitmap(0, 0, invader_3BA_bmp, 8, 8, LED_YELLOW);
matrix4.drawBitmap(0, 0, invader_3BB_bmp, 8, 8, LED_YELLOW);
break;
}
}
matrix3.writeDisplay();
matrix4.writeDisplay();
}
void shootInvader ()
{
matrix3.clear();
matrix4.clear();
matrix3.drawBitmap(0, 0, invader_popA_bmp, 8, 8, LED_YELLOW);
matrix4.drawBitmap(0, 0, invader_popB_bmp, 8, 8, LED_YELLOW);
matrix3.writeDisplay();
matrix4.writeDisplay();
tone(speakerPin, 698, 250);
delay(250);
tone(speakerPin, 523, 250);
delay(250);
matrix3.clear();
matrix4.clear();
matrix3.writeDisplay();
matrix4.writeDisplay();
delay(2000);
currentInvader = cycleInvader(currentInvader);
}
【Arduino 动手做】Space Invaders:太空侵略者动画时钟
项目链接:https://www.instructables.com/Space-Invaders-Desktop-Clock/
项目作者:GeckoDiode
(加州大学洛杉矶分校热爱制作东西的学生)
项目视频:https://www.youtube.com/watch?v=qAj8b_ExIG4
项目代码:https://content.instructables.com/FK7/SP4Y/IF602FBD/FK7SP4YIF602FBD.ino
3D打印文件:https://content.instructables.com/FM4/Y7PX/IDOD0KS5/FM4Y7PXIDOD0KS5.stl
https://content.instructables.com/FB0/C1PB/IDOD0KS6/FB0C1PBIDOD0KS6.stl
激光SVG文件:
https://content.instructables.com/FGV/FBVZ/IDOD38CT/FGVFBVZIDOD38CT.svg


评论