г. Москва, ул.Новороссийская, дом 21, к.64. м.Люблино,ПН-ПТ с 10.00 до 19.30 и СБ с 12.00 до 16.00
+7(985) 997-37-74
13.07.2016

Игра "Змейка" на Arduino

13.07.2016

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

 Наверно многие знают, что до смартфонов были еще телефоны с маленькими экранами и с 16 голосной полифонией. Среди производителей телефонов были лидеры Nokiaи Siemens. У большинства был Siemens, так как эти телефоны были дешевле. Телефоны Nokiaсчитались телефонами более дорогого сегмента. Они и были сделаны качественнее.

Так вот был у меня телефон Nokia 3110. Это был «неубиваемый» телефон во всех смыслах этого слова. На этом телефоне была игра «Змейка» , в которую мы с товарищами постоянно играли. На днях у нашего инженера была ностальгия по этому поводу, и он запустил эту самую игру на Arduino. Чтобы было интереснее вместо джойстика применили ИК-пульт с приемником.

Схема конструктора очень проста.

Для сборки проекта нам понадобились:

  1. Arduinoсовместимая платформа, в нашем случае это ElemikUNO;
  2. ИК-пульт из серии NEC;
  3. ИК-приемник vs1838 (приемная частота 38 кГц);
  4. дисплей Nokia 3110/5110;
  5. безпаечная макетная плата;
  6. провода «папа-папа»

Подключение дисплея:

LCD

RST

CE

DC

DIN

CLK

VCC

Light

GND

Arduino

D19

D10

D11

D12

D13

3.3v

GND

GND

 

Подключение  ИК-приемника:

ИК-приемник

OUT

GND

VCC

Arduino

D6

GND

3.3v

 

Стоит обратить внимание, что для каждого пульта управления свои коды.  На нашем пульте для управления направлением движения змейки мы использовали клавиши «впрво», «влево», «вверх», «вниз».  Поэтому для подстановки своих значений следует для начала снять показания кнопок своего ИК-пульта. Скетч данной программы приводим ниже:

 

#include <IRremote.h>
int RECV_PIN = 6;
IRrec#include <IRremote.h>
int RECV_PIN = 6;
IRrecv irrecv(RECV_PIN); //Создаем объект получения сигнала с определенного порта
decode_results results; //Переменная, хранящая результат

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Начинаем прием
}

void loop() {
  if (irrecv.decode(&results)) //При получении сигнала...
  { 
    Serial.println(results.value); //выводим его значение в последовательный порт
    irrecv.resume(); // Получаем следующее значение
  }
}
v irrecv(RECV_PIN); //Создаем объект получения сигнала с определенного порта
decode_results results; //Переменная, хранящая результат

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Начинаем прием
}

void loop() {
  if (irrecv.decode(&results)) //При получении сигнала...
  { 
    Serial.println(results.value); //выводим его значение в последовательный порт
    irrecv.resume(); // Получаем следующее значение
  }
}

 Далее открываем Serialmonitor и видим вывод значений:

 

Подставляем значения в этот блок программы:

Если все сделали правильно, то можете загрузить скетч (программу) в плату и наслаждаться игрой.