Оглавление:

Аркадный автомат Atari Pong со светодиодной лентой: 8 шагов
Аркадный автомат Atari Pong со светодиодной лентой: 8 шагов

Видео: Аркадный автомат Atari Pong со светодиодной лентой: 8 шагов

Видео: Аркадный автомат Atari Pong со светодиодной лентой: 8 шагов
Видео: Восстановление консоли ATARI PONG IV Sears Tele-Games | Ретро ремонтник Эпизод 26 2024, Ноябрь
Anonim
Светодиодная лента Atari Pong Arcade Machine
Светодиодная лента Atari Pong Arcade Machine

Меня зовут Габриэль Подевин, и это мой самый первый помощник. В настоящее время я 16-летний ученик старшей школы, который любит создавать и конструировать вещи, но при этом очень интересуюсь электроникой, робототехникой, схемотехникой и программированием. Я надеюсь, что вы найдете это интуитивно понятным и полезным.

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

Основной перечень деталей будет разделен на разделы: Инструменты, сборочные детали и компоненты.

Инструменты, которые вам понадобятся, будут включать следующее:

- Дрель

- Паяльник

- Отвертка (подходит для винтов, которые вы решите использовать)

- мультиметр

- циркуляционная пила, ленточная пила или лазерный резак, если у вас есть доступ к одному

Резак для проволоки или ножницы

- Клей-пистолет

Детали, которые вам понадобятся для сборки, будут включать

- Клей для дерева

- 10 деревянных блоков размером один на один дюйм

- большой лист древесины толщиной четверть дюйма или дерева по выбору

- 24 винта длиной полдюйма

- 14 x 6,5 дюймов светодиодного рассеивающего пластика (опционально)

- красно-синяя изолента

Вам потребуются следующие компоненты:

- 2 потенциометра 100 кОм

- 8 метров индивидуально адресуемой светодиодной ленты (30 светодиодов на метр)

www.amazon.ca/ALITOVE-WS2812B-Individually-Addressable-Waterproof/dp/B018XAELE4/ref=sr_1_1?s=hi&ie=UTF8&qid=1535323567&sr=1-

- несколько метров провода или провода разных цветов

- адаптер питания переменного тока в постоянный, который выводит 6 В через штекер типа бочонок

- 1 Arduino Uno R3

если у вас нет доступа к Arduino Uno R3, как у меня, вы можете построить такой, как тот, который я буду использовать в этом проекте, который использует процессор atmel328-pu. Перейдите по этой ссылке, чтобы узнать, как создать свой собственный

Если вы используете Arduino Uno, перейдите к шагу 1.

Шаг 1: построение светодиодной матрицы

Сборка светодиодной матрицы
Сборка светодиодной матрицы
Сборка светодиодной матрицы
Сборка светодиодной матрицы
Сборка светодиодной матрицы
Сборка светодиодной матрицы

Это самый простой этап, требующий много времени, поскольку вам необходимо выполнить всю пайку.

-Для начала вам понадобится кусок дерева размером 10 3/4 дюйма на 6 1/2 дюйма.

-Когда у вас есть кусок дерева, возьмите свою светодиодную полосу и отрежьте 26 сегментов через каждые 10 светодиодов или каждые 6 1/2 дюйма.

-После резки сегментов приклейте их к дереву вертикально, как показано на следующих рисунках, показанных на первом рисунке выше.

-Как только вы приклеите полоски и дадите им осесть, мы приступим к пайке.

- вам понадобится три провода разного цвета

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

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

-Наконец, мы подключимся к Arduino. ваш цифровой вход или средний провод будут подключаться к 6-контактному цифровому входу, а земля и положительный провод подключатся к положительной и отрицательной шинам на плате.

Шаг 2: Элементы управления веслом

Управление веслом
Управление веслом
Управление веслом
Управление веслом
Управление веслом
Управление веслом

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

как только вы припаяете провода, мы подключим их к Arduino. вы, положительные и отрицательные, связаны с соответствующими дождями положительными и отрицательными. выходные провода на потенциометрах будут подключаться к разным входам на Arduino. один подключается к штекеру (A0), а другой - к штекеру (A1).

Шаг 3: разрезание корпуса

Разрезание корпуса
Разрезание корпуса
Разрезание корпуса
Разрезание корпуса
Разрезание корпуса
Разрезание корпуса
Разрезание корпуса
Разрезание корпуса

эта часть даст вам размеры и углы того, что вам нужно будет разрезать

**** очень важно ***** убедитесь, что ваша древесина имеет толщину четверть дюйма (1/4 дюйма)

также при вырезании деталей не забудьте пометить детали

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

размеры детали

Нижняя часть: 13 3/4 дюйма X 10 1/4 дюйма

- Сзади: 13 3/4 дюйма X 15 1/2 дюйма

Верх: 13 3/4 дюйма X 6 1/2 дюйма

- Переднее дно: 13 3/4 дюйма X 4 1/4 дюйма

Панель набора: 13 3/4 дюйма X 6 дюймов

Внутренний верх: 13 3/4 дюйма X 3 1/4 дюйма

- Светодиодный сайдинг: 6 1/4 дюйма X 1 дюйм (отрежьте два из них)

- Светодиодное внутреннее дно: 13 1/4 дюйма X 4 1/2 дюйма

- внутренняя задняя светодиодная панель: 13 1/4 дюйма X 9 дюймов

- Блоки: 1 дюйм X 1 дюйм X 1 дюйм (вырезать 10 блоков)

- Акриловая панель: 13 3/4 дюйма X 6 1/2 дюйма

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

Шаг 4: Сборка корпуса

Сборка корпуса
Сборка корпуса
Сборка корпуса
Сборка корпуса
Сборка корпуса
Сборка корпуса

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

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

-Чтобы начать сборку, нам понадобятся 4 деревянных блока 1x1x1 для основания, две боковые панели, задняя и передняя нижняя. поместите 4 блока в каждый угол основания и оставьте четверть дюйма между краем и блоком, как показано на втором рисунке в начале шага.

-Далее вам нужно будет просверлить несколько пилотных отверстий в дереве и блоках. как только вы сделаете этот винт, то до дна.

-Далее будем ставить боковые панели. Поместите панели на зазор в четверть дюйма на внешней стороне блока. просверлите пилотное отверстие в боковой панели и деревянном блоке и прикрутите панели. Повторите то же самое для другой стороны.

-После доработки боковин. мы будем ставить переднюю нижнюю панель. поместите панель заподлицо с дном, по бокам просверлите пилотные отверстия в блоках и прикрутите панель.

-Наконец, мы наденем обратно. проделайте то же самое, что и с передней нижней панелью, и прикрутите обратно.

-К этому моменту у вас есть фундамент, на котором нужно строить, и понимание того, как мы собираем этот корпус.

-Эта следующая часть немного сложнее из-за того, что вы работаете с меньшей площадью. Для начала нам понадобятся все верхние части и 6 блоков.

-Уложите то, что вы построили, на спину и поместите блоки по углам на четверть дюйма от вершины. (как показано на третьем рисунке в начале)

-сверлить пилотные отверстия по бокам и сзади и вкрутить.

-Теперь соберем остальную часть верха

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

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

- у вас должно получиться что-то вроде этого (показано на первом рисунке этого шага)

следующий шаг объяснит остальную часть сборки.

Шаг 5: Завершение сборки

Завершение сборки
Завершение сборки
Завершение сборки
Завершение сборки
Завершение сборки
Завершение сборки

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

Теперь осталось только установить электронику.

-Мы начнем с просверливания отверстий в панели циферблата для потенциометра. не стесняйтесь просверливать отверстия там, где вам будет удобно. В моем случае я разместил отверстия на 2 1/2 дюйма снизу и на 3 1/2 дюйма сбоку для обоих потенциометров.

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

-После высыхания клея мы будем вставлять электронные детали. Но сначала придется снять заднюю панель.

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

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

*** Внимание *** - Будьте предельно осторожны при установке светодиодной матрицы, потому что точки пайки могут быть хрупкими.

-Теперь мы подошли к самому важному - вставке светодиодной матрицы. просто поместите доску, как показано на втором рисунке.

-Однажды возьмите внутреннюю светодиодную панель и поместите ее в корпус непосредственно под задней панелью светодиодной матрицы. этот кусок может мне подойти. также дайте ему высохнуть, прежде чем продолжить.

-Вы добрались до последней части. Я рекомендую покрасить одну сторону этой последней части (внутренняя сторона светодиода) в черный или белый цвет для контраста между светодиодами и этой частью.

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

**** Поздравляю, вы выполнили всю сборку !!!

перейти к последнему шагу, чтобы закодировать игру

Шаг 6: Код

Еще раз поздравляю с тем, что мы так далеко зашли.

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

но прежде чем мы перейдем к этому, вам понадобится (adafruit_NeoPixel-master), я также связал загрузку.

чтобы установить мастер, откройте свою программу Arduino

1. перейти к эскизу

2. открыть библиотеку включения

3. нажмите (библиотека add.zip)

4. выберите файл (adafruit_NeoPixel-master) и готово.

ниже я вставил код игры.

#включают

#включают

длинный мяч Xabs = 12;

длинный мячYabs = 4;

int ballX;

int ballY;

int ballvelX = 1;

int ballvelY = 1;

int index;

int fps = 50;

int paddlewidth = 3;

int paddlemax = 9 - ширина весла + 1;

int knobseg = 1023 / (весло макс);

int paddle1 = 4;

int paddle2 = 4;

#define NUMPIXELS 260

#define PIN 6

Adafruit_NeoPixel пикселей = Adafruit_NeoPixel (NUMPIXELS, PIN6, NEO_GRB + NEO_KHZ800);

void setup () {

pixel.begin ();

Serial.begin (9600);

}

void loop () {

очисти экран();

updateBall ();

updatePaddle1 ();

updatePaddle2 ();

displayBall ();

displayPaddle1 ();

displayPaddle2 ();

pixel.show ();

detectCollision ();

задержка (fps);

}

void clearScreen () {

for (int i = 0; i <NUMPIXELS; i ++) {

пикселей.setPixelColor (я, пикселей. Цвет (0, 0, 0));

}

}

void updateBall () {

ballXabs + = ballvelX;

ballYabs + = ballvelY;

}

void detectCollision () {

Serial.print (ballYabs);

Serial.print ("");

Serial.println (paddle1);

if (ballvelX> 0 && ballXabs> = 25) {// сталкиваемся с правой стеной

Serial.println ("CollisionX");

оценка1 (); // ballvelX * = - 1;

}

if (ballvelX <0 && ballXabs <= 0) {// сталкиваемся с левой стеной

Serial.println ("CollisionX");

оценка2 (); // ballvelX * = - 1;

}

if (ballvelY> 0 && ballYabs> = 9) {// сталкиваемся с верхней стенкой

Serial.println ("CollisionY"); ballvelY * = -1;

}

if (ballvelY <0 && ballYabs <= 0) {// сталкиваемся с нижней стенкой

Serial.println ("CollisionY");

ballvelY * = -1;

}

// обнаруживаем столкновение лопасти 2

если ((ballvelX> 0 && ballXabs == 24) && ((ballYabs> = paddle2) && (ballYabs <= paddle2 + paddlewidth - 1)))

{// сталкиваемся с правой стеной

Serial.println ("CollisionPaddle");

ballvelX * = -1;

}

// обнаруживаем столкновение лопасти 1

если ((ballvelX = весло1) && (ballYabs <= весло1 + ширина весла - 1)))

{// сталкиваемся с правой стеной

Serial.println ("CollisionPaddle");

ballvelX * = -1;

}

}

void updatePaddle1 () {

int knob = analogRead (A0);

paddle1 = круглый ((длинная) ручка / (длинная) ручка);

}

void updatePaddle2 () {

int knob2 = analogRead (A1);

paddle2 = круглый ((длинный) knob2 / (длинный) knobseg);

}

void displayBall () {

ballX = круглый (ballXabs);

ballY = круглый (ballYabs);

if (ballX% 2! = 0) {

index = (9 - ballY) + 10 * ballX;

if (ballX! = 0) {

пикселей.setPixelColor (ballY + 10 * (ballX - 1), pixels. Color (30, 0, 0)); // левая часть цвета шара

}

если (ballX! = 25) {пикселей.setPixelColor (ballY + 10 * (ballX + 1), пикселей. Color (30, 0, 0)); // правая сторона цвета шара

}

если (ballY! = 9) {пикселей.setPixelColor (индекс - 1, пикселей. Color (30, 0, 0)); // цвет нижних сторон шара

}

если (ballY! = 0) {пикселей.setPixelColor (индекс + 1, пикселей. Color (30, 0, 0)); // цвет верхних сторон шара

}

}

еще {

index = ballY + 10 * ballX; if (ballX! = 0) {

пикселей.setPixelColor ((9 - ballY) + 10 * (ballX - 1), pixels. Color (30, 0, 0)); // левая часть четного ряда шара

}

if (ballX! = 25) {

пикселей.setPixelColor ((9 - ballY) + 10 * (ballX + 1), pixels. Color (30, 0, 0)); // правая часть четного ряда шара

}

if (ballY! = 9) {

пикселей.setPixelColor (индекс + 1, пикселей. Color (30, 0, 0)); // нижние стороны четного ряда шара

}

если (ballY! = 0) {пикселей.setPixelColor (индекс - 1, пикселей. Color (30, 0, 0)); // верхние стороны четного ряда шара

}

}

пикселей.setPixelColor (индекс, пикселей. Цвет (255, 0, 0)); /// цвет центра шара

}

void displayPaddle1 () {

для (int я = 0; я <ширина лопасти; я ++) {пикселей.setPixelColor (paddle1 + я, пикселей. Color (0, 0, 255));

}

}

void displayPaddle2 () {

for (int i = 0; i <ширина экрана; i ++) {пикселей.setPixelColor (NUMPIXELS - 1 - paddle2 - i, пикселей. Color (0, 0, 255));

}

}

void score1 () {

resetBall (0);

}

void score2 () {

resetBall (1);

}

void resetBall (int player) {

задержка (1000);

ballXabs = 12

; ballYabs = 4;

ballvelX = игрок? 1: -1;

ballvelY = 1;

очисти экран();

задержка (1000);

displayBall ();

pixel.show ();

задержка (1000);

displayPaddle1 ();

displayPaddle2 (); pixel.show (); задержка (2000); }

Шаг 7: Завершение

Отделка
Отделка

После того, как вы загрузили код, просверлите отверстие в задней панели, достаточно большое для адаптера питания типа «бочонок». подключите его к Arduino и, наконец, соберите обратно.

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

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

Напоследок хочу поздравить вас с завершением проекта.

Если у вас есть какие-либо проблемы, свяжитесь со мной здесь, и я буду рад помочь решить эту проблему.

Рекомендуемые: