LCD1802字符转乱码-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 554|回复: 1

[未解决] LCD1802字符转乱码

[复制链接]
发表于 2021-11-27 11:11 | 显示全部楼层 |阅读模式
#include <Servo.h>
Servo myServo;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
char "°"=1;
const int TrigPin = 2; //发出超声波
const int EchoPin = 3; //收到反射回来的超声波
float cm; //因为测得的距离是浮点型的
int pos;
void setup() {
  myServo.attach(9);

  lcd.init();
  lcd.backlight();
  Serial.begin(9600); //设置波特率
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
}
void loop() {
  for (pos = 15; pos < 165; pos += 1) {
    myServo.write(pos);
    delay(50);
    digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
    delayMicroseconds(2);       // delayMicroseconds在更小的时间内延时准确
    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW); //通过这里控制超声波的发射
    cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
    cm = (int(cm * 100.0)) / 100.0; //保留两位小数

    switch (pos) {
      case 15:
        Serial.print("15°");
        Serial.print(cm);
        Serial.print("cm");
        Serial.println();
        lcd.setCursor(0, 0);
        lcd.print("15°");
        lcd.setCursor(6, 0);
        lcd.print(cm);
        lcd.setCursor(14, 0);
        lcd.print("Cm");

        break;
      case 45:
          Serial.print("45°");
          Serial.print(cm);
          Serial.print("cm");
          Serial.println();
          lcd.setCursor(0, 0);
          lcd.print("45°");
          lcd.setCursor(6, 0);
          lcd.print(cm);
          lcd.setCursor(14, 0);
          lcd.print("Cm");
          break;
        case 90:
            Serial.print("90°");
            Serial.print(cm);
            Serial.print("cm");
            Serial.println();
            lcd.setCursor(0, 0);
            lcd.print("90°");
            lcd.setCursor(6, 0);
            lcd.print(cm);
            lcd.setCursor(14, 0);
            lcd.print("Cm");
            break;
          case 120 :
              Serial.print("120°");
              Serial.print(cm);
              Serial.print("cm");
              Serial.println();
              lcd.setCursor(0, 0);
              lcd.print("120°");
              lcd.setCursor(6, 0);
              lcd.print(cm);
              lcd.setCursor(14, 0);
              lcd.print("Cm");
              break;
            case 165 :
                Serial.print("165° ");
                Serial.print(cm);
                Serial.print("cm");
                Serial.println();
                lcd.setCursor(0, 0);
                lcd.print("165°");
                lcd.setCursor(6, 0);
                lcd.print(cm);
                lcd.setCursor(14, 0);
                lcd.print("Cm");
                break;
              }

  }

  for (pos = 165; pos > 15; pos -= 1) {
    myServo.write(pos);
    delay(50);
    digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
    delayMicroseconds(2);       // delayMicroseconds在更小的时间内延时准确
    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW); //通过这里控制超声波的发射
    cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
    cm = (int(cm * 100.0)) / 100.0; //保留两位小数

    switch (pos) {
      case 15:
        Serial.print("15° ");
        Serial.print(cm);
        Serial.print("cm");
        Serial.println();
        lcd.setCursor(0, 0);
        lcd.print("15°");
        lcd.setCursor(6, 0);
        lcd.print(cm);
        lcd.setCursor(14, 0);
        lcd.print("Cm");
        break;
      case 45:
        Serial.print("45° ");
        Serial.print(cm);
        Serial.print("cm");
        Serial.println();
        lcd.setCursor(0, 0);
        lcd.print("45°");
        lcd.setCursor(6, 0);
        lcd.print(cm);
        lcd.setCursor(14, 0);
        lcd.print("Cm");
        break;
      case 90:
        Serial.print("90° ");
        Serial.print(cm);
        Serial.print("cm");
        Serial.println();
        lcd.setCursor(0, 0);
        lcd.print("90°");
        lcd.setCursor(6, 0);
        lcd.print(cm);
        lcd.setCursor(14, 0);
        lcd.print("Cm");
        break;
      case 120 :
        Serial.print("120° ");
        Serial.print(cm);
        Serial.print("cm");
        Serial.println();
        lcd.setCursor(0, 0);
        lcd.print("120°");
        lcd.setCursor(6, 0);
        lcd.print(cm);
        lcd.setCursor(14, 0);
        lcd.print("Cm");
        break;
      case 165 :
        Serial.print("165° ");
        Serial.print(cm);
        Serial.print("cm");
        Serial.println();

        lcd.setCursor(0, 0);
        lcd.print("165°");
        lcd.setCursor(6, 0);
        lcd.print(cm);
        lcd.setCursor(14, 0);
        lcd.print("Cm");
        break;
    }


  }
}
LCD显示“ ° ”乱码求解

发表于 2021-11-27 11:24 | 显示全部楼层
°应该不属于支持的字符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 19:46 , Processed in 0.097061 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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