找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3655|回复: 2
打印 上一主题 下一主题
收起左侧

arduino+U8glib控制0.96 OLED屏源程序

[复制链接]
跳转到指定楼层
楼主


Arduino源程序如下:
  1. #include "U8glib.h"

  2. #define RIGHT 0
  3. #define UP    1
  4. #define LEFT  2
  5. #define DOWN  3

  6. /*
  7. * OLED
  8.       arduino       OLED
  9.       D9        >     MOSI
  10.       D10      >     SCK
  11.       D11      >     DC
  12.       D12      >     CS
  13.       D13      >     RES
  14. SW SPI COM:
  15. SCK = 10, MOSI = 9 , CS = 12, A0 = 11, RES = 13
  16. */
  17. U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11, 13);

  18. int score = 0;
  19. int level = 1;
  20. int gamespeed = 100;
  21. int i;

  22. //组成单位,4X4像素点的方块。
  23. const uint8_t ele[] PROGMEM = {
  24.   0xf0, //B1111000
  25.   0xb0, //B1011000
  26.   0xd0, //B1101000
  27.   0xf0, //B1111000
  28. };

  29. //蛇
  30. void element(int x, int y) {
  31.   u8g.drawBitmapP(x,y, 1,4, ele);
  32. }

  33. struct FOOD {
  34.   int x;
  35.   int y;
  36.   int yes;  
  37. };

  38. FOOD food = {25, 30, 1};

  39. struct SNAKE {
  40.   int x[200];
  41.   int y[200];
  42.   int node;
  43.   int dir;
  44.   int lefe;
  45. };

  46. SNAKE snake = {{9,5}, {30,30}, 2, RIGHT, 0};

  47. //游戏基本界面
  48. void UI() {
  49.   u8g.drawFrame(0,1, 102,62);   //内边界
  50.   u8g.drawFrame(0,0, 102,64);   //外边界
  51.   u8g.setFont(u8g_font_5x7);    //设置字体
  52.   u8g.drawStr(104,12, "LEVEL"); //等级提示
  53.   u8g.drawStr(104,40, "SCORE"); //分数提示
  54. }

  55. void printScore(int x, int y, int s) {
  56.   u8g.setFont(u8g_font_6x10);
  57.   u8g.setPrintPos(x, y);
  58.   u8g.print(s);
  59. }

  60. void key() {
  61.   if(LOW == digitalRead(2)) {
  62.     snake.dir = DOWN;
  63.   }
  64.   if(LOW == digitalRead(3)) {
  65.     snake.dir = RIGHT;
  66.   }
  67.   if(LOW == digitalRead(4)) {
  68.     snake.dir = LEFT;
  69.   }
  70.   if(LOW == digitalRead(5)) {
  71.     snake.dir = UP;
  72.   }
  73. }

  74. void snakeGame() {

  75.   switch(snake.dir) {
  76.     case RIGHT:
  77.           snake.x[0] += 4;
  78.           if(snake.x[0]>=101) {
  79.             snake.x[0] = 1;
  80.           } break;
  81.     case UP:
  82.           snake.y[0] -= 4;
  83.           if(snake.y[0]<=1) {
  84.             snake.y[0] = 58;
  85.           } break;
  86.     case LEFT:
  87.           snake.x[0] -= 4;
  88.           if(snake.x[0]<=0) {
  89.             snake.x[0] = 97;
  90.           } break;
  91.     case DOWN:
  92.           snake.y[0] += 4;
  93.           if(snake.y[0]>=62) {
  94.             snake.y[0] = 2;
  95.           } break;
  96.   }  
  97.   
  98.   if((snake.x[0] == food.x) && (snake.y[0] == food.y)) {
  99.     snake.x[0] = food.x;
  100.     snake.y[0] = food.y;
  101.    
  102.     snake.node++;
  103.     food.yes = 1;
  104.     score += 2;
  105.     level = score/10+1;
  106.   }

  107.   for(i=snake.node-1;i>0;i--) {
  108.     snake.x[i] = snake.x[i-1];
  109.     snake.y[i] = snake.y[i-1];
  110.   }
  111. }

  112. void setup() {
  113.   pinMode(2, INPUT);
  114.   pinMode(3, INPUT);
  115.   pinMode(4, INPUT);
  116.   pinMode(5, INPUT);
  117.   
  118.   digitalWrite(2, HIGH);
  119.   digitalWrite(3, HIGH);
  120.   digitalWrite(4, HIGH);
  121.   digitalWrite(5, HIGH);
  122. }

  123. void loop() {
  124.   u8g.firstPage();
  125.   do {
  126.     UI();

  127. ……………………

  128. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
7Pin0.96 SPIsnake_arduino.rar (453.49 KB, 下载次数: 31)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:525651 发表于 2019-5-1 17:25 | 只看该作者
不错哦,学习一下
回复

使用道具 举报

板凳
ID:471632 发表于 2019-5-1 22:10 | 只看该作者
我手上的是iic通讯的oled 0.96
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表