цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Управляем свечением RGB-светодиода с помощью Arduino и джойстика



Управляем свечением RGB-светодиода с помощью Arduino и джойстика

Автор: Mike(admin) от 10-12-2021, 03:55

В данном материале мы рассмотрим довольно простой проект на Arduino, который оптимально подойдет для новичков. Мы будем управлять RGB-светодиодом, меняя положения джойстика, подключенного к Arduino.


Управляем свечением RGB-светодиода с помощью Arduino и джойстика

Джойстик (в нашем случае аналоговый джойстик) по своему принципу работы похож на два соединенных вместе потенциометра: один для вертикального перемещения рукоятки (ось Y), а другой – для горизонтального перемещения (ось X). На джойстике также есть переключатель. Это может быть очень удобно для ретро-игр, управления роботами или радиоуправляемых машин.


Управляем свечением RGB-светодиода с помощью Arduino и джойстика

На следующем изображении представлена координатная сетка джойстика.


Управляем свечением RGB-светодиода с помощью Arduino и джойстика

RGB в названии светодиода означает цвета его свечения (R – красный, G – зеленый, B – синий). В светодиодных продуктах RGB эти три цвета сочетаются для получения более 16 миллионов оттенков света. Учтите, что возможны не все цвета. Некоторые цвета находятся «за пределами» треугольника, образованного внутренними светодиодами RGB. Кроме того, такие цвета пигмента, как коричневый или розовый, трудно или невозможно достичь.


Управляем свечением RGB-светодиода с помощью Arduino и джойстика

Схема подключения джойстика к Arduino следующая.


Управляем свечением RGB-светодиода с помощью Arduino и джойстика

  • GND джойстика к GND платы Arduino
  • Vcc джойстика к 5v платы Arduino
  • VRx джойстика к линии A0 платы Arduino
  • VRy джойстика к линии A1 платы Arduino
  • SW (общий вывод) светодиода к линии 2 платы Arduino
  • Линия красного светодиода к линии 9 платы Arduino
  • Линия зеленого светодиода к линии 10 платы Arduino
  • Линия синего светодиода к линии 11 платы Arduino

Код программы Arduino приведен далее.



const int PUSHBUTTON_PIN = 2; 
const int RED_PIN = 11; 
const int GREEN_PIN = 10; 
const int BLUE_PIN = 9; 

const int redX = 512;
const int redY = 1023;
const int greenX = 1023;
const int greenY = 0;
const int blueX = 0;
const int blueY = 0;

void setup() {
  Serial.begin(9600);
  pinMode(PUSHBUTTON_PIN, INPUT); 
  digitalWrite(PUSHBUTTON_PIN, HIGH);

  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
}

void loop() {
  int xAxis = analogRead(A0);
  int yAxis = analogRead(A1);

  xAxis = map(xAxis, 0, 1023, 0, 1023);
  yAxis = map(yAxis, 0, 1023, 1023, 0);

  int distanceRed = sqrt(pow(abs(redX - xAxis), 2) +  pow(abs(redY - yAxis), 2));
  int distanceGreen = sqrt(pow(abs(greenX - xAxis), 2) +  pow(abs(greenY - yAxis), 2));
  int distanceBlue = sqrt(pow(abs(blueX - xAxis), 2) +  pow(abs(blueY - yAxis), 2));

  int brightRed = 255 - constrain(map(distanceRed, 0, 1023, 0, 255), 0, 255);
  int brightGreen = 255 - constrain(map(distanceGreen, 0, 1023, 0, 255), 0, 255);
  int brightBlue = 255 - constrain(map(distanceBlue, 0, 1023, 0, 255), 0, 255);

  if (digitalRead(PUSHBUTTON_PIN) == 0) {
      brightRed = 255;
      brightGreen = 255;
      brightBlue = 255;
  }
  
  analogWrite(RED_PIN, brightRed);
  analogWrite(GREEN_PIN, brightGreen);
  analogWrite(BLUE_PIN, brightBlue);

  Serial.print("KEY: ");
  Serial.print(digitalRead(PUSHBUTTON_PIN));
  Serial.print(", X: ");
  Serial.print(xAxis);
  Serial.print(", Y: ");
  Serial.print(yAxis);
  Serial.print(", R: ");
  Serial.print(brightRed);
  Serial.print(", G: ");
  Serial.print(brightGreen);
  Serial.print(", B: ");
  Serial.print(brightBlue);
  Serial.println("\n");
 
  delay(100);
}



© digitrode.ru


Теги: Arduino, светодиоды, джойстик




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

Комментарии:

Оставить комментарий