我有一个元素列表(随机数字(,这些元素在输出时不断变化(100个索引(,我想处理的是,如果输出时生成的任何数字(即使是一(等于或大于数字'27',则打开led,但如果数字都小于'27'则关闭led。我为其创建的逻辑不起作用,即使我得到的数字输出值超过27(如25,26.5,27.8,23,29.01,30.87,23……等等(,LED仍然没有准确打开。这是我从Arduino代码的一部分:
for (int x = 0 ; x < 101 ; x++)
{
Serial.print("Pixel ");
Serial.print(x);
Serial.print(": ");
Serial.print(myList[x], 2); #myList has got the 100 random numeric values
Serial.print("C");
Serial.println();
if(myList[x<100]>=27)
digitalWrite(ledPin, HIGH);
if(myList[x<10]<27)
digitalWrite(ledPin, LOW);
}
解决问题的一种可能方法是在数组中找到最大值。这可以通过在数组上使用单程(循环(来完成。
如果最大值小于27
,则所有值都小于27
。
如果最大值等于或大于27
,则满足该条件。
当你发现一个值等于27
时,你可以通过打破循环来"优化"这一点,而不需要找到更大的值。
这是一个简单的搜索算法,它可能会帮助您:
void loop{
...
...
...
boolean found = false;
int x = 0;
while(x<101 && !found){
if(myList[x]>=27){
found = true;
}
x++;
}
if(found) digitalWrite(ledPin, HIGH);
else digitalWrite(ledPin, LOW);
}