Страница 1 из 1
модули Nrf24l01, ардуино, передача звука
Добавлено: Чт июл 21, 2022 18:04:05
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() {}
но хочется большего. Как можно определить что начался прием звука?
Т.е вот два модуля один передает , другой принимает. А вот я на паузу звук поставил,как на приемнике определить что звук на паузе.
Т.е когда я начал передавать приемник должен понять что я начал передавать, а когда я перестал передавать , то значит все конец связи.
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Чт июл 21, 2022 19:58:52
roman.com
Всё ? С флешками закончили ?)) Перешли на радио ? )) А Интернет скоро будет ? ))
В соседней теме мы подробно разбирали этот радио модуль... там же есть и куски кода...
https://www.radiokot.ru/forum/viewtopic ... 8&t=148087
olegue писал(а):Как можно определить что начался прием звука?
есть два способа:
1- опрашиваем (по SPI) статус модуля. Если приёмный буфер (RX FIFO) пуст, то STATUS = 0, значит приема нет.
2- опрашиваем вывод INT. Каждый раз при приёме пакета вывод INT переходит из высокого состояния (лог. "1") в низкое состояние (лог. "0"). Вывод INT должен быть предварительно настроен на "срабатывание по приёму пакета".
Мы проверяли оба способа.
Второй способ работает на ~25 % быстрей. Поэтому рекомендуется использовать его.

Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Чт июл 21, 2022 21:13:16
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),
нашел такое. Это используется в каком-то стандартном скетче.
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Чт июл 21, 2022 21:21:27
roman.com
конкретно в Nrf24l01 вывод IRQ
в других модулях вывод INT
это одно и то же)) и работают они одинаково)) просто называются по разному...
но чаще пишут INT...
Добавлено after 7 minutes 54 seconds:
Что ты хочешь не пойму...
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
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Чт июл 21, 2022 21:42:24
olegue
Нет , это не рация.
попытаюсь обьяснить на фонариках
1 модуль начал передавать звук
Второй моодуль начал принимать и зажегся фонарик
1 модуль перестал передават звук
Фонариг погас.
Добавлено after 3 minutes 28 seconds:
roman.com писал(а):чтоб передавать через эти модули звук надо сначала этот самый звук оцифровать... обычно используется WAV формат... он же PCM-256.
там в библиотеках все уже цифруется и передается. Мне только нужно только определить при приеме звука момент начала приема звука и момент завершения приема звука.
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Чт июл 21, 2022 23:16:42
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; // сброс
};
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Пт июл 22, 2022 11:49:59
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
работает как надо. Нажимаю на передачу - на втором устройстве загорается фонарик и идет прием сигнала. То что надо.
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Пт июл 22, 2022 13:41:13
roman.com
так никто и не понял... что это вообще такое...
радио телефон... радио микрофон... радио домофон... или просто рация))

Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Пт июл 22, 2022 15:35:28
olegue
Так я ж наоборот стараюсь очистить вопрос от мусора, что бы тема не разбухла на 150 страниц в обсуждением того что "можно ж было сделать по другому".
Вот еще вопрос.
Выход на звук идет с 9 и 10 ноги Ардуины.
В схеме применен усилок китайский PAM8403 и какое то нетипичное подклчюение (на сзхеме выше). Что если я хочу применить усилитель например лм386, там есть масса (общий) и вход. Как мне подлкючить с 9 и 10 ноги на LM386? И вообще что это за выход такой с 9 и 10 ноги, как его понимать?
Добавлено after 19 minutes 22 seconds:
попробовал 9 и массу , 10 и массу - звук идет и там и там , причем примерно одинаково на слух. Счас почитал ,что это возможно мостовой выход.
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Пт июл 22, 2022 17:07:38
roman.com
9 и 10 ноги - это скорее всего быстрая ШИМ на таймере 1.
- 1.jpg
- (67.14 КБ) 99 скачиваний
- 2.jpg
- (40.3 КБ) 91 скачивание
- 3.jpg
- (50.07 КБ) 95 скачиваний
9 и 10 ноги - можно использовать для стерео)) Например 9 - левый канал, 10 - правый канал.
Но у нас я так понял моно. Поэтому 9 и 10 ноги - скорее всего просто дублируют друг друга)).
Значит просто одну из ног 9 или 10 подключить на вход LM386...
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Вс июл 24, 2022 10:51:40
olegue
roman.com,, спасибо, как всегда очень доходчиво.
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Вс июл 24, 2022 23:25:39
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
Сразу говорю , сделать такое чисто на АВР мне не подсилу. Слабоват умишком.
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Вс июл 24, 2022 23:57:14
veso74
Нет. В библиотеках к ATmega328 (RF24, RF24V) используются биты/регистры, которых в ATmega8 нет: ADCSRB, ADATE, ADTS2, ADTS0, COM0A1 ...
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Пн июл 25, 2022 09:25:29
olegue
таки да, насколько это сложно перебить на атмегу8?
Re: модули Nrf24l01, ардуино, передача звука
Добавлено: Пн июл 25, 2022 17:20:42
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();} // - Включаем прием
а где битрейт ?
тоже пробовал просто МК нагружать...
8 кбит/с... 16 кбит/с... 32 кбит/с...
8 бит... 16 бит...
оптимально 16 кбит/с... 16 бит...
передавать не пробовал... но можно попробовать))
но если подключить вместо стика микрофон... а вместо датчика динамик... и повысить частоту передачи пакетов... то должно работать))
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);
лучше - radio.setDataRate(RF24_250KBPS); //250KBPS - дальность заметно больше))
radio.setCRCLength(RF24_CRC_8);
лучше - radio.setCRCLength(RF24_CRC_16); - надёжность заметно больше))
и т.д.
