Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 1:fec489514106, committed 2020-11-28
- Comitter:
- hakusan270
- Date:
- Sat Nov 28 07:12:19 2020 +0000
- Parent:
- 0:e29839e5b065
- Commit message:
- 1
Changed in this revision
| main4-2.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r e29839e5b065 -r fec489514106 main4-2.cpp
--- a/main4-2.cpp Tue Nov 24 10:14:15 2020 +0000
+++ b/main4-2.cpp Sat Nov 28 07:12:19 2020 +0000
@@ -1,46 +1,53 @@
-//受信用プログラム
+//送信用プログラム
#include "mbed.h"
#include "nRF24L01P.h"
-RawSerial pc(PA_2, PA_3,9600 );
-//AnalogIn mike(PA_0);
-AnalogOut ear_R(PA_4);
-Ticker interrput;
-#define TRANSFER_SIZE 1
-int flg = 0;
-float txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
-int txDataCnt = 0;
-int rxDataCnt = 0;
+RawSerial pc(PA_2, PA_3,115200);
+AnalogIn mic_in(A0);
+AnalogOut sp_out(A2);
+Ticker interrput;
+#define TRANSFER_SIZE 16
+int out_flg = 1;
+int snd_flg = 0;
+uint16_t txData[TRANSFER_SIZE*2];
+int txDataIdx = 0;
+int rxDataCnt = 0;
nRF24L01P my_nrf24l01p(D11, D12, D13, D10, D9,D8); // mosi, miso, sck, csn, ce, irq
//nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10); // mosi, miso, sck, csn, ce, irq
-//DigitalOut myled1(LED1);
-//DigitalOut myled2(D3);
-void timer(){ //タイマー割り込みによるスピーカーへの出力
- if(flg==1){
- // ...add it to the transmit buffer
- //txData[txDataCnt++] = mike.read();
- ear_R.write(rxData[0]);
- flg = 0;
+void timer(){ //タイマー割り込みによるMic in 16回ごとに送信
+ uint16_t ain;
+ if(1 /*out_flg*/){
+ ain= mic_in.read_u16();
+ txData[txDataIdx] = ain;
+ txDataIdx++;
+ if (txDataIdx == TRANSFER_SIZE) {//最初の16回
+ snd_flg = 1;
+ } else if (txDataIdx >= TRANSFER_SIZE*2){//後の16回
+ txDataIdx=0;
+ snd_flg = 2;
+ }
+ // pc.printf("in %d\r\n",ain);
+ // sp_out.write_u16(ain);
+ //out_flg = 0;
}
}
int main() {
-
// The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
// "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
// only handles 4 byte transfers in the ATMega code.
+ int i=0;
+ wait_ms(100);
- interrput.attach(&timer, 0.001f);
-
-int i=0;
+
my_nrf24l01p.powerUp();
my_nrf24l01p.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY);//2400-2525
my_nrf24l01p.setRfOutputPower(NRF24L01P_TX_PWR_MINUS_12_DB);//mAX 0 -6 -12 -18
- my_nrf24l01p.setAirDataRate(NRF24L01P_DATARATE_250_KBPS);//250k,1000,2000K
+ my_nrf24l01p.setAirDataRate(NRF24L01P_DATARATE_1_MBPS);//250k,1000,2000K
// Display the (default) setup of the nRF24L01+ chip
pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
@@ -49,58 +56,26 @@
pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
- my_nrf24l01p.setTransferSize( TRANSFER_SIZE );//mAX 4
+ my_nrf24l01p.setTransferSize( TRANSFER_SIZE * sizeof( uint16_t ));//mAX 4
my_nrf24l01p.setReceiveMode();
my_nrf24l01p.enable();
-
+ wait_ms(10);
+ interrput.attach_us(&timer, 100);//100 usec 10Khz
while (1) {
-
- // If we've received anything over the host serial link...
- // if ( pc.readable() ) {
-
-
-
-
- // If the transmit buffer is full
- // if ( txDataCnt >= sizeof( txData ) ) {
-
- // Send the transmitbuffer via the nRF24L01+
- // my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
-
- // txDataCnt = 0;
- // }
+ i++;
+ if (snd_flg==1) {//最初のバッファ
+ snd_flg=0;
+ my_nrf24l01p.write( NRF24L01P_PIPE_P0, (char *)txData , TRANSFER_SIZE * sizeof(uint16_t) );
+ // pc.putc('1');
+ }
+ else if (snd_flg==2) {//後半のバッファ
+ snd_flg=0;
+ my_nrf24l01p.write( NRF24L01P_PIPE_P0, (char*)(txData+TRANSFER_SIZE) , TRANSFER_SIZE * sizeof(uint16_t) );
+ // pc.putc('2');
- // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
- // myled1 = !myled1;
- // }
-/* txData[0]='A';
- txData[1]='B';
- txData[2]='C';
- txData[3]='0' + (i++ & 0x0f);
- */
-#if defined ( TARGET_NUCLEO_L053R8 )
- my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, 4 );
-#endif
- // If we've received anything in the nRF24L01+...
- if ( my_nrf24l01p.readable() ) {
- if(flg == 0){
-
- // ...read the data into the receive buffer
- rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, (char*)rxData, sizeof( rxData ) );
-
- // Display the receive buffer contents via the host serial link
- for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
-
- pc.putc( rxData[i] ); //受信時には値を表示するようにしているつもりです
- flg = 1;
- }
-
- // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
- // myled1 = !myled1;
- }
- }
- } //for while(1)
+ }
+ } //for while(1)
}