模拟 I/O

Maixduino 使用 K210 芯片的 PWM 模块实现模拟输出 analogWrite() 功能。 不能使用模拟输入 analogRead() 功能

Maixduino 可以在 48 个自由引脚中最多选择 12 个设置模拟输出功能。(使用硬件定时器会减少可用引脚。)

analogWrite()

描述

设置一个模拟值(PWM波)到选定引脚。 可用于点亮不同亮度的LED或改变驱动电机的速度。

用法

analogWrite(pin, value)

参数

pin: 要设置的引脚。允许的数据类型: intvalue: 占空比,取值 0 - 255 . 允许的数据类型: int

返回值

注意事项

使用 Ticker 库或者硬件定时器可能会和 PWM 产生冲突。


analogWriteResolution()

描述

analogWriteResolution() 是 Maixduino 的扩展 API 。

analogWriteResolution() 用于设置 analogWrite() 的精度. 默认为 8 位 (取值范围 0-255)。

通过将精度设置为 12 位, analogWrite() 的取值范围可变为 0 - 4095 。

用法

analogWriteResolution(bits)

参数

bits: 确定analogWrite()函数中使用的值的分辨率(以位为单位)。该值的范围为1到32。

返回值

注意事项

通过调整PWM占空比可能不会导致显着的精度变化。

示例代码

示例代码 Maix Bit, Maix Dock, Maix Go

int led1 = 12; // LED_BLUE
int led2 = 13; // LED_GREEN | LED_BUILTIN
int led3 = 14; // LED_RED

void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}

void setColor(int red, int green, int blue)
{
  analogWrite(led1, 255-blue);
  analogWrite(led2, 255-green);
  analogWrite(led3, 255-red);
}

void loop()
{
  int i, j;
  for (i=0, j=255; i<256; i++)
  {
    setColor(i, j, 0);
    delay(4);
    j--;
  }
  delay(100);           
  for (i=0, j=255; i<256; i++)
  {
    setColor(j, 0, i);
    delay(4);
    j--;
  }
  delay(100);           
  for (i=0, j=255; i<256; i++)
  {
    setColor(0, i, j);
    delay(4);
    j--;
  }
  delay(100);        
}

示例代码 Maixduino

int led1 = 1; // LED_BUILTIN

void setup()
{
  pinMode(led1, OUTPUT);
}

void setColor(int value)
{
  analogWrite(led1, 255-value);
}

void loop()
{
  int i;
  for (i=0; i<256; i++)
  {
    setColor(i);
    delay(4);
  }
  delay(100);        
}