Arduino 精要

来自Jack's Lab
跳转到: 导航, 搜索

目录

1 总览

Arduino I/O 之数字输入输出

Arduino I/O 之模拟输出

Arduino I/O 之数字输出扩流

Arduino memory

深入 PWM

撰写自己的 Arduino 库


阻抗和阻抗匹配

晶振电路

SPI 总线精要

I2C 总线精要

I2S 总线精要

ADC



2 扩展

Arduino Ethernet 的另一性价比选择

DHT21/AM2301 数字温湿度传感器

DHT11 数字温湿度传感器

夏普 GP2Y1010AU0F 灰尘传感器

PT550 光敏二极管光线传感器

SHT20 数字温湿度传感器

PT100/PT1000 工业级温度传感器

SSD1306 OLED 显示屏

Encoder 旋转编码器

MC105 可燃气体传感器

MEMS Mic

Digipot 数字电位器

RS485

RFID

LoRa

FT2232

LEON3

Geiger




3 应用

Arduino 监控客厅温度湿度



4 精华

Arduino bootloader 的烧写

面包板上的至简 Arduino

动手焊一个自己的 Arduino

Arduino 低功耗优化

ATtiny13

Eagle Tips

Raspberry



5 糖豆

5.1 float2str

String(NUMBER, SCALE);
String(3.141592,5);        # "3.14159"



5.2 Software Serial

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()  
{
  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop()
{
  if (mySerial.available())
    mySerial.write(Serial.read());
}



5.3 AT CMD

SerialEvent() is called after a loop(), if there is serial data in the buffer.

String input_str = "";              // a string to hold incoming data
boolean str_over = false;           // whether the string is complete

void setup() {
  Serial.begin(9600);
  input_str.reserve(200);           // reserve 200 bytes for the inputString:
}

void loop() {
  if (str_over) {
    // Identify the CMD and processing

    input_str = "";                 // clear the string buffer
    str_over = false;
  }
}

/*
 * SerialEvent occurs whenever a new data comes in the hardware serial RX.
 * This routine is run between each time loop() runs, so using delay inside
 * loop can delay response.  Multiple bytes of data may be available.
*/
void serialEvent() {
  while (Serial.available()) {
    char in = (char)Serial.read(); 
    input_str += in;

    if (in == '\n') {                // read a line into string buffer
      str_over = true;
    } 
  }
}



5.4 Hex str to ull

char hexstr2bin(char c) {
 if (isdigit(c)) {  // 0 - 9
   return c - '0';
 } else if (isxdigit(c)) { // A-F, a-f
   return (c & 0xF) + 9;
 }
 return -1;
}

unsigned long long hexstr2ull(char * string)
{
  unsigned long long x =0;
  char c;
  do {
    c = hexstr2bin(*string++);
    if (c < 0)
      break;
    x = (x << 4) | c;
 } while (1);
 return x;
}



6 资源




7 Notes

0欧电阻和磁珠

谐振频率和抑制噪声

高频下过孔大小和走线长度对信号的影响

过孔和线宽与电流关系

PCB 板材参数

Altium Designer PCB 设计规则中英对照

RT5350F



8 Reference













个人工具
名字空间

变换
操作
导航
工具箱