Ардуино - запись звука

Обсуждаем контроллеры компании Atmel.
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Ардуино - запись звука

Сообщение Morroc »

А на esp8266 что будет ? Оно будет гонять файлы по wifi или использоваться просто как жирный проц ?
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

Dimon456 писал(а):Конкретнее, решите нужна вам атмега8 и на ардуино или нет?
На данный момент Atmega8 для меня не актуальна, написание кода для нее на Атмел Студио я не вывезу. Дурить людям голову что бы кто-то написал такое я не буду. Ладно бы там где-то поправить или подсказать, но тут пока помощь потребовалась более масштабная. А Атмега8 для Ардуино уже точно здесь не прокатит. Мало того я хочу расширять функционал в текущем проекте на Ардуино Атмега328 так как для этого появилась реальная возможность

Dimon456, еще раз хочу потвердить, после вашей идеи с корректировкой кода , все работает как надо. Памяти еще более 500 байт
Dimon456 писал(а):А его и не надо переписывать, просто убрать лишнее, отказаться от поддержки ехFat Fat32, оставить только Fat16
есть уже "обрезанная версия" типа cdfat16, я даже ее пробовал, когде еще с буфером толком ничегол не было решено. Счас можно верниться к этому опять посмотреть что получается.

Добавлено after 3 minutes 41 second:
Morroc писал(а):А на esp8266 что будет ? Оно будет гонять файлы по wifi или использоваться просто как жирный проц ?
да все тоже самое, только привлекает что wifi модуль "халявный", останется только зарядить передачу файлов, что бы флэшку не дергать из устройства
Ну и еще если какие доработки в голову буду приходит, что не нужно будет оглядываться на ресурсы.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

[uquote="olegue",url="/forum/viewtopic.php?p=4242689#p4242689"]открыл получившийся файл в хекс-редактор. Все данные идут сплошняком, никаких типа пустых блоков или одинаковобайтовых блоков я не наблюдаю.[/uquote]
Все данные идут сплошняком ? никаких типа пустых блоков ?

цитата: https://cxem.net/mc/mc435.php

Дело в том, что файл может быть раскидан в области данных не в подряд расположенных кластерах, а разбросан в разных местах. Поэтому, чтобы прочитать файл - необходимо считать первый кластер файла, затем перейти в запись об этом кластере в фат и узнать либо номер следующего кластера, либо, что это был последний кластер файла.
:roll:
Morroc писал(а):...
какая скучная у тебя жизнь)) никаких новых открытий )) :))
Dimon456 писал(а):А его и не надо переписывать, просто убрать лишнее, отказаться от поддержки ехFat Fat32, оставить только Fat16,
:facepalm:
проще написать всё по новой))
Dimon456 писал(а):Еще не рассматривался вариант без буфера, сколько времени выполняется функция write, сам я не смотрел что туда пишется, ни кто здесь ни чего не сказал про это. Может, вечером в протеусе и гляну.
выше рассматривался вариант без буфера...
выше кидал всё в протеус...
мега328...
в протеусе всё идельно работает без буфера...
ADC_SPI_поток.jpg
(108.16 КБ) 31 скачивание
да только этот Протеус... нафиг никому не нужен))
надо брать флешку и проверять всё в железе...

я бы сам всё проверил... да только мне диктофон не нужен))
olegue писал(а):счас есть задумка перенести это все на esp8266, там готовый wifi есть , но с переносом алгоритма сэмплирования придется повозится.
вот... уже что то интересное... начинается))
:tea:
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

[uquote="Morroc",url="/forum/viewtopic.php?p=4239474#p4239474"]фм приемник еще и экранчик )[/uquote]
и экранчик стал актуален...

Добавлено after 21 minute 40 seconds:
https://github.com/greiman/Fat16/blob/m ... 16/Fat16.h

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

Добавлено after 3 minutes 7 seconds:
понимаю что плохо смотрел или не там где нужно. Ну да ладно. Это вопрос уже уходит в неактуальные.
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Ардуино - запись звука

Сообщение Morroc »

[uquote="roman.com",url="/forum/viewtopic.php?p=4242857#p4242857"]какая скучная у тебя жизнь)) никаких новых открытий )) :))[/uquote]
они в другой области ) пытаюсь на багажник авто поставить удочку-антенну ~15м высотой и чтоб это одному можно было развернуть-свернуть )
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

Код: Выделить всё

  DateTime now = rtc.now();

    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
как узнать какой тип данных у now.day()

Можно ли now.day()+now.month()?
Или это char?
и его надо
String str ;
strDay=now.day();
str.toCharArray(strDay, sizeof(strDay));

Добавлено after 1 hour 29 minutes 16 seconds:
интеренсно где читать документацию на эти библиотеке

ну нашел в примере вот такое
Спойлер

Код: Выделить всё

/* Timestamp functions using a DS1307 RTC connected via I2C and Wire lib
**
** Useful for file name
**		` SD.open(time.timestamp()+".log", FILE_WRITE) `
**
**
** Created: 2015-06-01 by AxelTB
** Last Edit:
*/

#include "RTClib.h"

RTC_DS1307 rtc;

void setup () {
  Serial.begin(57600);

#ifndef ESP8266
  while (!Serial); // wait for serial port to connect. Needed for native USB
#endif

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    while (1) delay(10);
  }

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running, let's set the time!");
    // When time needs to be set on a new device, or after a power loss, the
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

  // When time needs to be re-set on a previously configured device, the
  // following line sets the RTC to the date & time this sketch was compiled
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  // This line sets the RTC with an explicit date & time, for example to set
  // January 21, 2014 at 3am you would call:
  // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}

void loop() {
 DateTime time = rtc.now();

 //Full Timestamp
 Serial.println(String("DateTime::TIMESTAMP_FULL:\t")+time.timestamp(DateTime::TIMESTAMP_FULL));

 //Date Only
 Serial.println(String("DateTime::TIMESTAMP_DATE:\t")+time.timestamp(DateTime::TIMESTAMP_DATE));

 //Full Timestamp
 Serial.println(String("DateTime::TIMESTAMP_TIME:\t")+time.timestamp(DateTime::TIMESTAMP_TIME));

 Serial.println("\n");

 //Delay 5s
 delay(5000);
}
Serial.println(String("DateTime::TIMESTAMP_DATE:\t")+time.timestamp(DateTime::TIMESTAMP_DATE));

буду делать по образу и подобию

Код: Выделить всё

   String str,strFolder;  //declaring string.
    //
   strFolder=String("DateTime::TIMESTAMP_DATE:\t")+time.timestamp(DateTime::TIMESTAMP_DATE);// формируем папку с именем даты
// формируем втрорую строку с порядоковым номером из ЕЕПРОМ
// не понимаю Зачем мне это теперь, может уже и имя файла делать как дату 
   str = String(RecordNumber); //converting integer into a string.
   while (str.length() < 6)
    {
    str = "0" + str;  // и забить нулями спереди
      }

strFolder.concat("\");   // добавлю к папке косую
strFolder.concat(str);   /// добавляю имя файла
strFolder.concat(".wav");  /// Добавлю расширение
// конвертирую получившийся поуть в Char массив
strFolder.toCharArray(filename, sizeof(filename));

Код: Выделить всё

   SD.open(time.timestamp()+".log", FILE_WRITE) 
вот так надо сделать, но тогда нужно обязательно что бы часы шли
Последний раз редактировалось olegue Чт июн 09, 2022 16:44:17, всего редактировалось 1 раз.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: Ардуино - запись звука

Сообщение Dimon456 »

roman.com писал(а):проще написать всё по новой))
Что, очередной велосипед? Ну пиши.
roman.com писал(а):в протеусе всё идельно работает без буфера...
А при чем тут сектор? Ты что полностью сектор записываешь?
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

Короче , ни фига не получается каталог с временем сделать. Какая уж тут файловая система...
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Ардуино - запись звука

Сообщение Martian »

А зачем? получилось же с именем файла и датой? Этого разве недостаточно? Эдак ща ещё и атрибуты файлу захочется :) Но, с атрибутами датой создания, было бы, конечно, ещё круче.
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Ардуино - запись звука

Сообщение Morroc »

.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

Вымучил

Код: Выделить всё

...........
RTC_DS1307 rtc;
SdFat sd;
SdFile rec;
char filename[22];
char foldername[10];
..


void loop() {
 DateTime now = rtc.now();
 String strFile,strFolder;  //declaring string.
    strFolder=String(now.timestamp(DateTime::TIMESTAMP_DATE));  //YYYY-MM-DD
    strFolder.replace("-", "");
    strFolder.toCharArray(foldername, sizeof(foldername));
    sd.mkdir(foldername);  // Создаю директорию - пробовал без этого - никак
    strFolder.concat("/");
    strFile=String(now.timestamp(DateTime::TIMESTAMP_TIME));  //hh:mm:ss
    strFile.replace(":", "-");
    strFile.concat(".wav");
    strFolder.concat(strFile);
    strFolder.toCharArray(filename, sizeof(filename));
   
    rec.open(filename, O_CREAT | O_TRUNC | O_RDWR); /* Имя нового - записываемого файла на SD-карту. */

пришлось правда , 2 переменные завести и foldername[10] и filename[22]. Ну еще проверку на существование папки нужно вставить, а так в целом получилось тто что хотел

Алгоритм наверно так себе, тк FolderName входит в Filename в итоге, а объявлять и резервировать память приходится под обе переменные.

20220610 -папка
08-57-01.wav -файлы
08-58-22.wav

ну в целом , нормально, потом уже нашел похожее решение в сети , но оно более длинное
полезные ссылки:
https://adafruit.github.io/RTClib/html/ ... 5cc2bbc63b
https://forum.arduino.cc/t/creating-a-f ... t/632184/8
https://overcoder.net/q/2745847/%D0%B7% ... 83-arduino
https://forum.amperka.ru/threads/%D0%9E ... 0%B9.4980/

Код: Выделить всё

String get_file_name()
{
     String filename1;
     dt = RTC.now();
     filename1+=String(dt.year()-2000,DEC);
     if(dt.month()<10)
       filename1+="-0"+String(dt.month(),DEC);
     else
       filename1+="-"+String(dt.month(),DEC);
     if(dt.day()<10)
       filename1+="-0"+String(dt.day(),DEC);
     else
       filename1+="-"+String(dt.day(),DEC);
     //filename1+="-"+String(dt.hour(),DEC);
     //filename1+="-"+String(dt.minute(),DEC);
     //filename1+="-"+String(dt.second(),DEC);
     filename1+=".txt";
     return filename1;

}
про DEC я не знал
https://forum.arduino.ua/viewtopic.php?id=346

Добавлено after 22 minutes 25 seconds:

Код: Выделить всё

 if (!sd.exists(foldername)   {
       sd.mkdir(foldername);  // Создаю директорию - пробовал без этого - никак
   }
Добавлено after 2 minutes 43 seconds:
хотя я думаю сама библиотека sdfat это все разруливает.

Добавлено after 1 minute 44 seconds:
Martian, атрибуты даты и времени к файлу я уже раньше сделал.

от eeprom можно пока отказаться, там последний номер файлов хранился.

Добавлено after 2 hours 16 minutes 40 seconds:
Как в данном случает можно получить данные со второго входа ADC?
Т.е на второй вход будут приходить одновременно за записью звука аналоговые данные, мне нужно будет их оцифровать и записать в файл.
Как это может выглядеть схематично?
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Ардуино - запись звука

Сообщение Martian »

вопрос не очень понятен. в мк один ацп, входа просто переключаются на него по какой-то очереди, определённой пользователем. Возможно, достаточно будет просто поставить буферный конденсатор на каждый вход, ёмкость которого обеспечит хранение на то время, когда АЦП занят обработкой другого входа. А может даже и это лишнее, если скорость обработки достаточно высока.
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

[uquote="Martian",url="/forum/viewtopic.php?p=4243275#p4243275"]вопрос не очень понятен. в мк один ацп, входа просто переключаются на него по какой-то очереди, определённой пользователем. Возможно, достаточно будет просто поставить буферный конденсатор на каждый вход, ёмкость которого обеспечит хранение на то время, когда АЦП занят обработкой другого входа. А может даже и это лишнее, если скорость обработки достаточно высока.[/uquote]

чет я тормознул. у меня ж Ардуоино, т.е я мгу просто AnalogRead(). Таки это то что мне нужно.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

эх... када ты уже выкинешь свою ардуину... и будешь писать по нормальному))

опция ! ))
:))
а твоя ардуина умеет шифровать флешки ? AVR умеет ))
кусок кода шифровальщика ))
ATmega8_AES128.txt
(20.54 КБ) 34 скачивания
берём флешку... подключаем к AVR... нажимаем кнопочку "зашифровать"...

AVR читает сектора... начиная с нулевого и до последнего... ))

11111111
22222222
33333333
...

затем всё зашифровывает... AES128

21351014
50203497
91823023
...

и записывает всё обратно на флешку))

получаем 100 % зашифрованную флешку... с нулевого по последний сектор... включая все заголовки... файловую систему и т.д.
:)
и никто не сможет прочитать нашу флешку )) ни одна программа ))
и только AVR сможет прочитать нашу флешку... потому что ключи шифрования есть только у AVR ))
:tea:
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Ардуино - запись звука

Сообщение Martian »

[uquote="roman.com",url="/forum/viewtopic.php?p=4243339#p4243339"]ключи шифрования есть только у AVR ))
:tea:[/uquote] очередная неправда. Зачем?
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

где неправда ?
зачем - выше писал - чтоб враги не подслушали... что мы записали на наш диктофон))
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Ардуино - запись звука

Сообщение Martian »

неправда - про исключительные особенности AVR. Зачем - зачем говорить неправду.
Что же касается шифрования, то он делается элементарно и без всяких ключей, а необходимая стойкость определяется иными факторами, а не "чтоб враги не подслушали". Прочитайте какую-нибудь популярную книжку про криптографию. Хорошая книжка будет та, где есть анекдот про неуловимого Джо.
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

То что счас находится на флэшке врядли удастся втюхать самому лопоухому врагу даже в базарный день.
roman.com писал(а):эх... када ты уже выкинешь свою ардуину... и будешь писать по нормальному))
пока мои знания в СИ на уровне где-то что-то подкрутить в готовом коде , да и то не всегда, как видилте.

Просто привык уже править кода типа ADMUX=0x61 и к функциям ISR(TIMER2_COMPA_vect) и забыл что работаю в Arduino IDE

Добавлено after 1 minute 28 seconds:
В ютубе , кстате есть вариант диктофона на AnalogRead(). Надо посмотреть как там закручено.

Добавлено after 3 minutes 55 seconds:
вот он
https://www.youtube.com/watch?v=YUvJi1YGBdM

вот его код
Спойлер

Код: Выделить всё

/*
This sketch demonstrates recording of standard WAV files that can be played on any device that supports WAVs. The recording
uses a single ended input from any of the analog input pins. Uses AVCC (5V) reference currently.

Requirements:
Class 4 or 6 SD Card
Audio Input Device (Microphone, etc)
Arduino Uno,Nano, Mega, etc.

Steps:
1. Edit pcmConfig.h
    a: On Uno or non-mega boards, #define buffSize 128. May need to increase.
    b: Uncomment #define ENABLE_RECORDING and #define BLOCK_COUNT 10000UL

2. Usage is as below. See <a href="https://github.com/TMRh20/TMRpcm/wiki/Advanced-Features#wiki-recording-audio" title="https://github.com/TMRh20/TMRpcm/wiki/Advanced-Features#wiki-recording-audio" rel="nofollow">https://github.com/TMRh20/TMRpcm/wiki/Advanced-Features#wiki-recording-a...</a> for
   additional informaiton.

Notes: Recording will not work in Multi Mode.
Performance is very dependant on SD write speed, and memory used.
Better performance may be seen using the SdFat library. See included example for usage.
Running the Arduino from a battery or filtered power supply will reduce noise.
*/

#include <SD.h>
#include <SPI.h>
#include <TMRpcm.h>
#include <EEPROM.h>

#define ENABLE_DEBUG        //Включение вывода отладочной информации через Serial. Только для отладки! Закоментировать эту строку перед заливкой в готовое устройство!

#define SD_ChipSelectPin 10  //

#define ledStart 2         /* PIN LED Start */
#define ledStop 3          /* PIN LED Stop */
#define MicPin A1          // Аналоговый пин, к которму подключен микрофон

char NameRecord[10];        // Имя нового - записываемого файла на SD-карту
int RecordNumber;           // Номер записи - храним в EEPROM. в диапазоне от 0 до 32767
byte Recording = 0;         // Переменная определяет идет сейчас запись или нет
                            //-----------------------------------------------
int RecInterval = 5;        //! Минимальная продолжительность записи в секундах !
                            //-----------------------------------------------
unsigned long TimeInterval = 0; // Переменная для вычисления времени
int MaxAnalogPinValue = 1000;   // Уровень сигнала на аналоговом входе при котором произойдет старт записи
                                // Значение подбирается индивидуально! (100 - 1023)
int SaveADC1 = 0;
int SaveADC2 = 0;

unsigned int sample;
unsigned int signalMax = 0;
unsigned int signalMin = 256;
unsigned int peakToPeak = 0;
#define peakToPeakMinLevel 200   // Уровень срабатывания на звук. Значение подбирается индивидуально!
                                // Максимальное значение - 255

TMRpcm audio;   // create an object for use in this sketch 

void setup() {
    #if defined (ENABLE_DEBUG)
        Serial.begin(9600);
    #endif
    
    pinMode(ledStart, OUTPUT);
    pinMode(ledStop, OUTPUT);
    //audio.speakerPin = 11; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc
    pinMode(10,OUTPUT);  //Pin pairs: 9,10 Mega: 5-2,6-7,11-12,46-45
    
    if (!SD.begin(SD_ChipSelectPin)) {  
        digitalWrite(ledStop, LOW);
        digitalWrite(ledStart, LOW);
        return;
    }else{
        digitalWrite(ledStop, LOW);
        digitalWrite(ledStart, HIGH);
    }
    analogReference(EXTERNAL);
    // The audio library needs to know which CS pin to use for recording
    audio.CSPin = SD_ChipSelectPin;
    
    RecordNumber = EEPROM.read(0);
    RecInterval = RecInterval * 1000;
}


void loop() {
    if (Recording == 0){
        int AnR = analogRead(MicPin);
        #if defined (ENABLE_DEBUG)
            Serial.print("Analog level: ");
            Serial.println(AnR);
        #endif
        if (AnR >= MaxAnalogPinValue) {
            #if defined (ENABLE_DEBUG)
                Serial.print("Start recording! File: ");
                Serial.print(RecordNumber+1);
                Serial.println(".wav");
            #endif
            StartRec();
        }
    }
    
    if (Recording == 1){
        sample = ADCH;
        if (sample < 256)
        {
            if (sample > signalMax)
            {
                signalMax = sample;  // save just the max levels
            }
            else if (sample < signalMin)
            {
                signalMin = sample;  // save just the min levels
            }
        }
        #if defined (ENABLE_DEBUG)
            Serial.print("Max MIC signal: ");
            Serial.println(signalMax);
        #endif
        if (millis() - TimeInterval >= RecInterval) {
            peakToPeak = signalMax - signalMin;
            signalMax = 0;
            signalMin = 256;
            #if defined (ENABLE_DEBUG)
                Serial.print("peakToPeak = ");
                Serial.println(peakToPeak);
            #endif
            if (peakToPeak < peakToPeakMinLevel) {
                analogRead(MicPin);
                StopRec();
                #if defined (ENABLE_DEBUG)
                    Serial.println("Recording stopped");
                #endif
            }else{
                TimeInterval = millis()-1;
                #if defined (ENABLE_DEBUG)
                    Serial.println("Continue recording...");
                #endif
            }
        }
    }
}

void StartRec() {                   // begin recording process
    SaveADC1 = ADCSRA;
    SaveADC2 = ADCSRB;
    Recording = 1;
    digitalWrite(ledStop, HIGH);
    digitalWrite(ledStart, LOW);
    RecordNumber++;
    if (RecordNumber > 32766)RecordNumber = 0;      // небольшое огриничение в номерации файлов
    EEPROM.write(0, RecordNumber);                  // Сохранение в EEPROM номера последнего аудиофайла
    TimeInterval = millis();                        // Запоминаем  millis для отсчета времени записи
    sprintf(NameRecord,"%d.wav", RecordNumber);     // создаем название файла из номера и расширения ".wav"
    audio.startRecording(NameRecord, 16000, MicPin, 0);// Старт записи
}

void StopRec() {                    // stop recording process, close file
    audio.stopRecording(NameRecord);// Стоп записи
    digitalWrite(ledStop, LOW);
    digitalWrite(ledStart, HIGH);
    Recording = 0;
    ADCSRA = SaveADC1;
    ADCSRB = SaveADC2;
}
Добавлено after 2 minutes 20 seconds:
по моему , именно с помощью этого скетча я когда-то и запорол свою карту, которая счас не стирается

Добавлено after 48 minutes 43 seconds:
здесь записью занимается библиотека TmrPCM
https://radioprog.ru/post/270

в файле заголовка можно укзать размер буфера

Изображение
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

Martian писал(а):...
этот бред даже читать не хочу... :)))
olegue писал(а):То что счас находится на флэшке врядли удастся втюхать самому лопоухому врагу даже в базарный день.
ну не хочешь "шифровальщик"... сделай "копировальщик" ))
:))
берём ДВЕ флешки... подключаем к AVR... нажимаем кнопочку "копировать"...

AVR читает сектора... начиная с нулевого и до последнего... ))

11111111
22222222
33333333
...

затем всё копирует на вторую флешку...

11111111
22222222
33333333
...
:tea:
фактически мы копируем ОБРАЗ флешки...

Это помнишь... как раньше была популярная программа... копирования пиратских DVD ))
nero.jpg
(60.8 КБ) 30 скачиваний
AVR так тоже умеет... копировать ОБРАЗ флешки))
а можно копировать ОБРАЗ флешки на ПК... или ещё куда)) для AVR не важно...

зачем ?
а вдруг у нас важные данные на флешке... а флешка сломается/потеряется... и всё... :cry:
olegue писал(а):пока мои знания в СИ на уровне где-то что-то подкрутить в готовом коде , да и то не всегда, как видилте.
ну... уже хорошо)) надо больше СИ )) чем больше СИ тем лучше ))

я например пишу программу на СИ для AVR... а потом тупо копирую в любую программу на ПК... практически ничего даже не меняя )) и всё работает )) потому что СИ универсальный язык))
:tea:
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

roman.com, согласен, а я вот такой вариан переноса информации пока не рассматривал. Надо подумать.Возможно здесь буедт какая-то прикладная суть.

Но я вернутсь к своим баранам

В моем диктофоне, записи звука происходит с помощью "ручной" настройки регистров.
Если я задействую еще один аналоговый вход уже коммандой AnalogRead(pin4) на собьются ли настройки того первого аналогово входа с которого я пишу звук?
Ответить

Вернуться в «AVR»