所以我正在开发一个使用颜色传感器的项目。我做了一个定义RGB的方法,但是我需要根据它的红绿色或蓝色做一些事情...它的红色绿色或蓝色是否在if语句中做出的'决定'所以如何在外面访问该颜色它? (R = 1,B = 2,G = 3,因此更容易使用) 或者还有另一种方法吗?
总体任务是红色,发出1声嘟嘟声, 绿色,2次哔哔声,蓝色和不同颜色组合相同,发出不同数量的哔哔声。
代码;
int s2 = 7;
int s3 = 8;
int s4 = 4;
int OUTpin= 4;
void setup(){
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(4,INPUT);
Serial.begin(9600);
}
void loop(){
//Check Color reads pulse for RGB
// void checkred
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
unsigned int RW = 255 - (pulseIn(OUTpin, LOW)/ 400 - 1); // turns into 0-255
delay(6000);
// void checkgreen
digitalWrite(s2,LOW);
digitalWrite(s3,HIGH);
unsigned int GW = 255 - (pulseIn(OUTpin, LOW)/ 400 - 1);
delay(6000);
// void checkblue
digitalWrite(s2, HIGH);
digitalWrite( s3, HIGH);
unsigned int BW = 255 - (pulseIn(OUTpin, LOW) / 400 - 1);
delay(6000);
// seeing which color I got(r g or b)
if (RW > BW && RW > GW){
int color = 1; // used to store that color, that's the
// problem(because its inside if scope)
delay(7000);
} else if (GW > RW && GW > BW){
int color = 2;
delay(7000);
} else if (BW > RW && BW > GW){
int color = 3;
delay(7000);
}
}
答案 0 :(得分:2)
在if语句之前声明Ruby
,并在块中分配它:
color
如果您需要它来生存到将来的循环调用,请将其设置为全局。
答案 1 :(得分:1)
一个非常干净的解决方案是将该功能移动到一个返回int
的单独函数中。这也是生成int
const
变量的唯一方法,这是一种很好的做法。
示例:
int ChooseColor(unsigned int RW, unsigned int BW, unsigned int GW)
{
// seeing which color I got(r g or b)
if (RW > BW && RW > GW) {
return 1;
} else if (GW > RW && GW > BW) {
return 2;
} else if (BW > RW && BW > GW) {
return 3;
}
assert(false);
return 0; // to prevent compiler warnings
}
然后在loop
内,执行此操作:
int const color = ChooseColor(RW, BW, GW);
delay(7000);
答案 2 :(得分:0)
为什么不在if-else if梯子之外声明它并在条件中设置它的值? 像,
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password');
const MyTable = sequelize.define('myTable', {
theColumn: Sequelize.STRING
});
const aVar = 'somestring';
const results = await MyTable.findAll({
where: {
theColumn: { $like: `%${aVar}%` }
}
});
})
console.dir(results);
......等等
答案 3 :(得分:0)
将int
放在if语句之外。您无法访问它们的原因是因为它们是if
语句的局部变量。因此,一旦if
结束,在其中声明的所有变量(包括您的int
)都将被销毁。
您有时可能会利用此优势,例如内存管理,但对于今天,简短的回答是简单地在外部int
并在if
中为其赋值。