(原) Arduino记录

原创文章,请后转载,并注明出处。

最近使用arduino较多,作一个统一的记录。

安装esp8266开发板管理网址 https://github.com/esp8266/Arduino/releases/download/2.5.0/package_esp8266com_index.json

安装esp32开发板管理网址 https://dl.espressif.com/dl/package_esp32_index.json

Arduino字符串笔记 https://www.cnblogs.com/dapenson/p/12822519.html

关于程序太大,空间不足

除了换大空间的芯片以外,esp32在arduino中是有设置的

缺省设置为4MB Flash,其中1.2MB App使用,1.5MB SPIFFS使用,太浪费了。

这里我选择了小存储:1.9MB程序带OTA以及190K存储。因为我还希望使用OTA功能,毕竟不能每次都靠在线更新固件。

否则,你可以选择HugoAPP,享有3MB程序空间,基本上大部份程序都够了。3MB都不够的,项目也够大了,选择8MB空间,应该的。

字符串转数字 String to Int

/*
使用String.toInt()将字符串转为数字示例
 */

String inString = "";    // string to hold input

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // send an intro:
  Serial.println("\n\nString toInt():");
  Serial.println();
}

void loop() {
  // Read serial input:
  while (Serial.available() > 0) {
    int inChar = Serial.read();
    if (isDigit(inChar)) {
      // convert the incoming byte to a char
      // and add it to the string:
      inString += (char)inChar;
    }
    // if you get a newline, print the string,
    // then the string's value:
    if (inChar == '\n') {
      Serial.print("Value:");
      Serial.println(inString.toInt());
      Serial.print("String: ");
      Serial.println(inString);
      // clear the string for new input:
      inString = "";
    }
  }
}

数字转字符串 Int to String

  1. 直接赋值

String myNumber = 1234;

  1. 使用类成员函数转换,将数字自动追加到字符串结尾
int value = 123;
String myReadout = "The reading was ";
myReadout.concat(value);
  1. 使用类运算符转换,将数字自动追加到字符串结尾
int value = 123;
String myReadout = "The reading was ";
myReadout += value;

常见函数整理

** String.c_str() **

一个将string转换为 const* char的函数。 c_str函数的返回值是const char的,不能直接赋值给char

    String s = "Chelse";  
    const char *str = s.c_str();  

** strcpy **

原型声明:char strcpy(char dest, const char *src);

strcpy(A, B.c_str());//将B复制给A

** sprintf **

把整数123 打印成一个字符串保存在s 中。

char *s;
sprintf(s, "%d", 123); //产生"123"

char*, const char*, string 三者转换

** const char* 和 String 转换

  1. 直接赋值
const char* tmp = "tsinghua"
string s = tmp;
  1. 利用c_str()
string s = "Arduino";
const char*tmp = s.c_str();

** char* 和 const char* 转换 **

  1. 利用const_cast<char*>
const char* tmp = "Arduino";
char* p = const_cast<char*>(tmp);
  1. 直接赋值即可
char* p = "tsinghua"
const char* tmp = p;

** char* 和 string转换 **

  1. 直接赋值即可
char* p = "Arduino"
string str = p;
  1. string转化为char*,走两步,先是string->const char,然后是const char->char*
string str = "Arduino";
char* p = const_cast<char*>(str.c_str());