Наши гибкие резисторы дают неверные значения - PullRequest
0 голосов
/ 23 октября 2019

Мы работаем над проектом Arduino, в котором мы используем различные методы для изменения мощности трех светодиодов, создавая собственную лампу "RGB", и в настоящее время проблема связана с гибкими резисторами. Идея состоит в том, чтобы использовать три гибких резистора для управления каждой лампой. Мы использовали функцию карты без наименьшего и наивысшего значения, делая наше наименьшее число 0 и наивысшее 255. Проблема в том, что наше число сильно колеблется, а круги мерцают, как сумасшедшие. Любые рекомендации?

Мы попытались изменить наши отображенные числа, как максимальные, так и минимальные. Мы также поиграли с кодом, но безуспешно.

#include <LiquidCrystal.h>

int bend1 = A0;
int bend2 = A4;
int bend3 = A5;
int green = 6;
int red = 10;
int blue = 9;
unsigned long previous = 0;
const long interval = 500;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  Serial.begin(9600);
  Serial.println("Started");
  lcd.begin(16,2);
  pinMode(green, OUTPUT);
  pinMode(red, OUTPUT);
  pinMode(blue, OUTPUT);
}

void loop() {

  unsigned long currentMillis = millis();
  if (currentMillis - previous >= interval)
  {
    previous = currentMillis;
    lcd.clear();
  }

  int value1 = analogRead(bend1);
  int value2 = analogRead(bend2);
  int value3 = analogRead(bend3);
  value1 = map(value1, 510, 910, 0, 255);
  value2 = map(value2, 490, 905, 0, 255);
  value3 = map(value3, 500, 900, 0, 255);

  if(value3 > 20)
  {
    analogWrite(blue, value3);
  }
  else
  {
    analogWrite(blue, 0);
  }
  if(value2 > 20)
  {
    analogWrite(red, value3);
  }
  else
  {
    analogWrite(red, 0);
  }
  if(value1 > 20)
  {
    analogWrite(green, value3);
  }
  else
  {
    analogWrite(green, 0);
  }


  lcd.setCursor(0, 0);
  lcd.print("GREEN");
  lcd.setCursor(7, 0);
  lcd.print("RED");
  lcd.setCursor(12, 0 );
  lcd.print("BLUE");

  lcd.setCursor(0, 1);
  lcd.print(value1);
  lcd.setCursor(7, 1);
  lcd.print(value2);
  lcd.setCursor(12, 1);
  lcd.print(value3);

}

Мы должны получить значения 0,0,0, когда все гибкие резисторы плоские, но вместо этого они колеблются от -10 ---> 90 в некоторых случаях. Одной из наших неисправностей могут быть неисправные гибкие резисторы. Но мы думаем, что могут быть скрыты некоторые проблемы с кодом.

...