Arduino学习模拟输出

1.实现效果,通过两个按键可以控制led变亮或者变暗
在这里插入图片描述

boolean pushButton1;//定义布尔型变量存储按键1的状态
boolean pushButton2;//定义布尔型变量存储按键2的状态
int ledPin=9;//LED引脚号
int brightness=128;//LED亮度参数

void setup()
{
pinMode(2,INPUT_PULLUP);//2脚设置为上拉模式
pinMode(8,INPUT_PULLUP);//8脚设置为上拉模式
pinMode(ledPin,OUTPUT);//LED脚,即9脚设置为输出模式
Serial.begin(9600);//启动串口,波特率设置为9600
}

void loop()
{
  pushButton1=digitalRead(2);//读取2脚电平状态,并赋值给布尔变量pushButton1
  pushButton2=digitalRead(8);//读取8脚电平状态,并赋值给布尔变量pushButton2
    if(!pushButton1 && brightness>0)//当按键1按下,且LED亮度大于0
      {                             
        brightness--;               //降低LED亮度参数
      }
    else if(!pushButton2 && brightness<255)//当按键2按下,且LED亮度小于255
      {
        brightness++;               //增加LED亮度参数
      }
  analogWrite(ledPin,brightness);   //模拟输出控制LED亮度
  Serial.println(brightness);       //将亮度参数显示在串口上
  delay(10);
}

2.用for循环语句和if……if else实现呼吸灯的效果

int ledPin=9;//LED引脚号

void setup()
{
pinMode(ledPin,OUTPUT);//LED脚,即9脚设置为输出模式
Serial.begin(9600);//启动串口,波特率设置为9600
}

void loop()
{
  for(int ligth=0;ligth<=255;ligth++)
  {
    analogWrite(9,ligth);
    Serial.println(ligth);       //将亮度参数显示在串口上
    delay(10);
  }

  for(int ligth=255;ligth>=0;ligth--)
  {
    analogWrite(ledPin,ligth);    //9脚输出电压值
    Serial.println(ligth);       //将亮度参数显示在串口上
    delay(10);
  }
}
int ledPin=9;//LED引脚号
int dir=1;
int ligth=0;
void setup()
{
pinMode(ledPin,OUTPUT);//LED脚,即9脚设置为输出模式
Serial.begin(9600);//启动串口,波特率设置为9600
}


void loop()
{
  if(dir==1)
  {
    Serial.println(ligth);       //将亮度参数显示在串口上
    delay(10);
    ligth++;
    if(ligth==255)
    {
     dir=0;
     }
  }
  else if(dir==0)
   {
    Serial.println(ligth);       //将亮度参数显示在串口上
    delay(10);
    ligth--;
    if(ligth==0)
    {
    dir=1;  
    }
   }
}
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个ESP32 Arduino的模拟量校准示例代码,它可以帮助你校准模拟输入引脚的电压值: ```cpp const int analogInputPin = A0; // 模拟输入引脚 const float referenceVoltage = 3.3; // 参考电压 (单位: V) const float expectedVoltage = 1.5; // 期望的电压 (单位: V) void setup() { Serial.begin(115200); pinMode(analogInputPin, INPUT); } void loop() { // 在串口监视器中显示当前的ADC值和电压值 int sensorValue = analogRead(analogInputPin); float voltage = sensorValue * (referenceVoltage / 4095.0); Serial.print("ADC Value: "); Serial.print(sensorValue); Serial.print(", Voltage: "); Serial.println(voltage, 4); // 计算校准系数 float calibrationFactor = expectedVoltage / voltage; // 校准后的电压值 float calibratedVoltage = voltage * calibrationFactor; Serial.print("Calibrated Voltage: "); Serial.println(calibratedVoltage, 4); delay(1000); } ``` 此示例中,我们首先定义了模拟输入引脚(`analogInputPin`),参考电压(`referenceVoltage`)和期望的电压(`expectedVoltage`)。 在`setup()`函数中,我们初始化串口通信,并将模拟输入引脚设置为输入模式。 在`loop()`函数中,我们读取模拟输入引脚的ADC值,并将其转换为电压值。然后,我们计算校准系数(`calibrationFactor`),通过期望的电压除以实际测量得到的电压。最后,我们将校准后的电压值打印到串口监视器中。 你可以根据需要更改参考电压和期望电压的值,并观察串口监视器中的输出,以进行模拟量校准。希望这个示例对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值