#1 2023-07-04 13:12:33

max9834kfj
Учасник
Зареєстрований: 2023-07-04
Повідомлень: 4

Потрібна допомога з перевіркою коду

написав код для поворотників з RGB стрічки (правий/лівий жовтий поворотник і червоний стоп)
Даний код повинен виконувати такі функції:
1. при запуску на 3 секунди увімкнути всі світлодіоди відповідними кольорами
2. постійно світити червоним стоп_сигналом
3. при натисканні правої/лівої кнопки вмикати мигаючий поворотник і стоп(також мигаючий, зі зменшеною яскравістю)
4. поворотники повинні мигати доки натиснута кнопка

#define buttonPin_1 2  //кнопка_1
#define buttonPin_2 3  //кнопка_2

#define Left_R_PIN 4  //лівий червоний
#define Left_G_PIN 5  //лівий зелений
#define Left_B_PIN 6  //лівий синій

#define Right_R_PIN 7  //правий червоний
#define Right_G_PIN 8  //правий зелений
#define Right_B_PIN 9  //правий синій

#define Stop_R_PIN 10  //червоний стоп

void setup() {
  //налаштування пінів RGBстрічки на вихід
  pinMode(Left_R_PIN, OUTPUT);
  pinMode(Left_G_PIN, OUTPUT);
  pinMode(Left_B_PIN, OUTPUT);
  pinMode(Right_R_PIN, OUTPUT);
  pinMode(Right_G_PIN, OUTPUT);
  pinMode(Right_B_PIN, OUTPUT);
  pinMode(Stop_R_PIN, OUTPUT);

  //налаштування пінів кнопок на вхід
  pinMode(buttonPin_1, INPUT);
  pinMode(buttonPin_2, INPUT);

  //при запуску увімкнути всі світлодіоди своїми кольорами на 3 секунди
  analogWrite(Stop_R_PIN, 255);

  analogWrite(Right_R_PIN, 255);
  analogWrite(Right_G_PIN, 255);
  analogWrite(Right_B_PIN, 0);
 
  analogWrite(Left_R_PIN, 255);
  analogWrite(Left_G_PIN, 255);
  analogWrite(Left_B_PIN, 0);
 
  delay(3000);
 
  analogWrite(Stop_R_PIN, 0);
 
  analogWrite(Right_R_PIN, 0);
  analogWrite(Right_G_PIN, 0);
  analogWrite(Right_B_PIN, 0);
 
  analogWrite(Left_R_PIN, 0);
  analogWrite(Left_G_PIN, 0);
  analogWrite(Left_B_PIN, 0);

}

void loop() {
  analogWrite(Stop_R_PIN, 255);
  delay(500);
  analogWrite(Stop_R_PIN, 0);
  delay(500);
  if (digitalRead(buttonPin_1) == HIGH) {    //якщо кнопка_1 натиснута
    delay(500);                              //почекати 0,5 секунди
    if (digitalRead(buttonPin_1) == HIGH) {  //якщо досі натиснута, увімкнути правий поворотник
      analogWrite(Stop_R_PIN, 180);
      analogWrite(Right_R_PIN, 255);
      analogWrite(Right_G_PIN, 255);
      analogWrite(Right_B_PIN, 0);
      delay(500);
      analogWrite(Stop_R_PIN, 0);
      analogWrite(Right_R_PIN, 0);
      analogWrite(Right_G_PIN, 0);
      analogWrite(Right_B_PIN, 0);
      delay(500);
    }
  }
  if (digitalRead(buttonPin_2) == HIGH) {    //якщо кнопка_2 натиснута
    delay(500);                              //почекати 0.5 секунди
    if (digitalRead(buttonPin_2) == HIGH) {  //якщо досі натиснута, увімкнути лівий поворотник
      analogWrite(Stop_R_PIN, 180);
      analogWrite(Left_R_PIN, 255);
      analogWrite(Left_G_PIN, 255);
      analogWrite(Left_B_PIN, 0);
      delay(500);
      analogWrite(Stop_R_PIN, 0);
      analogWrite(Left_R_PIN, 0);
      analogWrite(Left_G_PIN, 0);
      analogWrite(Left_B_PIN, 0);
      delay(500);
    }
  }
}

Неактивний

#2 2023-07-04 14:46:58

г0cть
Гість

Re: Потрібна допомога з перевіркою коду

У чому потрібна допомога? Зібрати макет і первірити чи блимають світлодіоди? Чи в чомусь іншому?

#3 2023-07-04 15:05:55

гОсть
Гість

Re: Потрібна допомога з перевіркою коду

г0cть пише:

У чому потрібна допомога? Зібрати макет і первірити чи блимають світлодіоди? Чи в чомусь іншому?

Потрібно перевірити правильність коду, чи буде працювати як задумано

#4 2023-07-04 15:25:42

akapulko
Гість

Re: Потрібна допомога з перевіркою коду

гОсть пише:

Потрібно перевірити правильність коду, чи буде працювати як задумано

Не буде працювати, якщо ви мали на увазі uno/nano board

#5 2023-07-04 15:26:40

г0cть
Гість

Re: Потрібна допомога з перевіркою коду

Як задумано - не буде

#6 2023-07-04 15:54:17

гОсть
Гість

Re: Потрібна допомога з перевіркою коду

г0cть пише:

Як задумано - не буде

чому? В чому помилка?

#7 2023-07-04 16:08:06

г0cть
Гість

Re: Потрібна допомога з перевіркою коду

1) п. 2
2) відповідь #4. Почитайте про analogWrite

#8 2023-07-04 16:13:51

max9834kfj
Учасник
Зареєстрований: 2023-07-04
Повідомлень: 4

Re: Потрібна допомога з перевіркою коду

г0cть пише:

1) п. 2
2) відповідь #4. Почитайте про analogWrite

зрозумів, яку команду варто використати в цьому випадку

Неактивний

#9 2023-07-04 16:22:58

г0cть
Гість

Re: Потрібна допомога з перевіркою коду

Просто задійте відповідні піни

#10 2023-07-04 16:37:18

max9834kfj
Учасник
Зареєстрований: 2023-07-04
Повідомлень: 4

Re: Потрібна допомога з перевіркою коду

г0cть пише:

Просто задійте відповідні піни

що робити якщо недостатньо дозволених пінів
*на офіційному сайті прочитав що для Нано це тільки 6 пінів(3, 5, 6, 9, 10, 11)

Неактивний

#11 2023-07-04 16:40:30

г0cть
Гість

Re: Потрібна допомога з перевіркою коду

А вам скільки потрібно?

#12 2023-07-04 17:08:56

max9834kfj
Учасник
Зареєстрований: 2023-07-04
Повідомлень: 4

Re: Потрібна допомога з перевіркою коду

г0cть пише:

А вам скільки потрібно?

7-9 на стрічку і не менше 2 на кнопки

Неактивний

#13 2023-07-04 17:09:51

г0cть
Гість

Re: Потрібна допомога з перевіркою коду

По-перше, у вас "поворотники" просто вмикаються/вимикаються, тобто analogWrite(xxx,255/0) можна цілком замінити на digitalWrite(xxx, HIGH/LOW). По-друге, синій світлодіод взагалі завжди вимкнений. Його або не підключати зовсім, або, для перестраховки, підключити постійно на gnd. analogWrite залишається лише стоп-сигнал

#14 2023-07-04 17:18:14

г0cть
Гість

Re: Потрібна допомога з перевіркою коду

R-G ще й можна з’єднати між собою

#15 2023-07-11 21:44:56

гоcть
Гість

Re: Потрібна допомога з перевіркою коду

Перший пункт також не виконується, бо не всі світлодіоди вмикаються на 3 секунди. Відповідь #13 (по-друге) може виправити цю ситуацію, або змініть умови.

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму