小白7号 发表于 2014-12-15 19:01:14

求助代码问题

错误:




MB.ino: In function 'void loop()':
MB:46: error: invalid operands of types 'float' and 'int' to binary 'operator%'
MB:51: error: invalid operands of types 'float' and 'int' to binary 'operator%'
MB:57: error: invalid operands of types 'float' and 'int' to binary 'operator%'
MB:62: error: 'x' was not declared in this scope
代码:
//设置阴极接口
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int p = 8;
//设置阳极接口
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
//设置变量
int LM35=A0;
float f_LM35;
int del = 55;

void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(p, OUTPUT);
    Serial.begin(9600);
}

void loop()
{
LM35=analogRead(A0);
f_LM35=(float)LM35/1024*500;
Serial.println(f_LM35,2);
delay(2000);

clearLEDs();
pickDigit(1);
pickNumber(f_LM35*100/1000%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(2);
pickNumber((f_LM35*100/100)%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(3);
dispDec(3);
pickNumber((f_LM35*100/10)%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(4);
pickNumber(f_LM35*100/x%10);
delayMicroseconds(del);




}

void pickDigit(int x)//定义pickDigit(x),其作用是开启dx端口
{
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
digitalWrite(d3, LOW);
digitalWrite(d4, LOW);

switch(x)
{
case 1:
    digitalWrite(d1, HIGH);
    break;
case 2:
    digitalWrite(d2, HIGH);
    break;
case 3:
    digitalWrite(d3, HIGH);
    break;
default:
    digitalWrite(d4, HIGH);
    break;
}
}

void pickNumber(int x)   //定义pickNumber(x),其作用是显示数字x
{
switch(x)
{
default:
    zero();
    break;
case 1:
    one();
    break;
case 2:
    two();
    break;
case 3:
    three();
    break;
case 4:
    four();
    break;
case 5:
    five();
    break;
case 6:
    six();
    break;
case 7:
    seven();
    break;
case 8:
    eight();
    break;
case 9:
    nine();
    break;
}
}

void dispDec(int x)//设定开启小数点
{
digitalWrite(p, LOW);
}

void clearLEDs()//清屏
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(p, HIGH);
}

void zero()//定义数字0时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}

void one()//定义数字1时阴极那些管脚开关
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void two()//定义数字2时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}

void three()//定义数字3时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}

void four()//定义数字4时阴极那些管脚开关
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void five()//定义数字5时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void six()//定义数字6时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void seven()//定义数字7时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void eight()//定义数字8时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void nine()//定义数字9时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

Super169 发表于 2014-12-15 19:32:51

不是已經說得很清楚了嗎?

MB:46: error: invalid operands of types 'float' and 'int' to binary 'operator%'
MB:51: error: invalid operands of types 'float' and 'int' to binary 'operator%'
MB:57: error: invalid operands of types 'float' and 'int' to binary 'operator%'

小白7号 发表于 2014-12-15 21:35:23

重新发 lm35没问题 数码管显示不上去
代码://设置阴极接口
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int p = 8;
//设置阳极接口
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
//设置变量
int LM35=A0;
int del = 55;

void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(p, OUTPUT);
    Serial.begin(9600);
}

void loop()
{
long val = analogRead(LM35);
float temperature = (val*0.0048828125*100);
Serial.print(temperature);
Serial.println("C");
delay(2000);

clearLEDs();
pickDigit(1);
pickNumber((int)temperature*100/1000%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(2);
pickNumber(((int)temperature*100/100)%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(3);
dispDec(3);
pickNumber(((int) temperature*100/10)%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(4);
pickNumber((int) temperature*100%10);
delayMicroseconds(del);




}

void pickDigit(int x)//定义pickDigit(x),其作用是开启dx端口
{
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
digitalWrite(d3, LOW);
digitalWrite(d4, LOW);

switch(x)
{
case 1:
    digitalWrite(d1, HIGH);
    break;
case 2:
    digitalWrite(d2, HIGH);
    break;
case 3:
    digitalWrite(d3, HIGH);
    break;
default:
    digitalWrite(d4, HIGH);
    break;
}
}

void pickNumber(int x)   //定义pickNumber(x),其作用是显示数字x
{
switch(x)
{
default:
    zero();
    break;
case 1:
    one();
    break;
case 2:
    two();
    break;
case 3:
    three();
    break;
case 4:
    four();
    break;
case 5:
    five();
    break;
case 6:
    six();
    break;
case 7:
    seven();
    break;
case 8:
    eight();
    break;
case 9:
    nine();
    break;
}
}

void dispDec(int x)//设定开启小数点
{
digitalWrite(p, LOW);
}

void clearLEDs()//清屏
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(p, HIGH);
}

void zero()//定义数字0时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}

void one()//定义数字1时阴极那些管脚开关
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void two()//定义数字2时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}

void three()//定义数字3时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}

void four()//定义数字4时阴极那些管脚开关
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void five()//定义数字5时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void six()//定义数字6时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void seven()//定义数字7时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void eight()//定义数字8时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void nine()//定义数字9时阴极那些管脚开关
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

小白7号 发表于 2014-12-15 21:37:16

Super169 发表于 2014-12-15 19:32 static/image/common/back.gif
不是已經說得很清楚了嗎?

MB:46: error: invalid operands of types 'float' and 'int' to binary 'oper ...

麻烦在看下

Super169 发表于 2014-12-15 22:54:20

小弟是硬小白一名....軟件有問題或許可以幫得上, 如果是有關硬件(数码管显示)的問題....小弟也沒法了.
页: [1]
查看完整版本: 求助代码问题