Ардуино - запись звука
Re: Ардуино - запись звука
А на esp8266 что будет ? Оно будет гонять файлы по wifi или использоваться просто как жирный проц ?
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Re: Ардуино - запись звука
На данный момент Atmega8 для меня не актуальна, написание кода для нее на Атмел Студио я не вывезу. Дурить людям голову что бы кто-то написал такое я не буду. Ладно бы там где-то поправить или подсказать, но тут пока помощь потребовалась более масштабная. А Атмега8 для Ардуино уже точно здесь не прокатит. Мало того я хочу расширять функционал в текущем проекте на Ардуино Атмега328 так как для этого появилась реальная возможностьDimon456 писал(а):Конкретнее, решите нужна вам атмега8 и на ардуино или нет?
Dimon456, еще раз хочу потвердить, после вашей идеи с корректировкой кода , все работает как надо. Памяти еще более 500 байт
есть уже "обрезанная версия" типа cdfat16, я даже ее пробовал, когде еще с буфером толком ничегол не было решено. Счас можно верниться к этому опять посмотреть что получается.Dimon456 писал(а):А его и не надо переписывать, просто убрать лишнее, отказаться от поддержки ехFat Fat32, оставить только Fat16
Добавлено after 3 minutes 41 second:
да все тоже самое, только привлекает что wifi модуль "халявный", останется только зарядить передачу файлов, что бы флэшку не дергать из устройстваMorroc писал(а):А на esp8266 что будет ? Оно будет гонять файлы по wifi или использоваться просто как жирный проц ?
Ну и еще если какие доработки в голову буду приходит, что не нужно будет оглядываться на ресурсы.
Re: Ардуино - запись звука
[uquote="olegue",url="/forum/viewtopic.php?p=4242689#p4242689"]открыл получившийся файл в хекс-редактор. Все данные идут сплошняком, никаких типа пустых блоков или одинаковобайтовых блоков я не наблюдаю.[/uquote]
Все данные идут сплошняком ? никаких типа пустых блоков ?
цитата: https://cxem.net/mc/mc435.php
Дело в том, что файл может быть раскидан в области данных не в подряд расположенных кластерах, а разбросан в разных местах. Поэтому, чтобы прочитать файл - необходимо считать первый кластер файла, затем перейти в запись об этом кластере в фат и узнать либо номер следующего кластера, либо, что это был последний кластер файла.
проще написать всё по новой))
выше кидал всё в протеус...
мега328...
в протеусе всё идельно работает без буфера... да только этот Протеус... нафиг никому не нужен))
надо брать флешку и проверять всё в железе...
я бы сам всё проверил... да только мне диктофон не нужен))

Все данные идут сплошняком ? никаких типа пустых блоков ?
цитата: https://cxem.net/mc/mc435.php
Дело в том, что файл может быть раскидан в области данных не в подряд расположенных кластерах, а разбросан в разных местах. Поэтому, чтобы прочитать файл - необходимо считать первый кластер файла, затем перейти в запись об этом кластере в фат и узнать либо номер следующего кластера, либо, что это был последний кластер файла.
какая скучная у тебя жизнь)) никаких новых открытий ))Morroc писал(а):...
Dimon456 писал(а):А его и не надо переписывать, просто убрать лишнее, отказаться от поддержки ехFat Fat32, оставить только Fat16,
проще написать всё по новой))
выше рассматривался вариант без буфера...Dimon456 писал(а):Еще не рассматривался вариант без буфера, сколько времени выполняется функция write, сам я не смотрел что туда пишется, ни кто здесь ни чего не сказал про это. Может, вечером в протеусе и гляну.
выше кидал всё в протеус...
мега328...
в протеусе всё идельно работает без буфера... да только этот Протеус... нафиг никому не нужен))
надо брать флешку и проверять всё в железе...
я бы сам всё проверил... да только мне диктофон не нужен))
вот... уже что то интересное... начинается))olegue писал(а):счас есть задумка перенести это все на esp8266, там готовый wifi есть , но с переносом алгоритма сэмплирования придется повозится.
Re: Ардуино - запись звука
[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:
понимаю что плохо смотрел или не там где нужно. Ну да ладно. Это вопрос уже уходит в неактуальные.
и экранчик стал актуален...
Добавлено after 21 minute 40 seconds:
https://github.com/greiman/Fat16/blob/m ... 16/Fat16.h
вот эта обрезанная версия, но при подключении я не увидель каккой то экономии в ресурсах.
Добавлено after 3 minutes 7 seconds:
понимаю что плохо смотрел или не там где нужно. Ну да ладно. Это вопрос уже уходит в неактуальные.
Re: Ардуино - запись звука
[uquote="roman.com",url="/forum/viewtopic.php?p=4242857#p4242857"]какая скучная у тебя жизнь)) никаких новых открытий ))
[/uquote]
они в другой области ) пытаюсь на багажник авто поставить удочку-антенну ~15м высотой и чтоб это одному можно было развернуть-свернуть )
они в другой области ) пытаюсь на багажник авто поставить удочку-антенну ~15м высотой и чтоб это одному можно было развернуть-свернуть )
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Re: Ардуино - запись звука
Код: Выделить всё
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.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);
}буду делать по образу и подобию
Код: Выделить всё
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 раз.
Re: Ардуино - запись звука
Что, очередной велосипед? Ну пиши.roman.com писал(а):проще написать всё по новой))
А при чем тут сектор? Ты что полностью сектор записываешь?roman.com писал(а):в протеусе всё идельно работает без буфера...
Re: Ардуино - запись звука
Короче , ни фига не получается каталог с временем сделать. Какая уж тут файловая система...
Re: Ардуино - запись звука
А зачем? получилось же с именем файла и датой? Этого разве недостаточно? Эдак ща ещё и атрибуты файлу захочется
Но, с атрибутами датой создания, было бы, конечно, ещё круче.
Re: Ардуино - запись звука
.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Re: Ардуино - запись звука
Вымучил
пришлось правда , 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/
про DEC я не знал
https://forum.arduino.ua/viewtopic.php?id=346
Добавлено after 22 minutes 25 seconds:
Добавлено after 2 minutes 43 seconds:
хотя я думаю сама библиотека sdfat это все разруливает.
Добавлено after 1 minute 44 seconds:
Martian, атрибуты даты и времени к файлу я уже раньше сделал.
от eeprom можно пока отказаться, там последний номер файлов хранился.
Добавлено after 2 hours 16 minutes 40 seconds:
Как в данном случает можно получить данные со второго входа ADC?
Т.е на второй вход будут приходить одновременно за записью звука аналоговые данные, мне нужно будет их оцифровать и записать в файл.
Как это может выглядеть схематично?
Код: Выделить всё
...........
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;
}https://forum.arduino.ua/viewtopic.php?id=346
Добавлено after 22 minutes 25 seconds:
Код: Выделить всё
if (!sd.exists(foldername) {
sd.mkdir(foldername); // Создаю директорию - пробовал без этого - никак
}хотя я думаю сама библиотека sdfat это все разруливает.
Добавлено after 1 minute 44 seconds:
Martian, атрибуты даты и времени к файлу я уже раньше сделал.
от eeprom можно пока отказаться, там последний номер файлов хранился.
Добавлено after 2 hours 16 minutes 40 seconds:
Как в данном случает можно получить данные со второго входа ADC?
Т.е на второй вход будут приходить одновременно за записью звука аналоговые данные, мне нужно будет их оцифровать и записать в файл.
Как это может выглядеть схематично?
Re: Ардуино - запись звука
вопрос не очень понятен. в мк один ацп, входа просто переключаются на него по какой-то очереди, определённой пользователем. Возможно, достаточно будет просто поставить буферный конденсатор на каждый вход, ёмкость которого обеспечит хранение на то время, когда АЦП занят обработкой другого входа. А может даже и это лишнее, если скорость обработки достаточно высока.
Re: Ардуино - запись звука
[uquote="Martian",url="/forum/viewtopic.php?p=4243275#p4243275"]вопрос не очень понятен. в мк один ацп, входа просто переключаются на него по какой-то очереди, определённой пользователем. Возможно, достаточно будет просто поставить буферный конденсатор на каждый вход, ёмкость которого обеспечит хранение на то время, когда АЦП занят обработкой другого входа. А может даже и это лишнее, если скорость обработки достаточно высока.[/uquote]
чет я тормознул. у меня ж Ардуоино, т.е я мгу просто AnalogRead(). Таки это то что мне нужно.
чет я тормознул. у меня ж Ардуоино, т.е я мгу просто AnalogRead(). Таки это то что мне нужно.
Re: Ардуино - запись звука
эх... када ты уже выкинешь свою ардуину... и будешь писать по нормальному))
опция ! ))
а твоя ардуина умеет шифровать флешки ? AVR умеет ))
кусок кода шифровальщика )) берём флешку... подключаем к AVR... нажимаем кнопочку "зашифровать"...
AVR читает сектора... начиная с нулевого и до последнего... ))
11111111
22222222
33333333
...
затем всё зашифровывает... AES128
21351014
50203497
91823023
...
и записывает всё обратно на флешку))
получаем 100 % зашифрованную флешку... с нулевого по последний сектор... включая все заголовки... файловую систему и т.д.
и никто не сможет прочитать нашу флешку )) ни одна программа ))
и только AVR сможет прочитать нашу флешку... потому что ключи шифрования есть только у AVR ))

опция ! ))
а твоя ардуина умеет шифровать флешки ? AVR умеет ))
кусок кода шифровальщика )) берём флешку... подключаем к AVR... нажимаем кнопочку "зашифровать"...
AVR читает сектора... начиная с нулевого и до последнего... ))
11111111
22222222
33333333
...
затем всё зашифровывает... AES128
21351014
50203497
91823023
...
и записывает всё обратно на флешку))
получаем 100 % зашифрованную флешку... с нулевого по последний сектор... включая все заголовки... файловую систему и т.д.
и никто не сможет прочитать нашу флешку )) ни одна программа ))
и только AVR сможет прочитать нашу флешку... потому что ключи шифрования есть только у AVR ))
Re: Ардуино - запись звука
[uquote="roman.com",url="/forum/viewtopic.php?p=4243339#p4243339"]ключи шифрования есть только у AVR ))
[/uquote] очередная неправда. Зачем?
Re: Ардуино - запись звука
где неправда ?
зачем - выше писал - чтоб враги не подслушали... что мы записали на наш диктофон))
зачем - выше писал - чтоб враги не подслушали... что мы записали на наш диктофон))
Re: Ардуино - запись звука
неправда - про исключительные особенности AVR. Зачем - зачем говорить неправду.
Что же касается шифрования, то он делается элементарно и без всяких ключей, а необходимая стойкость определяется иными факторами, а не "чтоб враги не подслушали". Прочитайте какую-нибудь популярную книжку про криптографию. Хорошая книжка будет та, где есть анекдот про неуловимого Джо.
Что же касается шифрования, то он делается элементарно и без всяких ключей, а необходимая стойкость определяется иными факторами, а не "чтоб враги не подслушали". Прочитайте какую-нибудь популярную книжку про криптографию. Хорошая книжка будет та, где есть анекдот про неуловимого Джо.
Re: Ардуино - запись звука
То что счас находится на флэшке врядли удастся втюхать самому лопоухому врагу даже в базарный день.
Просто привык уже править кода типа 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
вот его код
Добавлено after 2 minutes 20 seconds:
по моему , именно с помощью этого скетча я когда-то и запорол свою карту, которая счас не стирается
Добавлено after 48 minutes 43 seconds:
здесь записью занимается библиотека TmrPCM
https://radioprog.ru/post/270
в файле заголовка можно укзать размер буфера

пока мои знания в СИ на уровне где-то что-то подкрутить в готовом коде , да и то не всегда, как видилте.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 48 minutes 43 seconds:
здесь записью занимается библиотека TmrPCM
https://radioprog.ru/post/270
в файле заголовка можно укзать размер буфера
Re: Ардуино - запись звука
этот бред даже читать не хочу...Martian писал(а):...
ну не хочешь "шифровальщик"... сделай "копировальщик" ))olegue писал(а):То что счас находится на флэшке врядли удастся втюхать самому лопоухому врагу даже в базарный день.
берём ДВЕ флешки... подключаем к AVR... нажимаем кнопочку "копировать"...
AVR читает сектора... начиная с нулевого и до последнего... ))
11111111
22222222
33333333
...
затем всё копирует на вторую флешку...
11111111
22222222
33333333
...
фактически мы копируем ОБРАЗ флешки...
Это помнишь... как раньше была популярная программа... копирования пиратских DVD )) AVR так тоже умеет... копировать ОБРАЗ флешки))
а можно копировать ОБРАЗ флешки на ПК... или ещё куда)) для AVR не важно...
зачем ?
а вдруг у нас важные данные на флешке... а флешка сломается/потеряется... и всё...
ну... уже хорошо)) надо больше СИ )) чем больше СИ тем лучше ))olegue писал(а):пока мои знания в СИ на уровне где-то что-то подкрутить в готовом коде , да и то не всегда, как видилте.
я например пишу программу на СИ для AVR... а потом тупо копирую в любую программу на ПК... практически ничего даже не меняя )) и всё работает )) потому что СИ универсальный язык))
Re: Ардуино - запись звука
roman.com, согласен, а я вот такой вариан переноса информации пока не рассматривал. Надо подумать.Возможно здесь буедт какая-то прикладная суть.
Но я вернутсь к своим баранам
В моем диктофоне, записи звука происходит с помощью "ручной" настройки регистров.
Если я задействую еще один аналоговый вход уже коммандой AnalogRead(pin4) на собьются ли настройки того первого аналогово входа с которого я пишу звук?
Но я вернутсь к своим баранам
В моем диктофоне, записи звука происходит с помощью "ручной" настройки регистров.
Если я задействую еще один аналоговый вход уже коммандой AnalogRead(pin4) на собьются ли настройки того первого аналогово входа с которого я пишу звук?