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

 

Светодиодный куб 3x3x3 на Arduino своими руками

Автор: Mike(admin) от 31-01-2018, 17:25

Микроконтроллерная платформа Arduino применяется радиолюбителями во многих интересных проектах, как полезных в хозяйстве, так и просто ради забавы. Одним из таких забавных проектов является создание светодиодного куба, который создает красивое трехмерное свечение.


Светодиодный куб 3x3x3 на Arduino своими руками

В данном материале мы рассмотрим пример создания простого светодиодного куба 3x3x3 на основе Arduino.


Куб имеет по три светодиода на каждую пространственную ось. В итоге в проекте используется 27 светодиодов и 9 резисторов 220 Ом (по одному на каждые три светодиода). Конфигурация данного куба представляет собой 3 отдельных слоя по 9 светодиодов с общим анодом, которые объединены в три группы по три светодиода в каждой. Для лучшего понимания структуры ниже приведена принципиальная схема подключения для создания светодиодного куба на основе Arduino.


Светодиодный куб 3x3x3 на Arduino своими руками

Сборка самого светодиодного куба производится следующим образом. Тщательно припаяйте аноды 9 светодиодов вместе, сформировав E-образную структуру.


Светодиодный куб 3x3x3 на Arduino своими руками

Отрежьте ненужные части анодов после пайки. Повторите процесс, сделав три таких слоя.


Светодиодный куб 3x3x3 на Arduino своими руками

Светодиодный куб 3x3x3 на Arduino своими руками

Припаяйте 3 слоя вместе, припаивая катоды каждого столбца светодиодов вместе.


Светодиодный куб 3x3x3 на Arduino своими руками

Подключите общие катоды светодиодных столбов к резисторам.


Светодиодный куб 3x3x3 на Arduino своими руками

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


Светодиодный куб 3x3x3 на Arduino своими руками

Подключите 9 резисторов и общие аноды к цифровым выводам платы Arduino.


Светодиодный куб 3x3x3 на Arduino своими руками

Теперь остается только запрограммировать Arduino. Загрузите в плату приведенный ниже код, и вы увидите потрясающее свечение светодиодного куба на Arduino.


void l(int x, int y, int z) {
  if (y == 0) {
    digitalWrite(2, LOW);
  }
  else if (y == 1) {
    digitalWrite(3, LOW);

  }
  else if (y == 2) {
    digitalWrite(4, LOW);
  }
  if (x == 0) {
    if (z == 0) {
      digitalWrite(9, HIGH);
    }
    else if (z == 1) {
      digitalWrite(11, HIGH);
    }
    else if (z == 2) {
      digitalWrite(13, HIGH);
    }
  }
  if (x == 1) {
    if (z == 0) {
      digitalWrite(8, HIGH);
    }
    else if (z == 1) {
      digitalWrite(10, HIGH);
    }
    else if (z == 2) {
      digitalWrite(12, HIGH);

    }
  }
  if (x == 2) {
    if (z == 0) {
      digitalWrite(6, HIGH);
    }
    else if (z == 1) {
      digitalWrite(7, HIGH);
    }
    else if (z == 2) {
      digitalWrite(5, HIGH);
    }
  }
}
void ol(int num) {
  if (num == 1) {
    digitalWrite(2, HIGH);
  }
  if (num == 2) {
    digitalWrite(3, HIGH);
  }
  if (num == 3) {
    digitalWrite(4, HIGH);
  }
}
void onl(int num) {
  if (num == 1) {
    digitalWrite(2, LOW);
  }
  if (num == 2) {
    digitalWrite(3, LOW);
  }
  if (num == 3) {
    digitalWrite(4, LOW);
  }
}
void off(int x) {
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  delay(x);
}
void setup() {
  // put your setup code here, to run once:
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  onl(1);
  onl(2);
  onl(3);

  l(1,0,1);
  delay(500);
  off(50);

  l(0,0,0);
  l(1,0,0);
  l(2,0,0);
  l(2,0,1);
  l(2,0,2);
  l(1,0,2);
  l(0,0,2);
  l(0,0,1);
  delay(350);

  ol(2);
  ol(3);
  delay(350);
  off(0);


  onl(1);
  onl(2);
  onl(3);

  l(1,0,1);
  delay(500);
  off(50);

  l(0,0,0);
  l(1,0,0);
  l(2,0,0);
  l(2,0,1);
  l(2,0,2);
  l(1,0,2);
  l(0,0,2);
  l(0,0,1);
  delay(350);

  ol(2);
  ol(3);
  delay(350);
  off(0);


  onl(1);
  onl(2);
  onl(3);

  l(1,0,1);
  delay(500);
  off(50);

  l(0,0,0);
  l(1,0,0);
  l(2,0,0);
  l(2,0,1);
  l(2,0,2);
  l(1,0,2);
  l(0,0,2);
  l(0,0,1);
  delay(350);

  ol(2);
  ol(3);
  delay(300);
  off(0);

  onl(1);
  onl(2);
  onl(3);

  l(1,0,1);
  delay(500);
  off(50);

  l(0,0,0);
  l(1,0,0);
  l(2,0,0);
  l(2,0,1);
  l(2,0,2);
  l(1,0,2);
  l(0,0,2);
  l(0,0,1);
  delay(350);

  off(0);
  ol(2);
  l(0,0,0);
  l(2,0,0);
  l(2,0,2);
  l(0,0,2);
  delay(400);
  off(100);
}



© digitrode.ru


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




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

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

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