2013-06-02 102 views
3

我在Arduino上编写代码(非常类似于C,我不知道,或者很少),而且我对开关/外壳声明有一些小问题。C/Arduino开关盒

我需要我的Arduino做这个或那个取决于电位器(0到1023)的值。但是,我不知道如何告诉它“0到200”的情况。例如,我试过

case 0..250: 
    blablaSomeCode; 
    break; 

等等......我该怎么办?

我真的不想写案例1例2例3 ...

回答

5

你将不得不使用的级联如果的(也/特别是如果你的价值是一个浮点数)

int value= ...; 

if (value>=0 && value<=250 { 
    // some code 0..250 
} 
else 
if (value>250 && value<=500) { 
    // some code 251..500 
} 
else 
if (value>500 && value<=1000) { 
    // etc. 
} 
else { 
    // all other values (less than zero or 1001...) 
} 
+0

非常感谢!我实际上编写了一个名为isIn的函数来验证它!但你的代码要快得多! –

+0

很高兴听到!如果表现是一个问题,您可以以最常见的情况靠近顶部的方式重新排序。 (请考虑检查答案是否正确。) – Nicholaz

2
switch(val) 
{ 
    case 0 ... 250: 
     inRange(val); 
     break; 

    default: 
     outOfRange(); 
     break; 
} 

尽管前面的答案中的代码是有效的,但我会坚持使用switch语句,因为它非常适用于要解决的问题。

请注意,使用范围('...')不符合ANSI C标准,但它在Arduino环境中工作正常。