Музыка на floppy-дисководах (нужна помощь)

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем SmilerRUS, 26 мар 2014.

  1. SmilerRUS

    SmilerRUS Нуб

    Заканчиваю 11 класс. На выпускном поздравляю информатика. Нужно подготовить какой-нибудь номер. Хотелось сделать что-нибудь связанное с информационными технологиями. Решил попробовать сделать музыку на floppy-дисководах с помощью arduino. Нашел англоязычный сайт, где человек делает такую вещь на arduino. http://dev-ch.com/coding/projects/floppydrivemusic

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

    Позже нашел русский урок. Но там делалось все немного по другому. Через специальную программу. Т.е. для работы сего механизма нужен компьютер. Хотелось бы, чтобы все работало без компьютера, только от блока питания.

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

    Вообщем, как говорится, "помогите плз". :)
    Заранее благодарю всех заинтересовавшихся.
     
  2. Megakoteyka

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

    http://dev-ch.com/coding/projects/floppydrivemusic

    Если я правильно понял, то говорят примерно следующее:

    This article explains the pinout of the floppy IDE cable.
    Распиновка шлейфа флопповода.

    There are 34 pins, where the uneven 17 of them are GND.
    You don't need to connect the GND pins of the floppy drive as long as you share GND of Arduino and your PSU.
    Из 34 ног 17 - земля. Но ее подключать не надо, т.к. земля уже будет подсоединена через разъем питания.

    The even ones (2, 4, 6 and so on) are the pins we connect to the ardiuno.
    We need to connect the following:

    • 14: Drive select enables or disables the motor and also the LED. This is useful if you want the LED only to be active when you hear a tone but clearly optional.
    14 нога включает и выключает мотор и светодиод.
    • 20: Step steps the motor by one step by changing it from HIGH to LOW.
    задний фронт на 20 ноге заставляет мотор сделать один шаг.
    • 18: Dir controls the direction of the motor. You should change it every step so your motor vibrates. Personally, I prefer vibrating over moving up and down as moving is not very loud and doesn't sound very good either.
    18 нога управляет направлением вращения мотора. Направление нужно менять каждый шаг, чтобы мотор вибрировал.

    When using my source code, you need to connect a button for the 'skip song' function. Schematics are here.
    Если будете использовать код оттуда, подключите кнопку для пропуска песенки как указано по ссылке.
     
    SmilerRUS нравится это.
  3. Megakoteyka

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

    Обязательно поделитесь результатом! :)
     
  4. SmilerRUS

    SmilerRUS Нуб

    Хорошо. Спасибо за перевод. :)
     
  5. da3020

    da3020 Нуб

    Тут подробно. На русском.
    http://habrahabr.ru/sandbox/59285
    Но это с использованием "высокого уровня" управления.

    А вот так можно зашить:

    Флопик:
    12 ногу джампером на 11-ю (drive select на землю). Загорится зелёная лампочка - шаговик запитан;
    16 нога к 8 ардуино (команда подать питание на шаговик - у меня она имела другую логику, смотрите ниже);
    18 нога к 12 ардуино (командует направлением шагов);
    20 нога к 13 ардуино (командует шагать при смене фронта);
    Землю флопика и землю ардуино совместить. Например 21 нога к GND ардуино;

    Далее заливаем скетч ниже.

    Только я не понял - почему такие хитрые задержки в скетче (видимо связано с синхронизацией чипа на самом флопике).

    И второе - флопики бывают разные. Например мне попался самсунг, который прекрасно работает без 16 ноги. А 16 нога у него при заземлении вращает шпиндель (при условии, что нажаты кнопочки спереди флопика)

    Код (Text):
    /****************************** FloppyStepper ********************************
    ******************************************************************************
    * Drives a 5 1/4" floppy drive stepper motor using the on-board driver card. *
    *                                                                            *
    * http://skylar-arduino.blogspot.com/2011/08/arduino-meets-floppy-drive.html *
    ******************************************************************************

      The circuit:
      * pin 12 (select 1) to ground
      * pin 16 (enable) to digital pin 8 (on Arduino)
      * pin 18 (direction) to digital pin 12 (on Arduino)
      * pin 20 (step) to digital pin 13 (on Arduino)
      */

      //Constants
      #define DELAY 3200  // sets speed

      // Stepper pins
      int enable_pin = 8;
      int dir_pin = 12;
      int step_pin = 13;

    void setup() {
      // Initial setup of pins
      pinMode(dir_pin, OUTPUT);
      pinMode(step_pin, OUTPUT);
      pinMode(enable_pin, OUTPUT);
    }

    void loop() {
      digitalWrite(enable_pin, HIGH);
      delay(1);
      digitalWrite(dir_pin, HIGH);  // clockwise
      delay(1);
      perform_step(200);            // perform 200 steps
      delay(500);
      digitalWrite(dir_pin, LOW);  // anti-clockwise
      delay(1);
      perform_step(100);            // perform 100 steps
      delay(500);
      perform_step(100);            // perform 100 steps
      delay(500);
    }

    void perform_step(long steps) {
      for (long i=0; i < steps; i++) {
        digitalWrite(step_pin, LOW);
        delayMicroseconds(100);
        digitalWrite(step_pin, HIGH);
        delayMicroseconds(DELAY);
      }
      // Set the pin low before we end
      digitalWrite(step_pin, LOW);
    }
    Источник http://skylar-arduino.blogspot.com.au/2011/08/arduino-meets-floppy-drive.html
     
    Последнее редактирование: 11 апр 2015