Arduino(四)——可调电阻控制数码管数字

本来我们主要有 3 个方面

1.Arduino常见报错

2.AI模拟输入

3.可调电阻

1.Arduino常见的报错,我们来看下面这个


avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xdb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xdb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xdb
...

我们最常见的报错,也就是这种,那这到底是什么出了问题呢?

其实他是板子引导少坏了,一种简单的办法就是,我们把USB线拔出来重新拔出来再插入就行了(亲测)

还有一种也就是你的代码输错了,也会出现这个错误,遇到错误的时候我们首先就是要检查是否是我们的代码出错了

2.AI模拟输入

int analogRead (pin)表示0~7,就是我们的A1~A,可以接受模拟信号,我们所用的单片机是10位的,所以我们把 0~5 v 分成1024份(2的5次方),所以我们用 int 定义这个函数(因为这是整型),

我们再看这个代码


int table[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
void abc(int data)// 数字段码
{
  int c = table[data];
  for ( int i = 3 ; i <= 9 ; i++)
  {
    digitalWrite(i, c & 0x01);
    c >>= 1;
  }
  delay(100);


}

void setup() {

  for (int i = 3 ; i <= 9 ; i++)
  {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  int a;
  int b;
  a = analogRead(1);
  b = a / 200;
  abc(b);

}

我们在这里 (前半部分参见Arduino(二)),后面的loop是我们的关键部分,我们定义一个 a,b,我们让 a 赋值 analogRead(1)所读取的数(也就是0~1024),然后我们 让b赋值为a/200,

也就是取值为 0~5,然后我们放到abc子函数里,所以我们的数码管里的数字就会随着电压的变化而变化

3.可调蓝白电阻

一端接地     一端接正5伏   中间抽头接Ax(1<=x<=7)

猜你喜欢

转载自blog.csdn.net/ArtoriaLili/article/details/121411325