美文网首页
基于 Arduino 的 “Esp8266-12F” + “0.

基于 Arduino 的 “Esp8266-12F” + “0.

作者: 大林哥 | 来源:发表于2021-03-02 11:13 被阅读0次

    /**

    • 通过串口接收 Esp8266或其他 MCU 发过来的 数字,并用数码管显示出来
    • 真是案例,已通过验证
    • 数码管引脚与其LED对应图(0.28,共阳,1位),参见:
    • https://www.jianshu.com/p/4428ac81933a
      */
      char in_num = 0;
      byte pins[7] = {4,5,9,12,13,14,16}; // 根据数组下标,从数码管的最上方的led开始,按顺时针方向开始数,然后在中间结束,位0-6(即最上方的led的下标为0,中间的led的下标为6)
      void setup()
      {
      for(byte i=0;i<7;i++) pinMode(pins[i], OUTPUT);

    Serial.begin(9600);
    while (!Serial);
    if(Serial) Serial.println("Serial ok !");
    }

    void loop() {
    // put your main code here, to run repeatedly:
    if(Serial.available() > 0)
    {
    int sr = Serial.read();
    if(sr > 47 && sr < 58) in_num = char(sr);
    }
    if(in_num > 47 && in_num < 58) setNum(in_num);
    }

    // 1位数码管数字显示;根据传入的1位数数字,在数码管上显示出对应的数字
    void setNum(int num)
    {
    for(byte i=0;i<7;i++) digitalWrite(pins[i], 1); // 先熄灭全部的led,然后在根据要显示的数字点亮对应的led
    switch(num)
    {
    case '0':
    for(byte i=0;i<6;i++) digitalWrite(pins[i], 0);
    break;
    case '1':
    digitalWrite(pins[1], 0);
    digitalWrite(pins[2], 0);
    break;
    case '2':
    for(byte i=0;i<7;i++) if(i != 2 && i != 5) digitalWrite(pins[i], 0);
    break;
    case '3':
    for(byte i=0;i<7;i++) if(i != 4 && i != 5) digitalWrite(pins[i], 0);
    break;
    case '4':
    digitalWrite(pins[1], 0);
    digitalWrite(pins[2], 0);
    digitalWrite(pins[5], 0);
    digitalWrite(pins[6], 0);
    break;
    case '5':
    for(byte i=0;i<7;i++) if(i != 1 && i != 4) digitalWrite(pins[i], 0);
    break;
    case '6':
    for(byte i=0;i<7;i++) if(i != 1) digitalWrite(pins[i], 0);
    break;
    case '7':
    digitalWrite(pins[0], 0);
    digitalWrite(pins[1], 0);
    digitalWrite(pins[2], 0);
    break;
    case '8':
    for(byte i=0;i<7;i++) digitalWrite(pins[i], 0);
    break;
    case '9':
    for(byte i=0;i<7;i++) if(i != 4) digitalWrite(pins[i], 0);
    break;
    }
    }

    相关文章

      网友评论

          本文标题:基于 Arduino 的 “Esp8266-12F” + “0.

          本文链接:https://www.haomeiwen.com/subject/yhptqltx.html