модули Nrf24l01, ардуино, передача звука

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

модули Nrf24l01, ардуино, передача звука

Сообщение olegue »

зацепился вот за этот проект.Звук передается - все ок



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

/* Спец проект youtube - канала VirF Live Productions
Адрес канала www.youtube.com/c/VirFLiveProductions
Группа посвященная каналу https://vk.com/virf_live_productions
version 1.0 от 24.02.17
*/
#include <RF24.h>   
#include <SPI.h>
#include <RF24V.h>
RF24 radio(7,8);    
RF24V Sound(radio,0);
void setup() {
radio.begin();
radio.setChannel(0x4b);
radio.setDataRate(RF24_250KBPS); //250KBPS, 1MBPS, 2MBPS (250KBPS на nRF24L01 (без +) неработает)
Sound.begin();
Sound.reader();} //  - Включаем прием 
void loop() {}

но хочется большего. Как можно определить что начался прием звука?
Т.е вот два модуля один передает , другой принимает. А вот я на паузу звук поставил,как на приемнике определить что звук на паузе.

Т.е когда я начал передавать приемник должен понять что я начал передавать, а когда я перестал передавать , то значит все конец связи.
Реклама
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: модули Nrf24l01, ардуино, передача звука

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

Всё ? С флешками закончили ?)) Перешли на радио ? )) А Интернет скоро будет ? ))
:))
В соседней теме мы подробно разбирали этот радио модуль... там же есть и куски кода...
https://www.radiokot.ru/forum/viewtopic ... 8&t=148087
PCM-256.jpg
(150.85 КБ) 136 скачиваний
olegue писал(а):Как можно определить что начался прием звука?
есть два способа:
1- опрашиваем (по SPI) статус модуля. Если приёмный буфер (RX FIFO) пуст, то STATUS = 0, значит приема нет.
2- опрашиваем вывод INT. Каждый раз при приёме пакета вывод INT переходит из высокого состояния (лог. "1") в низкое состояние (лог. "0"). Вывод INT должен быть предварительно настроен на "срабатывание по приёму пакета".

Мы проверяли оба способа.
Второй способ работает на ~25 % быстрей. Поэтому рекомендуется использовать его.
:tea:
Реклама
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: модули Nrf24l01, ардуино, передача звука

Сообщение olegue »

RX буфер в PRX режиме может хранить до трёх посылок. В регистре STATUS есть трёхбитное поле RX_P_NO из которого можно узнать, буфер пустой или для какого канала есть данные. Поле поле RX_P_NO принимает такие значения:

000-101: номер канала, для которого есть данные
110: это значение не используется
111: RX буфер пуст
т.е в режиме молчания буфер RX будет пуст? Но может ли он быть пуст, модули соеденины и идет прием хотя бы каких-то шумов по звуку и т.д. Вот что меня беспокоит.

Добавлено after 41 second:
И как до него добраться , до этого поля RX_P_NO, до регистра Status

Добавлено after 3 minutes 11 seconds:
roman.com писал(а):Вывод INT должен быть предварительно настроен на "срабатывание по приёму пакета".

Мы проверяли оба способа.
Не могу найти этот вывод , может речь идет о выводе IRQ?

Добавлено after 13 minutes 46 seconds:

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

#if !defined (MINIMAL)
void RF24::print_status(uint8_t status)
{
  printf_P(PSTR("STATUS\t\t = 0x%02x RX_DR=%x TX_DS=%x MAX_RT=%x RX_P_NO=%x TX_FULL=%x\r\n"),
           status,
           (status & _BV(RX_DR))?1:0,
           (status & _BV(TX_DS))?1:0,
           (status & _BV(MAX_RT))?1:0,
           ((status >> RX_P_NO) & 0b111),
           (status & _BV(TX_FULL))?1:0
          );
}

((status >> RX_P_NO) & 0b111),


нашел такое. Это используется в каком-то стандартном скетче.
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: модули Nrf24l01, ардуино, передача звука

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

конкретно в Nrf24l01 вывод IRQ
в других модулях вывод INT
это одно и то же)) и работают они одинаково)) просто называются по разному...
но чаще пишут INT...

Добавлено after 7 minutes 54 seconds:
Что ты хочешь не пойму... :dont_know:
olegue писал(а):Как можно определить что начался прием звука?
Т.е вот два модуля один передает , другой принимает. А вот я на паузу звук поставил,как на приемнике определить что звук на паузе.
для начала надо понимать как всё работает...

Nrf24l01 - это цифровые модули... они передают только цифру)) 010101100101101010....

чтоб передавать через эти модули звук надо сначала этот самый звук оцифровать... обычно используется WAV формат... он же PCM-256.

А дальше всё точно так же как с флешкой)) только с флешкой мы всё цифровали и записывали на флешку... а тут мы всё цифруем и передаём по радио. Вот и вся разница))
1- цифруем звук - переводим WAV формат... он же PCM-256. 010101100101101010....
2- передаём в цифровом виде с помощью модуля Nrf24l01. 010101100101101010....
olegue писал(а):вот я на паузу звук поставил...
значит первый Nrf24l01 ничего не передаёт.
второй Nrf24l01 соответственно ничего не принимает. Т.е. приёмный буфер FIFO у второго модуля пуст.

https://www.youtube.com/watch?v=bgpNbGDZrEg
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: модули Nrf24l01, ардуино, передача звука

Сообщение olegue »

Нет , это не рация.

попытаюсь обьяснить на фонариках

1 модуль начал передавать звук
Второй моодуль начал принимать и зажегся фонарик
1 модуль перестал передават звук
Фонариг погас.

Добавлено after 3 minutes 28 seconds:
roman.com писал(а):чтоб передавать через эти модули звук надо сначала этот самый звук оцифровать... обычно используется WAV формат... он же PCM-256.
там в библиотеках все уже цифруется и передается. Мне только нужно только определить при приеме звука момент начала приема звука и момент завершения приема звука.
Реклама
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: модули Nrf24l01, ардуино, передача звука

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

а что значит поставил на паузу ?
на паузе Nrf24l01 передаёт или нет ?



////////////////////////////////////////////// читать STATUS:
PORTC.5=0; // SS
tx=0; SPI(); x=rx; // SPI пустой
PORTC.5=1; // SS
////////////////////////////////////////////// флаг RX FIFO
if ((x & 0b00001110)==0b00001110) { // флаг .... 111. - RX FIFO - пуст
goto mesto_1; // сброс
};
Реклама
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: модули Nrf24l01, ардуино, передача звука

Сообщение olegue »

Короче , тут я немного в части задачи был неточен

сам неможнко запутался, паузу с передачей

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

void loop() {
     if( (radio.available()) && (V_Down==0))
     {
     digitalWrite(6, HIGH);   // turn the LED on (HIGH is the voltage level)
     V_Down=1;
     }
     else 
     { 
      V_Down=0;
      digitalWrite(6, LOW);   // turn the LED on (HIGH is the voltage level)
  }
     
      } //loop


работает как надо. Нажимаю на передачу - на втором устройстве загорается фонарик и идет прием сигнала. То что надо.
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: модули Nrf24l01, ардуино, передача звука

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

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

Re: модули Nrf24l01, ардуино, передача звука

Сообщение olegue »

Так я ж наоборот стараюсь очистить вопрос от мусора, что бы тема не разбухла на 150 страниц в обсуждением того что "можно ж было сделать по другому".

Изображение

Вот еще вопрос.

Выход на звук идет с 9 и 10 ноги Ардуины.
В схеме применен усилок китайский PAM8403 и какое то нетипичное подклчюение (на сзхеме выше). Что если я хочу применить усилитель например лм386, там есть масса (общий) и вход. Как мне подлкючить с 9 и 10 ноги на LM386? И вообще что это за выход такой с 9 и 10 ноги, как его понимать?

Добавлено after 19 minutes 22 seconds:
попробовал 9 и массу , 10 и массу - звук идет и там и там , причем примерно одинаково на слух. Счас почитал ,что это возможно мостовой выход.
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: модули Nrf24l01, ардуино, передача звука

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

9 и 10 ноги - это скорее всего быстрая ШИМ на таймере 1.
1.jpg
(67.14 КБ) 99 скачиваний
ШИМ на таймере 1.jpg
(60.57 КБ) 104 скачивания
2.jpg
(40.3 КБ) 91 скачивание
3.jpg
(50.07 КБ) 95 скачиваний
9 и 10 ноги - можно использовать для стерео)) Например 9 - левый канал, 10 - правый канал.

Но у нас я так понял моно. Поэтому 9 и 10 ноги - скорее всего просто дублируют друг друга)).

Значит просто одну из ног 9 или 10 подключить на вход LM386...
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: модули Nrf24l01, ардуино, передача звука

Сообщение olegue »

roman.com,, спасибо, как всегда очень доходчиво.
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: модули Nrf24l01, ардуино, передача звука

Сообщение olegue »

roman.com, Вопрос в тему , в которой Вы очень хорошо разбираетесь.

имею вот этот код
Спойлер

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

/* Спец проект youtube - канала VirF Live Productions
Адрес канала www.youtube.com/c/VirFLiveProductions
Группа посвященная каналу https://vk.com/virf_live_productions
version 1.2 от 12.05.17
*/
#include <RF24.h>   
#include <SPI.h>
#include <RF24V.h>
RF24 radio(7,8);    
RF24V Sound(radio,0);
boolean flag = 0;
boolean V_Up = 0;
boolean V_Down = 0;
void setup() {
pinMode(13, OUTPUT);

radio.begin();
radio.setChannel(0x4b);
radio.setAutoAck(0);
radio.setDataRate(RF24_1MBPS);
Sound.begin();
radio.setCRCLength(RF24_CRC_8);
digitalWrite(4,1);
}
void loop(){}
 
/*P.S. данный скетч по мимо своей непосредственной библиотеки "RF24V" 
требует установку основной библиотеки "nRF24L01"
Ссылка на оригинальную библиотеку "nRF24L01" https://yadi.sk/d/RvbUfGFEwjRid
*/
он прекрасно компилируется и отлично работает на плате Ардуино на базе Atmega328

но у меня есть несколь Атмег8 .которые я бы хотел зарядить пользуясь тем что

код занимает всего 5кб, но у меня вылезно вот это. Нсколько это поправимо. Можно ли перенести проект на Атмегу 8
Спойлер

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

C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp: In member function 'void RF24V::begin()':
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:35:1: error: 'TIMSK0' was not declared in this scope
 TIMSK0 |= _BV(OCIE0B);
 ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:35:1: note: suggested alternative: 'TIMSK'
 TIMSK0 |= _BV(OCIE0B);
 ^~~~~~
 TIMSK
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:35:15: error: 'OCIE0B' was not declared in this scope
 TIMSK0 |= _BV(OCIE0B);
               ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:35:15: note: suggested alternative: 'OCIE1B'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp: In function 'void rampDown()':
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:59:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 for(int i=0; i < ICR1; i++){
                ^
In file included from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:0:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:95:58: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
                                                     ~~~~~^~~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:63:9: note: in expansion of macro 'constrain'
 OCR1B = constrain((current - i),0,ICR1); OCR1A = constrain((current - i),0,ICR1);
         ^~~~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:95:58: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
                                                     ~~~~~^~~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:63:50: note: in expansion of macro 'constrain'
 OCR1B = constrain((current - i),0,ICR1); OCR1A = constrain((current - i),0,ICR1);
                                                  ^~~~~~~~~
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:30:0,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp: In function 'void TIMER0_COMPB_vect()':
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:84:5: warning: 'TIMER0_COMPB_vect' appears to be a misspelled 'signal' handler, missing '__vector' prefix [-Wmisspelled-isr]
 ISR(TIMER0_COMPB_vect){handleButtons();}
     ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp: In function 'void handleRadio()':
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:90:45: error: 'TIMSK1' was not declared in this scope
 if(radi.available() ){boolean n=!whichBuff; TIMSK1 &= ~_BV(ICIE1);sei();radi.read(&buffer[n],32); buffEmpty[n] = 0;pauseCntr = 0;
                                             ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:90:45: note: suggested alternative: 'TIMSK'
 if(radi.available() ){boolean n=!whichBuff; TIMSK1 &= ~_BV(ICIE1);sei();radi.read(&buffer[n],32); buffEmpty[n] = 0;pauseCntr = 0;
                                             ^~~~~~
                                             TIMSK
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:90:60: error: 'ICIE1' was not declared in this scope
 if(radi.available() ){boolean n=!whichBuff; TIMSK1 &= ~_BV(ICIE1);sei();radi.read(&buffer[n],32); buffEmpty[n] = 0;pauseCntr = 0;
                                                            ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:90:60: note: suggested alternative: 'TICIE1'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:93:61: error: 'TIMSK1' was not declared in this scope
  if(pauseCntr > 50){pauseCntr = 0;rampDown();streaming = 0; TIMSK1 &= ~(_BV(TOIE1) );
                                                             ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:93:61: note: suggested alternative: 'TIMSK'
  if(pauseCntr > 50){pauseCntr = 0;rampDown();streaming = 0; TIMSK1 &= ~(_BV(TOIE1) );
                                                             ^~~~~~
                                                             TIMSK
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:95:2: error: 'TCCR0A' was not declared in this scope
  TCCR0A &= ~_BV(COM0A1);
  ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:95:2: note: suggested alternative: 'TCCR1A'
  TCCR0A &= ~_BV(COM0A1);
  ^~~~~~
  TCCR1A
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:95:17: error: 'COM0A1' was not declared in this scope
  TCCR0A &= ~_BV(COM0A1);
                 ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:95:17: note: suggested alternative: 'COM1A1'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:100:24: error: 'TIMSK1' was not declared in this scope
  if(radi.available() ){TIMSK1 &= ~_BV(ICIE1);sei(); radi.read(&buffer[0],32);
                        ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:100:24: note: suggested alternative: 'TIMSK'
  if(radi.available() ){TIMSK1 &= ~_BV(ICIE1);sei(); radi.read(&buffer[0],32);
                        ^~~~~~
                        TIMSK
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:100:39: error: 'ICIE1' was not declared in this scope
  if(radi.available() ){TIMSK1 &= ~_BV(ICIE1);sei(); radi.read(&buffer[0],32);
                                       ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:100:39: note: suggested alternative: 'TICIE1'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:109:2: error: 'TCCR0A' was not declared in this scope
  TCCR0A |= _BV(COM0A1);
  ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:109:2: note: suggested alternative: 'TCCR1A'
  TCCR0A |= _BV(COM0A1);
  ^~~~~~
  TCCR1A
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:109:16: error: 'COM0A1' was not declared in this scope
  TCCR0A |= _BV(COM0A1);
                ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:109:16: note: suggested alternative: 'COM1A1'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp: In function 'void RX()':
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:113:11: error: 'TIMSK1' was not declared in this scope
 void RX(){TIMSK1 &= ~_BV(OCIE1B) | _BV(OCIE1A);ADCSRA = 0; ADCSRB = 0; buffEmpty[0] = 1; buffEmpty[1] = 1;
           ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:113:11: note: suggested alternative: 'TIMSK'
 void RX(){TIMSK1 &= ~_BV(OCIE1B) | _BV(OCIE1A);ADCSRA = 0; ADCSRB = 0; buffEmpty[0] = 1; buffEmpty[1] = 1;
           ^~~~~~
           TIMSK
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:113:60: error: 'ADCSRB' was not declared in this scope
 void RX(){TIMSK1 &= ~_BV(OCIE1B) | _BV(OCIE1A);ADCSRA = 0; ADCSRB = 0; buffEmpty[0] = 1; buffEmpty[1] = 1;
                                                            ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:113:60: note: suggested alternative: 'ADCSR'
 void RX(){TIMSK1 &= ~_BV(OCIE1B) | _BV(OCIE1A);ADCSRA = 0; ADCSRB = 0; buffEmpty[0] = 1; buffEmpty[1] = 1;
                                                            ^~~~~~
                                                            ADCSR
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:119:102: error: 'ICIE1' was not declared in this scope
 radi.openWritingPipe(pipes[0]);radi.openReadingPipe(1,pipes[1]); radi.startListening(); TIMSK1 = _BV(ICIE1);}
                                                                                                      ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:119:102: note: suggested alternative: 'TICIE1'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp: In function 'void __vector_5()':
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:123:31: error: 'OCR0A' was not declared in this scope
 if(visCtr >= 32 && streaming){OCR0A = buffer[whichBuff][0] << 2;visCtr = 0;}}}
                               ^~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:123:31: note: suggested alternative: 'OCR1A'
 if(visCtr >= 32 && streaming){OCR0A = buffer[whichBuff][0] << 2;visCtr = 0;}}}
                               ^~~~~
                               OCR1A
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp: In function 'void __vector_6()':
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:157:1: error: 'TIMSK1' was not declared in this scope
 TIMSK1 &= ~(_BV(OCIE1A));sei();radi.writeFast(&buffer[a],32);buffEmpty[a] = 1;TIMSK1 |= _BV(OCIE1A);}}
 ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:157:1: note: suggested alternative: 'TIMSK'
 TIMSK1 &= ~(_BV(OCIE1A));sei();radi.writeFast(&buffer[a],32);buffEmpty[a] = 1;TIMSK1 |= _BV(OCIE1A);}}
 ^~~~~~
 TIMSK
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp: In function 'void TX()':
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:183:11: error: 'TIMSK1' was not declared in this scope
 void TX(){TIMSK1 &= ~(_BV(ICIE1) | _BV(TOIE1));
           ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:183:11: note: suggested alternative: 'TIMSK'
 void TX(){TIMSK1 &= ~(_BV(ICIE1) | _BV(TOIE1));
           ^~~~~~
           TIMSK
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:183:27: error: 'ICIE1' was not declared in this scope
 void TX(){TIMSK1 &= ~(_BV(ICIE1) | _BV(TOIE1));
                           ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:183:27: note: suggested alternative: 'TICIE1'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:185:1: error: 'TCCR0A' was not declared in this scope
 TCCR0A &= ~_BV(COM0A1);
 ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:185:1: note: suggested alternative: 'TCCR1A'
 TCCR0A &= ~_BV(COM0A1);
 ^~~~~~
 TCCR1A
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:185:16: error: 'COM0A1' was not declared in this scope
 TCCR0A &= ~_BV(COM0A1);
                ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:185:16: note: suggested alternative: 'COM1A1'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:219:1: error: 'ADCSRB' was not declared in this scope
 ADCSRB |= _BV(ADTS0) | _BV(ADTS0) | _BV(ADTS2);byte prescaleByte = 0;
 ^~~~~~
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:219:1: note: suggested alternative: 'ADCSR'
 ADCSRB |= _BV(ADTS0) | _BV(ADTS0) | _BV(ADTS2);byte prescaleByte = 0;
 ^~~~~~
 ADCSR
In file included from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:99:0,
                 from c:\users\������\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:4:
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:219:15: error: 'ADTS0' was not declared in this scope
 ADCSRB |= _BV(ADTS0) | _BV(ADTS0) | _BV(ADTS2);byte prescaleByte = 0;
               ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:219:15: note: suggested alternative: 'ADPS0'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:219:41: error: 'ADTS2' was not declared in this scope
 ADCSRB |= _BV(ADTS0) | _BV(ADTS0) | _BV(ADTS2);byte prescaleByte = 0;
                                         ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:219:41: note: suggested alternative: 'ADPS2'
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:225:50: error: 'ADATE' was not declared in this scope
  ADCSRA = prescaleByte;ADCSRA |= _BV(ADEN) | _BV(ADATE);TIMSK1 = _BV(OCIE1B) | _BV(OCIE1A);}
                                                  ^
C:\Users\������\Documents\Arduino\libraries\RF24V\RF24V.cpp:225:50: note: suggested alternative: 'ADIE'
Несколько библиотек найдено для "SPI.h"
 Используется: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
Не используется: C:\Program Files (x86)\Arduino\libraries\SPI
Используем библиотеку RF24-master в папке: C:\Users\Леонид\Documents\Arduino\libraries\RF24-master (legacy)
Используем библиотеку SPI версии 1.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI 
Используем библиотеку RF24V в папке: C:\Users\Леонид\Documents\Arduino\libraries\RF24V (legacy)
exit status 1
Ошибка компиляции для платы Arduino NG or older.
Добавлено after 1 minute 45 seconds:
речь идет обо использовании Ардуино на базе Atmega 8 т.е это платы Ардуино NG или older

Сразу говорю , сделать такое чисто на АВР мне не подсилу. Слабоват умишком.
veso74
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: модули Nrf24l01, ардуино, передача звука

Сообщение veso74 »

Нет. В библиотеках к ATmega328 (RF24, RF24V) используются биты/регистры, которых в ATmega8 нет: ADCSRB, ADATE, ADTS2, ADTS0, COM0A1 ...
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: модули Nrf24l01, ардуино, передача звука

Сообщение olegue »

таки да, насколько это сложно перебить на атмегу8?
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: модули Nrf24l01, ардуино, передача звука

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

я не разбираюсь в ардуино...
ну открой любую библиотеку и посмотри... https://iarduino.ru/file/27.html
там слишком много менять))

по мне так проще сделать на простом AVR...
хотел тоже побаловаться... да руки не дошли))

RF24 radio(7,8);
RF24V Sound(radio,0);
void setup() {
radio.begin();
radio.setChannel(0x4b);
radio.setDataRate(RF24_250KBPS); //250KBPS, 1MBPS, 2MBPS (250KBPS на nRF24L01 (без +) неработает)
Sound.begin();
Sound.reader();} // - Включаем прием
:roll:

а где битрейт ?
тоже пробовал просто МК нагружать...
8 кбит/с... 16 кбит/с... 32 кбит/с...
8 бит... 16 бит...

оптимально 16 кбит/с... 16 бит...
:roll:
передавать не пробовал... но можно попробовать))
но если подключить вместо стика микрофон... а вместо датчика динамик... и повысить частоту передачи пакетов... то должно работать))
PCM-256.jpg
(126.3 КБ) 99 скачиваний
radio.begin();
radio.setChannel(0x4b);
radio.setAutoAck(0);
radio.setDataRate(RF24_1MBPS);
Sound.begin();
radio.setCRCLength(RF24_CRC_8);
digitalWrite(4,1);

radio.setDataRate(RF24_1MBPS);
:roll:
лучше - radio.setDataRate(RF24_250KBPS); //250KBPS - дальность заметно больше))

radio.setCRCLength(RF24_CRC_8);
:roll:
лучше - radio.setCRCLength(RF24_CRC_16); - надёжность заметно больше))
и т.д.
:tea:
Ответить

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