重新初始化 wire 到 D5D6

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

Wire.begin(14,12);

/*********************************************************************
This is an example for our Monochrome OLEDs based on SSD1306 driversPick one up today in the adafruit shop!------> http://www.adafruit.com/category/63_98This example is for a 128x64 size display using I2C to communicate
3 pins are required to interface (2 I2C and one reset)Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!Written by Limor Fried/Ladyada  for Adafruit Industries.
BSD license, check license.txt for more information
All text above, and the splash screen must be included in any redistribution
*********************************************************************/#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4//Adafruit_SSD1306 display(OLED_RESET);
//TwoWire  Wire;Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,B00000001, B11000000,B00000001, B11000000,B00000011, B11100000,B11110011, B11100000,B11111110, B11111000,B01111110, B11111111,B00110011, B10011111,B00011111, B11111100,B00001101, B01110000,B00011011, B10100000,B00111111, B11100000,B00111111, B11110000,B01111100, B11110000,B01110000, B01110000,B00000000, B00110000 };#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endifvoid setup()   {                Serial.begin(9600);Wire.begin(14,12);  //D5 .D6  sda/sdl// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)// init done// Show image buffer on the display hardware.// Since the buffer is intialized with an Adafruit splashscreen// internally, this will display the splashscreen.display.display();delay(2000);// Clear the buffer.display.clearDisplay();// draw a single pixeldisplay.drawPixel(10, 10, WHITE);// Show the display buffer on the hardware.// NOTE: You _must_ call display after making any drawing commands// to make them visible on the display hardware!display.display();delay(2000);display.clearDisplay();// draw many linestestdrawline();display.display();delay(2000);display.clearDisplay();// draw rectanglestestdrawrect();display.display();delay(2000);display.clearDisplay();// draw multiple rectanglestestfillrect();display.display();delay(2000);display.clearDisplay();// draw mulitple circlestestdrawcircle();display.display();delay(2000);display.clearDisplay();// draw a white circle, 10 pixel radiusdisplay.fillCircle(display.width()/2, display.height()/2, 10, WHITE);display.display();delay(2000);display.clearDisplay();testdrawroundrect();delay(2000);display.clearDisplay();testfillroundrect();delay(2000);display.clearDisplay();testdrawtriangle();delay(2000);display.clearDisplay();testfilltriangle();delay(2000);display.clearDisplay();// draw the first ~12 characters in the fonttestdrawchar();display.display();delay(2000);display.clearDisplay();// draw scrolling texttestscrolltext();delay(2000);display.clearDisplay();// text display testsdisplay.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0,0);display.println("Hello, world!");display.setTextColor(BLACK, WHITE); // 'inverted' textdisplay.println(3.141592);display.setTextSize(2);display.setTextColor(WHITE);display.print("0x"); display.println(0xDEADBEEF, HEX);display.display();delay(2000);display.clearDisplay();// miniature bitmap displaydisplay.drawBitmap(30, 16,  logo16_glcd_bmp, 16, 16, 1);display.display();delay(1);// invert the displaydisplay.invertDisplay(true);delay(1000); display.invertDisplay(false);delay(1000); display.clearDisplay();// draw a bitmap icon and 'animate' movementtestdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH);
}void loop() {}void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) {uint8_t icons[NUMFLAKES][3];// initializefor (uint8_t f=0; f< NUMFLAKES; f++) {icons[f][XPOS] = random(display.width());icons[f][YPOS] = 0;icons[f][DELTAY] = random(5) + 1;Serial.print("x: ");Serial.print(icons[f][XPOS], DEC);Serial.print(" y: ");Serial.print(icons[f][YPOS], DEC);Serial.print(" dy: ");Serial.println(icons[f][DELTAY], DEC);}while (1) {// draw each iconfor (uint8_t f=0; f< NUMFLAKES; f++) {display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE);}display.display();delay(200);// then erase it + move itfor (uint8_t f=0; f< NUMFLAKES; f++) {display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK);// move iticons[f][YPOS] += icons[f][DELTAY];// if its gone, reinitif (icons[f][YPOS] > display.height()) {icons[f][XPOS] = random(display.width());icons[f][YPOS] = 0;icons[f][DELTAY] = random(5) + 1;}}}
}void testdrawchar(void) {display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0,0);for (uint8_t i=0; i < 168; i++) {if (i == '\n') continue;display.write(i);if ((i > 0) && (i % 21 == 0))display.println();}    display.display();delay(1);
}void testdrawcircle(void) {for (int16_t i=0; i<display.height(); i+=2) {display.drawCircle(display.width()/2, display.height()/2, i, WHITE);display.display();delay(1);}
}void testfillrect(void) {uint8_t color = 1;for (int16_t i=0; i<display.height()/2; i+=3) {// alternate colorsdisplay.fillRect(i, i, display.width()-i*2, display.height()-i*2, color%2);display.display();delay(1);color++;}
}void testdrawtriangle(void) {for (int16_t i=0; i<min(display.width(),display.height())/2; i+=5) {display.drawTriangle(display.width()/2, display.height()/2-i,display.width()/2-i, display.height()/2+i,display.width()/2+i, display.height()/2+i, WHITE);display.display();delay(1);}
}void testfilltriangle(void) {uint8_t color = WHITE;for (int16_t i=min(display.width(),display.height())/2; i>0; i-=5) {display.fillTriangle(display.width()/2, display.height()/2-i,display.width()/2-i, display.height()/2+i,display.width()/2+i, display.height()/2+i, WHITE);if (color == WHITE) color = BLACK;else color = WHITE;display.display();delay(1);}
}void testdrawroundrect(void) {for (int16_t i=0; i<display.height()/2-2; i+=2) {display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, WHITE);display.display();delay(1);}
}void testfillroundrect(void) {uint8_t color = WHITE;for (int16_t i=0; i<display.height()/2-2; i+=2) {display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, color);if (color == WHITE) color = BLACK;else color = WHITE;display.display();delay(1);}
}void testdrawrect(void) {for (int16_t i=0; i<display.height()/2; i+=2) {display.drawRect(i, i, display.width()-2*i, display.height()-2*i, WHITE);display.display();delay(1);}
}void testdrawline() {  for (int16_t i=0; i<display.width(); i+=4) {display.drawLine(0, 0, i, display.height()-1, WHITE);display.display();delay(1);}for (int16_t i=0; i<display.height(); i+=4) {display.drawLine(0, 0, display.width()-1, i, WHITE);display.display();delay(1);}delay(250);display.clearDisplay();for (int16_t i=0; i<display.width(); i+=4) {display.drawLine(0, display.height()-1, i, 0, WHITE);display.display();delay(1);}for (int16_t i=display.height()-1; i>=0; i-=4) {display.drawLine(0, display.height()-1, display.width()-1, i, WHITE);display.display();delay(1);}delay(250);display.clearDisplay();for (int16_t i=display.width()-1; i>=0; i-=4) {display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE);display.display();delay(1);}for (int16_t i=display.height()-1; i>=0; i-=4) {display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE);display.display();delay(1);}delay(250);display.clearDisplay();for (int16_t i=0; i<display.height(); i+=4) {display.drawLine(display.width()-1, 0, 0, i, WHITE);display.display();delay(1);}for (int16_t i=0; i<display.width(); i+=4) {display.drawLine(display.width()-1, 0, i, display.height()-1, WHITE); display.display();delay(1);}delay(250);
}void testscrolltext(void) {display.setTextSize(2);display.setTextColor(WHITE);display.setCursor(10,0);display.clearDisplay();display.println("scroll");display.display();delay(1);display.startscrollright(0x00, 0x0F);delay(2000);display.stopscroll();delay(1000);display.startscrollleft(0x00, 0x0F);delay(2000);display.stopscroll();delay(1000);    display.startscrolldiagright(0x00, 0x07);delay(2000);display.startscrolldiagleft(0x00, 0x07);delay(2000);display.stopscroll();
}

nodemcu Adafruit_SSD1306 D1D2 冲突解决相关推荐

  1. mysql 主从,主主,主主复制时的主键冲突解决

    原理:slave 的i/o thread ,不断的去master抓取 bin_log, 写入到本地relay_log 然后sql thread不断的更新slave的数据 把主服务器所有的数据复制给从服 ...

  2. Android Studio中架包打包和依赖冲突解决

    一.为什么使用aar打包,而不是jar 随着Android Studio的使用越来越广泛,使用aar打包这种方式也越来越可行实际. jar打包只打源代码,像资源文件不会打包,而aar恰恰是jar打包的 ...

  3. Android滑动冲突解决方法

    Android滑动冲突解决方法 滑动冲突 首先讲解一下什么是滑动冲突.当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够 ...

  4. Android Studio androidx 包冲突解决方法

    Android Studio androidx 包冲突解决方法 参考文章: (1)Android Studio androidx 包冲突解决方法 (2)https://www.cnblogs.com/ ...

  5. Java 8中HashMap冲突解决

    Java 8中HashMap冲突解决 目录(?)[+] 在Java 8 之前,HashMap和其他基于map的类都是通过链地址法解决冲突,它们使用单向链表来存储相同索引值的元素.在最坏的情况下,这种方 ...

  6. Git的冲突解决过程

    下面图是我总结一次提交遇到冲突解决的过程. 1. 把本地工作区的修改提交到本地仓库 2. 从远程仓库拉取代码,与本地仓库合并(pull = fetch + merge) 3. 本地仓库的代码推送回工作 ...

  7. git merge git pull时候遇到冲突解决办法git stash

    git merge git pull时候遇到冲突解决办法git stash 在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes t ...

  8. git 文件全部标红_git冲突解决,代码冲突、合并冲突。【IDEA版本】

    其实所谓的冲突就是同一个文件同时被多个人修改了,导致git服务不知道要保存谁的. 一.同一个版本冲突解决 1-1.当我们正常拉取代码的时候,结果是这样的. 1-2.如果有冲突的时候,将是这样的 解决冲 ...

  9. 《系统集成项目管理工程师》必背100个知识点-54冲突解决方法

    常用的冲突解决方法? (1)问题解决 (2)合作 (3)强制(命令) (4)妥协(调解) (5)求同存异(缓和.包容) (6)撤退(回避) 合作.解决问题 综合考虑不同的观点和意见,采用合作的态度和开 ...

最新文章

  1. mysql教程日志_mysql日志文件的详细说明
  2. AlertDialog具体解释
  3. 浅析Node模块中module.exports与exports的关系
  4. SQL Server 2005 学习笔记之触发器简介[转]
  5. 计算机系中学生的自我鉴定,中学生毕业自我鉴定
  6. 你要避开的 5 个数据驱动雷区
  7. Flex学习记录(一)——MXML基本知识
  8. 关于监听UITextField的问题
  9. vue中的data用return返回
  10. sift算法_单应性Homograph估计:从传统算法到深度学习
  11. python 近期用到的基础知识汇总(主要是numpy和pytorch的相关矩阵变化函数)(一)
  12. JavaScript中的ActiveXObject对象
  13. 2022年电子电路铜箔行业上下游产业链分析预测及市场规模供需平衡度研究
  14. JAVA中InputStream转base64
  15. 专科转行学java_IT技术学费昂贵,大专生转行学IT有必要去培训班吗
  16. vc2005 应用程序正常初始化(0XC0150002)失败
  17. QT QColor颜色选择器学习
  18. 身体知道酸奶富含LGG益生菌,被称为肠道内的清道夫?
  19. 可裂解组织蛋白酶的ADC偶联物-靶向抗体偶联技术
  20. js实现chrome浏览器copy复制功能

热门文章

  1. 车道偏离预警——LDW Carsim与simulink联合仿真模型,采用Carsim中自带场景+基于预瞄的驾驶员模型
  2. 力天创见FLIR Brickstream客流系统
  3. 机械制图:直线的投影
  4. 对于java开发岗位的理解面试,【面试必会】
  5. 动物分类name,bloodType,giveBirth,canFly,liveInWater
  6. 检索、阅读、写论文的好用小工具 自存
  7. 区块链电子发票与传统电子发票的区别
  8. 计算机网络中确认rr2是什么意思,哈工大Mooc——计算机网络:作业2
  9. 爬虫案例之爬取国家药监局化妆品生产许可明细(爬取动态加载数据)
  10. STM32CubeMX | 29-使用硬件I2C读取甲醛传感器SGP30