Академический Документы
Профессиональный Документы
Культура Документы
ТРЕБУЕМЫЕ КОМПОНЕНТЫ:
• Плата Arduino
• Макетная плата
• Перемычки
• 4 светодиод
• 4 кнопки
ТРЕБУЕМЫЕ БИБЛИОТЕКИ:
• Топе
ПРИНЦИП РАБОТЫ:
В оригинальной игре компании Atari было четыре оборудованных светодиодами цветных панели,
которые загорались в определенном порядке, после чего игрок должен был повторить
комбинацию
СБОРКА:
1. Установите кнопки на макетную плату так, чтобы они перекрывали собой канавку (словно
мостики), а контакты А и В оказались на одной стороне от канавки, а С и D — на другой.
2. Подключите контакт В каждой кнопки к шине заземления макетной платы, а саму шину — к
контакту GND платы Arduino.
3. Подключите контакт D каждой кнопки к цифровым контактам 2-5 платы Arduino (по порядку).
4. Установите светодиоды в макетную плату так, чтобы короткая ножка (катод) каждого из них
была соединена с контактом С каждой кнопки. Установите длинную ножку (анод) каждого
светодиода в отверстие справа, как показано на рис.
5. Установите на макетную плату резисторы с сопротивлением 220 Ом так, чтобы одна из ножек
каждого резистора была соединена с длинной ножкой (анодом) каждого светодиода. Другую
ножку каждого резистора с помощью перемычек подключите к Arduino к контактам 8-11, как
показано на рис.
8. Убедитесь, что ваша цепь соответствует схеме, а затем загрузите в память Arduino код скетча,
приведенный в разделе «Скетч» далее в этом проекте.
СКЕТЧ:
#include <Tone.h>
Tone speakerpin;
int starttune[] = {NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4,
NOTE_G4, NOTE_F4, NOTE_E4, NOTE_F4, NOTE_G4};
int duration2[] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100, 200, 100, 500};
int inputArray[100];
void fail() {
digitalWrite(ledPins[0], HIGH);
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[3], HIGH);
speakerpin.play(NOTE_G3, 300);
delay (200);
digitalWrite(ledPins[0], LOW);
speakerpin.play(NOTE_C3, 300);
delay (200);
delay(500);
turn = -1; // Сбросить значение переменной turn для начала новой игры
void setup() {
Serial.begin(9600);
pinMode(ledPins[i], OUTPUT);
}
// Инициализация пинов кнопок как ВХОД с подтягивающими резисторами
pinMode(button[i], INPUT);
randomSeed(analogRead(0));
speakerpin.play(starttune[thisNote]);
if (thisNote == i * 2 || thisNote == i * 2 + 1) {
digitalWrite(ledPins[i], HIGH);
delay(duration2[thisNote]);
speakerpin.stop();
// Выключение светодиодов
digitalWrite(ledPins[i], LOW);
delay(25);
delay(1000);
}
void loop() {
digitalWrite(ledPins[0], HIGH);
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[3], HIGH) ;
speakerpin.stop();
delay(25);
digitalWrite(ledPins[0] , LOW);
digitalWrite(ledPins[1] , LOW);
digitalWrite(ledPins[2] , LOW);
digitalWrite(ledPins[3] , LOW);
delay(1000);
Serial.println("");
Serial.print("Turn: ");
Serial.print(y);
Serial.println("") ;
Serial.print(randomArray[x]);
digitalWrite(ledPins[y], HIGH);
speakerpin.play(NOTE_G3, 100);
delay(400);
digitalWrite(ledPins[y], LOW);
delay(100);
digitalWrite(ledPins[y], HIGH);
speakerpin.play(NOTE_A3, 100);
delay(400) ;
digitalWrite(ledPins[y], LOW);
delay(100);
digitalWrite(ledPins[y], HIGH);
speakerpin.play(NOTE_B3, 100);
delay (400);
digitalWrite(ledPins[y], LOW);
delay (100);
digitalWrite(ledPins[y], HIGH);
speakerpin.play(NOTE_C4, 100);
delay (400);
digitalWrite(ledPins[y], LOW);
delay (100);
input ();
}
void input() {
// кнопки
digitalWrite(ledPins[0], HIGH);
speakerpin.play(NOTE_G3, 100);
delay (200);
digitalWrite(ledPins[0], LOW);
inputArray[x] = 1;
delay (250);
Serial.print(" ");
// сгенерированному массиву
if (inputArray[x] != randomArray[x]) {
x++;
digitalWrite(ledPins[1], HIGH);
speakerpin.play(NOTE_A3, 100);
delay (200);
digitalWrite(ledPins[1], LOW);
inputArray[x] = 2;
delay (250);
Serial .print(2);
if (inputArray[x] != randomArray[x]) {
fail();
x++;
digitalWrite(ledPins[2], HIGH);
speakerpin.play(NOTE_B3, 100);
delay (200);
digitalWrite(ledPins[2], LOW);
inputArray[x] = 3;
delay (250);
Serial.print (3);
if (inputArray[x] != randomArray[x]) {
fail ();
x++;
digitalWrite(ledPins[3], HIGH);
speakerpin.play(NOTE_C4, 100);
delay(200);
digitalWrite(ledPins[3], LOW);
inputArray[x] = 4;
delay (250);
if (inputArray[x] != randomArray[x]) {
fail();
x++;
}
}
delay(500);
Для Тинкеркада:
int starttune[] = {NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4,
NOTE_G4, NOTE_F4, NOTE_E4, NOTE_F4, NOTE_G4};
int duration2[] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100, 200, 100, 500};
int inputArray[100];
void fail() {
digitalWrite(ledPins[0], HIGH);
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[3], HIGH);
delay(200);
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], LOW);
delay(200);
delay(500);
void setup() {
Serial.begin(9600);
pinMode(speakerPin, OUTPUT);
pinMode(ledPins[i], OUTPUT);
pinMode(buttonP[i], INPUT);
randomSeed(analogRead(0));
tone(speakerPin, starttune[thisNote]);
if (thisNote == i * 2 || thisNote == i * 2 + 1) {
digitalWrite(ledPins[i], HIGH);
delay(duration2[thisNote]);
noTone(speakerPin);
digitalWrite(ledPins[i], LOW);
delay(25);
}
delay(1000);
void loop() {
digitalWrite(ledPins[0], HIGH);
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[3], HIGH);
tone(speakerPin, note[thisNote]);
delay(duration1[thisNote]);
noTone(speakerPin);
delay(25);
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], LOW);
delay(1000);
Serial.println("");
Serial.print("Turn: ");
Serial.print(y);
Serial.println("");
Serial.print(randomArray[x]);
digitalWrite(ledPins[y], HIGH);
delay(400);
digitalWrite(ledPins[y], LOW);
delay(100);
digitalWrite(ledPins[y], HIGH);
delay(400);
digitalWrite(ledPins[y], LOW);
delay(100);
digitalWrite(ledPins[y], HIGH);
delay(400);
digitalWrite(ledPins[y], LOW);
delay(100);
digitalWrite(ledPins[y], HIGH);
digitalWrite(ledPins[y], LOW);
delay(100);
input();
void input() {
digitalWrite(ledPins[0], HIGH);
delay(200);
digitalWrite(ledPins[0], LOW);
inputArray[x] = 1;
delay(250);
Serial.print(" ");
Serial.print(1);
if (inputArray[x] != randomArray[x]) {
x++;
}
if (buttonState == LOW && buttonP[y] == 3) {
digitalWrite(ledPins[1], HIGH);
delay(200);
digitalWrite(ledPins[1], LOW);
inputArray[x] = 2;
delay(250);
Serial.print(" ");
Serial.print(2);
if (inputArray[x] != randomArray[x]) {
fail();
x++;
digitalWrite(ledPins[2], HIGH);
delay(200);
digitalWrite(ledPins[2], LOW);
inputArray[x] = 3;
delay(250);
Serial.print(" ");
Serial.print(3);
if (inputArray[x] != randomArray[x]) {
fail();
x++;
}
if (buttonState == LOW && buttonP[y] == 5) {
digitalWrite(ledPins[3], HIGH);
delay(200);
digitalWrite(ledPins[3], LOW);
inputArray[x] = 4;
delay(250);
Serial.print(" ");
Serial.print(4);
if (inputArray[x] != randomArray[x]) {
fail();
x++;
delay(500);