Ceci est une ancienne révision du document !
Exemple 1 :
#include <RFduinoBLE.h> #define led 3 #define button 5 void setup() { RFduinoBLE.deviceName = "PMClab"; RFduinoBLE.advertisementData = "test"; RFduinoBLE.txPowerLevel = +4; RFduinoBLE.begin(); pinMode(led, OUTPUT); pinMode(button, INPUT); } void RFduinoBLE_onConnect() { for (int i=0 ; i<3 ; i++) { digitalWrite(led, HIGH); delay(200); digitalWrite(led, LOW); delay(200); } } void RFduinoBLE_onDisconnect() { digitalWrite(led, LOW); } void RFduinoBLE_onReceive(char *data, int len) { if (data[0]) digitalWrite(led, HIGH); else digitalWrite(led, LOW); } int debounce_time = 10; int debounce_timeout = 100; int debounce(int state) { int start = millis(); int debounce_start = start; while (millis() - start < debounce_timeout) if (digitalRead(button) == state) { if (millis() - debounce_start >= debounce_time) return 1; } else debounce_start = millis(); return 0; } int delay_until_button(int state) { if (state) RFduino_pinWake(button, HIGH); else RFduino_pinWake(button, LOW); do RFduino_ULPDelay(INFINITE); while (! debounce(state)); if (RFduino_pinWoke(button)) { RFduino_resetPinWake(button); } } void loop() { delay_until_button(HIGH); RFduinoBLE.send(1); delay_until_button(LOW); RFduinoBLE.send(0); }
Exemple 2 :
void setup() { Serial.begin(9600); } void loop() { RFduino_ULPDelay( SECONDS(1) ); float temp = RFduino_temperature(CELSIUS); Serial.print("Temperature : "); Serial.print(temp); Serial.println(" deg C"); }
Exemples de projets utilisants RfDuino :
Câblage :
Host :
////////////////////////////////////////////////// // Atelier : Communication sans fils - Séance 1 // ////////////////////////////////////////////////// // Importation de la librarie : #include <SPI.h> #include "RH_NRF24.h" // Création d'une instance représentant le module : RH_NRF24 nrf24; void setup() { // Ouverture du port série Serial.begin(9600); while (!Serial); // Initialisation du module if (!nrf24.init()) { Serial.println("Impossible d'initialiser le module"); while (true); } // Paramétrage du module : if (!nrf24.setRF(RH_NRF24::DataRate250kbps, RH_NRF24::TransmitPowerm18dBm)) { Serial.println("Impossible de parametrer le module"); while (true); } Serial.println("NRF24L01 Ok"); nrf24.setChannel(42); nrf24.setModeTx(); } void loop() { uint8_t data[] = "Hello World!"; nrf24.send(data, sizeof(data)); nrf24.waitPacketSent(); delay(1000); }
Device :
////////////////////////////////////////////////// // Atelier : Communication sans fils - Séance 1 // ////////////////////////////////////////////////// // Importation de la librarie : #include <SPI.h> #include "RH_NRF24.h" // Création d'une instance représentant le module : RH_NRF24 nrf24; void setup() { // Ouverture du port série Serial.begin(9600); while (!Serial); // Initialisation du module if (!nrf24.init()) { Serial.println("Impossible d'initialiser le module"); while (true); } // Paramétrage du module : if (!nrf24.setRF(RH_NRF24::DataRate250kbps, RH_NRF24::TransmitPowerm18dBm)) { Serial.println("Impossible de parametrer le module"); while (true); } Serial.println("NRF24L01 Ok"); nrf24.setChannel(42); nrf24.setModeRx(); } void loop() { if (nrf24.available()) { uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof(buf); if (nrf24.recv(buf, &len)) { Serial.println((char*)buf); } else { Serial.println("Recv failed."); } } delay(100); }
Host:
////////////////////////////////////////////////// // Atelier : Communication sans fils - Séance 1 // ////////////////////////////////////////////////// // Exemple : Une télécommande simple avec un joystick // Importation de la librarie : #include <SPI.h> #include "RH_NRF24.h" // Création d'une instance représentant le module : RH_NRF24 nrf24; struct JoystickData { float x; float y; } data; void setup() { // Ouverture du port série Serial.begin(9600); while (!Serial); // Initialisation du module if (!nrf24.init()) { Serial.println("Impossible d'initialiser le module"); while (true); } // Paramétrage du module : if (!nrf24.setRF(RH_NRF24::DataRate250kbps, RH_NRF24::TransmitPowerm18dBm)) { Serial.println("Impossible de parametrer le module"); while (true); } Serial.println("NRF24L01 Ok"); nrf24.setChannel(42); nrf24.setModeTx(); } void loop() { data.x = analogRead(0); data.y = analogRead(1); nrf24.send((const uint8_t*)&data, sizeof(data)); delay(100); }
Device:
////////////////////////////////////////////////// // Atelier : Communication sans fils - Séance 1 // ////////////////////////////////////////////////// // Importation de la librarie : #include <SPI.h> #include "RH_NRF24.h" // Création d'une instance représentant le module : RH_NRF24 nrf24; struct JoystickData { float x; float y; } data; void setup() { // Ouverture du port série Serial.begin(9600); while (!Serial); // Initialisation du module if (!nrf24.init()) { Serial.println("Impossible d'initialiser le module"); while (true); } // Paramétrage du module : if (!nrf24.setRF(RH_NRF24::DataRate250kbps, RH_NRF24::TransmitPowerm18dBm)) { Serial.println("Impossible de parametrer le module"); while (true); } Serial.println("NRF24L01 Ok"); nrf24.setChannel(42); nrf24.setModeRx(); } void loop() { if (nrf24.available()>=sizeof(data)) { uint8_t len = sizeof(data); nrf24.recv((uint8_t*)&data, &len); Serial.print("X="); Serial.println(data.x); Serial.print("Y="); Serial.println(data.y); Serial.println(); } delay(100); }
Exemple de projet réalisé avec un NRF24L01 : Analyseur de spectre du pauvre