Почему код, чтобы чтобы программа выбирала случайный цвет не работает?

Я написал этот код, но он не работает (я хочу, чтобы программа выбирала случайный цвет и включала или выключала светодиод RGB). Я использую транзисторы для включения или выключения светодиодной ленты и AnalogWrite(pin , random(0, 255) не работает

int red = 11;
int green = 10;
int blue = 9;

int color = 1;
int stat = 1;


void setup() {
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
}

void loop() {
  color = random(1, 3);
  stat = random(0, 1);

  if (color == 1 and stat == 0) {
    digitalWrite(red, LOW);
  }

  if (color == 1 and stat == 1) {
    digitalWrite(red, HIGH);
  }

  

  if (color == 2 and stat == 0) {
    digitalWrite(green, LOW);
  }

  if (color == 2 and stat == 1) {
    digitalWrite(green, HIGH);
  }

  

  if (color == 3 and stat == 0) {
    digitalWrite(blue, LOW);
  }

  if (color == 3 and stat == 1) {
    digitalWrite(blue, HIGH);
  }

  delay(1000);

}

, 👍1

Обсуждение

Можете быть более конкретными? «Не работает» может означать что угодно. Что случается?, @Nick Gammon

Ничего, ничего не происходит, @drmarton11


1 ответ


Лучший ответ:

2

Из справочника Arduino: random

Короче:

Синтаксис

случайный (максимум)

случайный (мин., макс.)

Параметры

min: нижняя граница случайного значения включительно (необязательно).

max: верхняя граница случайного значения, исключая.

Возврат

Случайное число от min до max-1. Тип данных: длинный.

В основном ваш первый случайный результат возвращает значения {1,2}, а второй даже лучше {0}

,

Итак, что я должен изменить в коде? (извините, но я не очень понимаю в программировании), @drmarton11

@ drmarton11 drmarton11 вы включаете транзистор, только если случайный (0,1) возвращает 1 и никогда не возвращает 1, он возвращает нули только потому, что 1 не включен. Если вы хотите, чтобы значение 0 равнялось 1, вы должны использовать случайный (0,2) или просто случайный (2), поскольку min по умолчанию равен 0, @KIIV

Благодарю вас ! Оно работает !, @drmarton11