arduino相关:为什么想通过红外遥控控制OLED屏变化没法实现。

这是我想要通过红外遥控控制舵机跟灯:


#include <IRremote.h>
#include <Servo.h>  //调用舵机库
Servo myservo;  // 定义舵机对象


int RECV_PIN = 4;
int red = 9;
int green = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  myservo.attach(12);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  digitalWrite(red, HIGH);
  myservo.write(0);  delay(3000);
}

void loop() {
 if (irrecv.decode(&results)) {
  Serial.println(results.value, HEX);
  if(results.value == 0xFF18E7){ 
    digitalWrite(red, LOW);
    digitalWrite(green, HIGH);
    delay (1000);
    digitalWrite(green, LOW);
    delay (1000);
    digitalWrite(green, HIGH);
    myservo.write(90);  delay(3000);
  } 
  else if (results.value == 0xFF4AB5){
    digitalWrite(green, LOW);
    digitalWrite(red, HIGH);
    delay (1000);
    digitalWrite(red, LOW);
    delay (1000);
    digitalWrite(red, HIGH);
    myservo.write(0);  delay(3000);
  }
  else if (results.value == 0xFFA25D){
      digitalWrite(green, LOW); 
      digitalWrite(red, HIGH);
      delay (500);
      digitalWrite(red, LOW);
      delay (500);
      digitalWrite(red, HIGH);
      delay (500);
      digitalWrite(red, LOW);
      delay (500); 
      digitalWrite(red, HIGH);     
  }
  irrecv.resume(); // Receive the next value
 }
 delay(100);
}

现在想加入SSD1306:

#include <SPI.h> // 加载SPI库
#include <Wire.h> // 加载Wire库
#include <Adafruit_GFX.h> // 加载Adafruit_GFX库
#include <Adafruit_SSD1306.h> // 加载Adafruit_SSD1306库

// 定义 OLED屏幕的分辨率
Adafruit_SSD1306 OLEDdisplay(128, 64, &Wire);//IIC总线实例,默认为&wrie

void setup() {
  //Serial.begin(9600); // 设置串口波特率
  //Serial.println("OLED FeatherWing test"); // 串口输出
  OLEDdisplay.begin(SSD1306_SWITCHCAPVCC,0x3C); // 设置OLED的I2C地址,大部分地址都为0x3C
  OLEDdisplay.clearDisplay();
}

void loop() {
  OLEDdisplay.clearDisplay(); // 清空屏幕
  OLEDdisplay.setTextSize(1); // 设置字体大小
  OLEDdisplay.setTextColor(SSD1306_WHITE); // 设置字体颜色
  OLEDdisplay.setCursor(25,20); // 设置开始显示文字的坐标(列x,行y)
  OLEDdisplay.println("H !"); // 输出的字符
  OLEDdisplay.display(); // 使更改的显示生效
}

但是加起来没法实现,OLED屏完全不搭理我TT。

  • 这篇博客: Arduino提高篇13—摇杆控制OLED移动显示中的 1. 根据原理图搭建电路图。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • OLED屏的VCC、GND分别连接开发板的3.3V、GND,OLED屏的SDA和SCL分别连接开发板的A4和A5。双轴按键摇杆模块的VCC、GND分别连接开发板的5V、GND,模块的X轴输出、Y轴输出分别连接开发板的模拟引脚A0、A1。

    实验原理图如下图所示:

    实验原理图

    实物连接图如下图所示:

    实物连接图