用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏

[未解决] 错误,求助

回帖奖励 2 金币 回复本帖可获得 1 金币奖励! 每人限 1 次(中奖概率 90%)
  • TA的每日心情
    擦汗
    2018-3-17 13:18
  • 签到天数: 30 天

    [LV.5]常住居民I

    写了一个函数,用来读取4*4键盘输入的数字,结果放到1602上显示inf111104.00之类的数字代码如下
    [C++] 纯文本查看 复制代码
    #include <Keypad.h>
    #include <LiquidCrystal_I2C.h>
     
    LiquidCrystal_I2C lcd(0x27, 16, 2); 
     
    const byte ROWS = 4; 
    const byte COLS = 4; 
    char keys[ROWS][COLS] = {
    {'1','2','3','+'},
    {'4','5','6','-'},
    {'7','8','9','*'},
    {'C','0','=','/'}
    };
    
    byte rowPins[ROWS] = {8,9,10,11};
    byte colPins[COLS] = {4,5,6,7};
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
     
    // --------------------------------------------------------------------------------------------------------------------
    float x1,x2,x3;
    //-------------------------------------------------------------------------------------------------------------------------------
    
    void setup()
    {
      pinMode(A0, INPUT);
      float ds(int q,int e);
    }
    
    //-----------------------------------------------------------------------
    
    void loop()
    {
      x1==ds(2,1);
    }
    
    
    float ds(int q,int e){
      int a;
       float x;
       int w = 0; 
      for(;;){
      a = keypad.getKey();
      if(a=='.'){
        w++;
      }
      else if(a =='+'||a =='-'||a =='*'||a =='/'){
        break;
      }
      while(a >= '0' && a <= '9'){
        if(w == '0'){
          x = a;
          lcd.setCursor(q, e);
          lcd.print(x);
          w--;
        }
          else if(w < '0'){
            x = x*10+a;
          lcd.setCursor(q, e);
          lcd.print(x);
            w--;
          }
          else if(w > '0'){
            x = x+a/10*w;
            lcd.setCursor(q, e);
            lcd.print(x);
            w++;
          }
        }
      }
       return (x);
      }



    发新帖
    发表评论
    高级模式  
    您需要登录后才可以回帖 登录 | 立即注册  
    关闭

    推荐主题 上一条 /2 下一条