Подключаем NES/Dendy/Fami контроллер к Arduino

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

Первое, что нужно сделать: обзавестись контроллером. 🙂 Подойдет любой. Будь то официальный NES, либо его клон Famicon, либо самый распространенный в России — Dendy. Выглядит он примерно так:

Перейдем к разъему. Внимание на картинку:

Можете конечно обойтись вообще без разъема, просто подключив проводками. Data подключаем ко 2-pin, Clock — к 3-pin, Latch — к 4-pin. Протокол довольно простой, поэтому я сразу написал библиотеку. NESInterface. Вот самый простой пример использования.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**NES Data pin  ----> 2pin Arduino**/
/**NES Clock pin ----> 3pin Arduino**/
/**NES Latch pin ----> 4pin Arduino**/
#include <nesinterface.h>
 
#define latch 4
#define clock 3
#define data  2
 
NES NES;
 
void setup() {
	NES.Init(clock, latch, data);
	Serial.begin(9600);
}
 
void loop() {
	NES.Update();
	byte val = NES.Read();
	Serial.println(val, BIN);
	delay(600);
}

Пример считывает данные с кнопок и отправляет их одним байтом в COM. Чтобы было понятнее какая кнопка относится к тому или иному биту — можете добавить эти константы:

1
2
3
4
5
6
7
8
#define K_RIGHT  boolean((val >> 7) & 0x01)
#define K_LEFT   boolean((val >> 6) & 0x01)
#define K_UP     boolean((val >> 4) & 0x01)
#define K_DOWN   boolean((val >> 5) & 0x01)
#define K_A      boolean((val >> 1) & 0x01)
#define K_B      boolean((val >> 0) & 0x01)
#define K_START  boolean((val >> 3) & 0x01)
#define K_SELECT boolean((val >> 2) & 0x01)

Условие можно будет построить в таком виде:

1
if (K_UP) {....}

Библиотека строилась без delay и прочих, поэтому она совсем не задержит основную программу.

Вы можите оставить комментарий, или поставить трэкбек со своего сайта.

Написать комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bug Report
Локализовано: шаблоны Wordpress