4.常见的单片机类型:51/stm32,arduino/树莓派,FPGA
5.模拟信号在时间上是连续的,数字信号是指自变量和因变量都是离散的信号
6.CBA,原因是代码逻辑的纠错和电路接线问题的一般来说要比排查外设是否正常来说要复杂,先从简简单的问题排查可以提高效率。第二步排查外电路要比找逻辑错误更直观。
7.图为蜂鸣器模块电路图,工作原理:蜂鸣器模块由电阻、二极管、电容和扬声器等组件组成,GND接电源负极。当VCC端通入5V电压时,由TIM3_CH1(PB4)微处理器产生PWM脉冲输入信号,由Q1晶体管放大后驱动蜂鸣器,使之发出声响,其中二极管D1是用于吸收反向脉冲保护Q1晶体管。蜂鸣器电路
9.

int a=1;
if(a==1) a++

8.
使用arduino控制呼吸灯。呼吸灯,顾名思义,像呼吸一样,一明一暗、渐变地去控制灯的亮度变化,看以下示例程序:


/* 使用analogWrite()函数来让LED亮度渐变。AnalogWrite 通过PWM技术(脉宽调制技术)工作,采用PWM技术能够快速的开关一个数字引脚,通电的时间和断电的时间按照一定的比例分配,这样一来就产生了亮度渐变效果。*/
int led=9; //LED灯连接在9号引脚
int brightness = 0;//LED灯亮度
int fadeAmount= 5;//亮度渐变值
void setup(){      //初始化函数
pinMode (led,OUTPUT);  //设置LED引脚为输出模式
}
void loop(){   //进入循环
analogWrite(ledPin,brightness);    //LED引脚模拟输出进行亮度传参,pwm的脉冲宽度
brightness = brightness + fadeAmount;  // 改变下次的亮度值: 让LED的熄灭和点亮有渐变效果
// 一次渐变结束后改变亮度变化的方向
if(brightness ==0 || brightness==255){    //判断brightness变量的值是0或255
fadeAmount = - fadeAmount;   //下次进入循环时亮度就会跟着由弱转亮或由亮转弱
}
delay(30);   //延时30ms增强效果
}

理解每一步程序语句的含义,尝试换一种逻辑控制方式,写出呼吸灯的控制程序

/*Uno R3开发板上,第3、5、6、9、10、11引脚具有PWM(Pulse Width Modulation脉冲宽度调制)功能
通过使用analogWrtie()函数,在指定的引脚上通过高低电平的不断转换输出一个周期固定的方波,通过改变高低电平在每个周期中所占的比例(占空比),进而得到不同的电压输出。
当一个周期内高电平出现时间长一些时,输出电压就会高一些,LED灯更亮一些。当高电平出现的时间短一些时,输出电压就会低一些,LED灯亮度则会暗一些。*/
int ledPin = 3;   设置LED灯对应的引脚是pin3
void setup ()   //初始化函数
{
  pinMode(ledPin,OUTPUT);   设置LED引脚为输出模式
}
void loop()  //进入循环
{
  for (int a=0; a<=255;a++)                //循环语句,控制PWM亮度的增加
  {
    analogWrite(ledPin,a);
    delay(8);                             //当前亮度级别维持的时间,单位毫秒            
  }
  for (int a=255; a>=0;a--)             //循环语句,控制PWM亮度减小
  {
    analogWrite(ledPin,a);
    delay(8);                             //当前亮度的维持的时间,单位毫秒  
  }
}

10.

int main(){
int a=3,b=4,c;  //不宜将a、b放到main函数外
c=a+b;
printf(“c=%d”,&c);
return 0;
}

11.按键消抖(以arduino开发板为例)
第一种:使用Bounce2库(软件消抖)
代码如下:

#include
#define BUTTON 12//按钮连接的针脚
Bounce debouncer = Bounce();//实例化一个抖动对象
int val=0;//变量val存储按钮的状态,因为是下拉电阻,默认是LOW(即0)
int old_val=0;//存储val变量的上一个时间状态
int state=0;//打印到串口的数据,按钮每被按下一次,state自增1
void setup() {
pinMode(BUTTON,INPUT);
debouncer.attach(BUTTON);//将抖动对象绑定到按钮针脚
debouncer.interval(5);//间隔是5ms
Serial.begin(9600);//用于串口输出
}
void loop() {
debouncer.update();//更新
val=debouncer.read();读取输入数值并且存储
if((val==HIGH)&amp;&amp;(old_val==LOW))//检查按钮的变化情况
{
printState();
}
old_val=val;//val现在是旧的了,暂存一下
}
void printState()
{
state++;
Serial.println(state);
}

该种方法的消抖是最接近于完美的消抖方法。
第二种方法:硬件消抖
唯一的区别是:添加上了一个陶瓷电容(100nf),和下拉电阻并联,利用电容的快速充放电特性来过滤掉按钮的抖动(100nf是测试得来的数值,小伙伴门可以自己尝试)。
缺点:增加额外元件

Last modification:October 27th, 2020 at 08:10 pm
小编饿得写不动了,请给小编加鸡腿