Посох Деда Мороза

Я уже не раз замечал, что к концу года что-то странное происходит со временем. Оно ускоряется так, что в последние дни перед Новым Годом уже плохо представляешь себе, успеешь ли закончить все начатые или запланированные дела. Мне почему-то всегда кажется, что чего-то не успел, что-то не сделал, не завершил.

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

Особая часть подготовки к празднику – новогодние костюмы. Конечно, нужен костюм Деда Мороза. А еще Деду Морозу нужен волшебный посох. Желательно иметь очень волшебный посох – такой, чтобы удивить детей. Вот его изготовлением и займемся. 

Нам понадобятся:

Что нужно для изготовления волшебного посоха Деда Мороза

1) плата Марсоход
2) синие светодиоды
3) кусок пластиковой водопроводной трубы
4) пластиковый шар от новогодней игрушки


Пластиковая водопроводная труба хороша тем, что она дешевая, легкая, ее легко пилить и сверлить, внутрь можно спрятать какие-то провода.

На плате Марсоход есть шесть «сильных» выходов. Я собираюсь использовать их для управления светодиодами. Именно поэтому я решил, что на посохе будет шесть групп светодиодов.

Вдоль трубы сверлю шесть отверстий на расстоянии 16-17 сантиметров друг от друга. Через эти отверстия внутрь трубы протягиваю шесть пар проводов:

Провода внутри посоха Деда Мороза

Там, где в трубе просверлены отверстия и из них торчат провода нужно их зачистить, залудить и сделать светодиодные «пояски» - по четыре светодиода минимум, но можно больше. Таких "поясков", как я уже сказал,  будет шесть.

Светодиоды на посохе Деда Мороза

В местах пайки канифоль хорошо бы смыть из эстетических соображений. В качестве растворителя используем, например, спирт:

Смыть канифоль спиртом

Еще нужна блестящая самоклейка, чтобы обернуть белую пластиковую трубу.
Ближе к верху посоха нужно просверлить отверстие побольше для крепления кнопки. Желательно сделать это сразу, а не так как сделал я – сперва протянул провода, а потом делал дырку для кнопки. Ну ошибся, это бывает.

Кнопка будет включать плату Марсоход, которая и управляет светодиодами.
Аккумулятор питания хорошо вставляется прямо в трубу.

Сфера на вершине посоха Деда Мороза

Шар на вершине посоха я сперва хотел сделать из большой елочной игрушки. Правда потом купил желтый шар с конфетами – конфеты съел, а шар удобен тем, что легко разъединяется посередине. Шар прикрепили к трубе маленькими шурупами.

Вот еще фото и хорошо видно все, что внутри шара: аккумулятор, провода, плата:

 

Сфера на вершине посоха Деда Мороза

Посох в сборе:

Волшебный посох Деда Мороза

Да, чуть не забыл... Плату же еще нужно как-то запрограммировать!

Берем на нашем сайте в разделе проекты для платы Марсоход самый простой проект – «почти пустой». Там в том проекте используется встроеный в ПЛИС генератор 5Мгц и счетчики. Все, что нам нужно – это мигать светодиодами в некотором порядке. Тут на что фантазии хватит.

Вот так выглядит топ модуль проекта "Посох" (схема кликабельна - можно увеличить):

scheme

Собственно мигающий эффект я написал на языке описания аппаратуры Verilog:


module effect(
  input wire clk,
  input wire mclk,
  output wire [7:0]leds,
  output wire f0,
  output wire f1,
  output wire f2,
  output wire f3,
  output wire f4,
  output wire f5
);

reg [3:0]cnt;
reg [5:0]bits;

initial
begin

  bits= 6'h00;
  cnt = 4'h0;
end

always @(posedge clk)
  if(cnt==11)
   cnt<=0;
  else
   cnt <= cnt + 1'b1;

always @*

begin
  case
(cnt)
   4'h0: bits = 6'b000001;
   4'h1: bits = 6'b000011;
   4'h2: bits = 6'b000111;
   4'h3: bits = 6'b001111;
   4'h4: bits = 6'b011111;
   4'h5: bits = 6'b111111;
   4'h6: bits = 6'b011111;
   4'h7: bits = 6'b001111;
   4'h8: bits = 6'b000111;
   4'h9: bits = 6'b000011;
   4'ha: bits = 6'b000001;
  default:
   bits = 6'b000000;
  endcase
end


assign f0 = bits[0] & mclk;
assign f1 = bits[1] & mclk;
assign f2 = bits[2] & mclk;
assign f3 = bits[3] & mclk;
assign f4 = bits[4] & mclk;
assign f5 = bits[5] & mclk;

assign leds = {bits[5],bits[5],bits[4],bits[3],bits[2],bits[1],bits[0],bits[0]};
endmodule


Как видите здесь ничего космического нет.
Светодиоды должны зажигаться снизу вверх, распространяясь волной.

Единственная тонкость - светодиоды у меня подключенны прямо к выходам платы. По идее их нужно было бы подключить через резисторы, чтобы они случайно не сгорели, нужно было бы как-то ограничить ток. Я же сделал проще, модулирую управляющий сигнал частотой mclk вот так: f0 = bits[0] & mclk, чтобы светодиод не постоянно горел, а очень быстро моргал. Это такая своего рода защита.

Весь проект для ПЛИС платы Марсоход в среде Altera Quartus II можно взять вот здесь:

Испытание:



Ну и конечно, новогоднее поздравление:

 


Добавить комментарий