У меня есть программа с arduino UNO и цветным датчиком, ведьма показывает мне значения RGB. У меня есть кнопка тоже, ведьма может начать чтение объекта (цветной папер), но когда я его нажимаю, программа читает 5 раз, а не один раз, как я хочу. В каждом случае (для каждого цвета), я хочу добавить значение к переменной, которую хочу показать в Серийном мониторе, но после чтения (или 5 показаний :)), серийный монитор показывает только значение, которое я хочу добавить к моей переменной (например, c = c + 2, serial motior: 2 для каждого нажатия кнопки).ARDUINO - кнопка
Вот мой код:
// Define pins
const int ledpin = 13;
const int GSR1 = 12;
const int GSR0 = 11;
const int GSG1 = 10;
const int GSG0 = 9;
const int GSB1 = 8;
const int GSB0 = 7;
int redpin = A0;
int greenpin = A1;
int bluepin = A2;
const int buttonPin = 6;
// Sensor read values
int red = 0;
int green = 0;
int blue = 0;
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(ledpin, OUTPUT);
pinMode(GSR1, OUTPUT);
pinMode(GSR0, OUTPUT);
pinMode(GSG1, OUTPUT);
pinMode(GSG0, OUTPUT);
pinMode(GSB1, OUTPUT);
pinMode(GSB0, OUTPUT);
// Turn on the LED
digitalWrite(ledpin, HIGH);
// Set the gain of each sensor
digitalWrite(GSR1, LOW);
digitalWrite(GSR0, LOW);
digitalWrite(GSG1, LOW);
digitalWrite(GSG0, LOW);
digitalWrite(GSB1, LOW);
digitalWrite(GSB0, LOW);
}
void loop()
{
int buttonState;
buttonState = digitalRead(buttonPin);
// Read sensors
red = analogRead(redpin) * 10;
green = analogRead(greenpin) * 14;
blue = analogRead(bluepin) * 17;
int c=0;
int br=0;
if (buttonState == HIGH)
{
if (1200>red && red>1000 && 1950>green && green>1500 && 850>blue && blue>650)
{
Serial.print("yellow");
Serial.print("\n");
c=2;
}
if(c==2)
{
br=br+2;
Serial.print(br);
Serial.print("\n");
}
}
}
Убедитесь, что вы дребезга кнопку. – JimmyB
В вашем коде у вас есть 'int br = 0;' * inside * функция 'loop()'. Следовательно, 'br' сбрасывается на 0 на каждой итерации. Объявите 'br' вне функции и посмотрите, поможет ли это. – JimmyB