上篇链接:https://harmonyos.51cto.com/posts/1541
11,电子骰子,使用一个电子数码管,电阻,滚珠开关;其中电子数码管是由8个LED灯组合的,有共阴极和共阳极,使用时需要了解阴阳,如果是共阴需要接GND;并且数码管极易烧坏,需要连接电阻;


源代码:(使用的是共阴极一位数码管)
class LedSegmentDisplays
{
private:
int ports[8];
int digits[10][8];
public:
LedSegmentDisplays(int a, int b, int c, int d, int e, int f, int g, int h)
{
ports[0] = a; ports[1] = b; ports[2] = c; ports[3] = d; ports[4] = e; ports[5] = f; ports[6] = g; ports[7] = h;
int digits_copy[10][8] = {
{1, 1, 1, 1, 1, 1, 0, 0}, // 0
{0, 1, 1, 0, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1, 0}, // 2
{1, 1, 1, 1, 0, 0, 1, 0}, // 3
{0, 1, 1, 0, 0, 1, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1, 0}, // 5
{1, 0, 1, 1, 1, 1, 1, 0}, // 6
{1, 1, 1, 0, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1, 0}, // 8
{1, 1, 1, 1, 0, 1, 1, 0} // 9
};
for(int i = 0; i < 8; i++)
pinMode(ports[i], OUTPUT);
for(int i = 0; i < 10; i++)
for(int j = 0; j < 10; j++)
digits[i][j] = digits_copy[i][j];
}
void noLight()
{
for(int i = 0; i < 8; i++)
digitalWrite(ports[i], LOW);
}
void d(int digit)
{
for(int i = 0; i < 8; i++)
digitalWrite(ports[i], digits[digit][i]);
}
};
void setup() {
randomSeed(analogRead(0)); //设置随机种子,配合random使用
pinMode(2, INPUT);
digitalWrite(2, HIGH);
}
LedSegmentDisplays Disp(3,10,7,8,9,4,5,6); //LedSegmentDisplays 是一个模板,Disp是模板下的实例
void loop() {
if(digitalRead(2) == LOW)
Disp.d(random(1,7)); // [1,6] d是实例Disp下的一个方法,radom不包含下限;
delay(20);
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
12,震荡的LED:需要光敏电阻,电阻,LED;
将光敏电阻一端接到5v,另一端接电阻,电阻接GND,两者中间拉出一条线接analogIn;


代码:
电铃的原理:通电时,电磁感应产生磁力,开关(振荡器)被吸引下拉,然后断电,线圈失去磁性,开关又复原,然后又通电;周而复始。这也是晶振的原理;

源代码:
13,测量温度。器材:LM35


LM35有三条腿,左边接正极,右边接地,中间接串口输出0端口;
14,红外热释报警。器材:红外热释传感器,蜂鸣器。红外热释传感器左边接5v,中间接数字输入7号,右边接GND;


有探测角度和探测距离等参数;
15,74HC595芯片。功能:扩展输入端口;


从8号端口输出一个1,在芯片内部设置8个位,然后这8个位作为输出,是并行同时输出。所以是串转并。
原文作者:kalinux