Игра "бомба" на ардуино

Тема в разделе "Глядите, что я сделал", создана пользователем kva4991, 14 фев 2014.

  1. kva4991

    kva4991 Нерд

    Игра заключается в следующем: игроки становятся в круг и передают бомбу по кругу, при передаче бомбы,игрок отвечает на вопрос ведущего, у кого бомба в руках взорвётся-выбывает.

    ПРОШУ ПОМОЧЬ В НАПИСАНИИ КОДА! есть вариант испльзовать функцию delay ,но лучше без неё.

    Есть 4 кнопки ,первая запускает цикл заново(равносильно ресету), 2,3 и 4 кнопки устанавливают верхний порог времени взрыва,расчитывающееся рандомно 1, 1.5 , 3 минут соответственно.
    всё время до взрыва работает таймер типа пип-пип-пип.

    вот скетч,который есть на данный момент:

    Код (Text):


    #include <Bounce.h>

    const int go = 2; //кнопка начала игры
    const int but1 = 3; // время игры до 1 минуты
    const int but2 = 4; //время игры до 1.5 минуты
    const int but3 = 5; //время игры до 3 минут
    const int flash = 6; // светодиод
    const int motor = 7; //моторчик
    const int din = 8; //динамик

    int ledState = LOW; // текущее состояние таймера
    long previousMillis = 0; // переменная для хранения времени

    long intPause = 500; // интервал между звуком

    int intBeep=150; //время звучания

    Bounce bgo= Bounce(go,5);
    Bounce bbut1 = Bounce(but1,5);
    Bounce bbut2 = Bounce(but2,5);
    Bounce bbut3 = Bounce(but3,5);

    //дальше иут функции

    int muz(int x){
      int result;
    unsigned long currentMillis = millis();

    if(currentMillis - previousMillis > intPause) //проверяем не пора ли пиликнуть
        {
          previousMillis = currentMillis; //сохранили последнее время
          if (ledState == LOW) ledState = HIGH;
          else ledState = LOW;// включаем или выключаем в зависимости от текущего состояния
          if (ledState==HIGH)
          {
            tone(din,2000,intBeep);
          }
        }


      return result;
    }







    void setup()

    {

      pinMode(din, OUTPUT);  //определяю пины выходов
      pinMode(motor, OUTPUT);
      pinMode(flash, OUTPUT);
      pinMode(go, INPUT);      // включаю подтягивающий резистор,чтобы не мудрить с кнопкой,просто один пин кнопки к пину ардуина , втрой пин кнопки к минусу.  
      digitalWrite(go, HIGH);
      pinMode(but1, INPUT);        
      digitalWrite(but1, HIGH);
      pinMode(but2, INPUT);        
      digitalWrite(but2, HIGH);
      pinMode(but3, INPUT);        
      digitalWrite(but3, HIGH);
    }



    void loop()

    {


      if ((but1 or but2 or but3)==LOW){
        return;
      }
      else{
     
     
     
     



      }
    }
     
    Главная проблема на этот момент:звук взрыва,долго пытался его сделать похожим на "бууум"
    ,но мне кажется придётся сделать что-то другое (звук смерти в игре марио)


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

    Моторчик создаёт вибрацию,для его подключения к ардуино, была спаяна схема:[​IMG]потому как, моторчик потребляет намного больше 40 мили ампер,что опасно для ардуины,мой мотор может работать и от 5 вольт,а если у вас будет питание больше,то транзистор скорее всего придётся заменять на более мощный

    платформа: arduino pro mini

    Проект пока в разработке,скетч не работает на данный момент.

    Интересные странички(и,или использованные):
    1 http://www.freeduino.ru/arduino/sample_Buttons.html функция bounce.
    2 http://dvrobot-forum.ucoz.ru/forum/3-21-1#617 как подключить к одному пину несколько кнопок.
    3 http://arduino.ru/Tutorial/DigitalPins как включить внутренний подтягивающий резистор.

    Использованные библиотеки :
    1 Bounce http://arduino.cc/playground/uploads/Code/Bounce.zip
     

    Вложения:

    Последнее редактирование: 12 мар 2014
    ИгорьК и BAit нравится это.
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Помните игру на Денди - "танчики" (Battle City) ?
    Попробуйте сделать звук взрыва как там - характерное шипение :)
    Мне кажется, пищалка как раз подобное в состоянии выдать...
    И засуньте код под тэг CODE, предварительно отформатировав его нажатием Ctrl+T в Arduino IDE.
     
  3. BAit

    BAit Нерд

    Не понял!?
    Откуда вообще звук выходит?
     
  4. kva4991

    kva4991 Нерд

    С пина под названием "динамик"
     
  5. kva4991

    kva4991 Нерд

  6. BAit

    BAit Нерд

    Что-то скетч не фурычит
     
  7. BAit

    BAit Нерд

    Раскопал конвертер с wav - *.c
    Можно использовать библиотеку PlaySound http://yadi.sk/d/aXQfLjxvJK4xs
    чтобы играть мелодию.
    Честно говоря звук не очень
     
  8. kva4991

    kva4991 Нерд

    А можно поподробнее, как ей пользоваться?,я пытался запустить,так и невышло
     
  9. BAit

    BAit Нерд

    При компиляции ошибка? Если да то скачай новую та была для старой Arduino IDE http://yadi.sk/d/XKcxFbWpJTNwW Изменил одну строчку

    А программа для конвертирования называется Vim как я понял она для языка С# http://yadi.sk/d/YBJdwuwbJTNmz
    Извлекаешь её в удобное место заходишь командную строку (windows) в каталог с программой
    У меня это: C:\vim73\
    Чтобы компилировать пишешь: "xxd -i sound.wav sound.h" sound.wav это мелодия в каталоге
    sound.h это исходник
     
  10. BAit

    BAit Нерд

    Открываешь sound.h "unsigned char sound_wav[]" меняешь на "const unsigned char sound_wav[] PROGMEM" и
    "unsigned int sound_wav_len" на "const unsigned int sound_wav_len"
    Скетч и конвертированную мелодию держать в одном каталоге

    Скетч чтобы сыграть мелодию:
    PHP:
    #include <PlaySound.h>

    #include "sound.h"

    void setup(){}

    void loop()
    {
      PlaySound::startPlayback((uint8_t *)sound_wav,  sound_wav_len);
      delay(1500);
    }
    Пин для динамика 11