Anem a veure com controlar un dispositiu amb un telèfon amb el Bluetooth habilitat. Això és útil per controlar robotets mentre estiguen dins l'abast del Bluetooth del telèfon.
Fes el muntatge següent:
Al programa que tens a continuació hem definit 2 blocs de codi que s'executen quan envie el número |«1», «2», o «3» per Bluetooth utilitzant la app «LightBlue» disponible en Android o IOS de forma gratuïta.
Instal·la aquesta APP, habilita el Bluetooth al teu mòbil, carrega aquest programa al teu «Nanoarduino 33 IoT» després d'haver instal·lat la llibreria ArduinoBle al teu ordinador , canvia el nom del «Nano33profe» al programa per no haver de mirar la MAC per veure amb quin Arduino et connectes si sous varis els alumnes que proveu aquest programa al mateix temps.
Quan no envie res per Bluetooth el programa atura els Leds que es puguen haver quedat engegats per error.
Quan desconnectes «NanoArduino 33 IoT» de la central de «LightBlue» el programa deixa els Leds aturats per evitar que consumisquen per error. Fixa't en el programa i en aquestes parts.
Revisa, adapta i carrega el programa de més avall, i obri el «Serial Terminal»,
A continuació connecta el «Nano33profe», ves a la secció «Digital output», i escriu els valors 1, 2, i 3.
Ací tens el programa per revisar i adaptar.
// Aquest programa és derivat d'un exemple de Fabricio Troya
// Font: https://docs.arduino.cc/tutorials/nano-33-iot/Bluetooth
// ATENCIÓ: Cal instal·lar la llibreria ArduinoBle
#include <ArduinoBLE.h>
long previousMillis = 0;
int interval = 0;
int ledState = LOW;
int pinLed = 10;
int pinLed2 = 11;
int pinLed3 = 12;
BLEService ledService("180A"); // BLE LED Service
// BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central
BLEByteCharacteristic switchCharacteristic("2A57", BLERead | BLEWrite);
void setup() {
Serial.begin(9600);
while (!Serial);
// set built in LED pin to output mode
pinMode(LED_BUILTIN, OUTPUT);
pinMode(pinLed, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
// begin initialization
if (!BLE.begin()) {
Serial.println("starting BLE failed!");
while (1);
}
// Canvia «professor» pel teu nom o no podreu diferenciar sense mirar la MAC quin Arduino és el teu
// set advertised local name and service UUID:
BLE.setLocalName("Nano33profe");
BLE.setAdvertisedService(ledService);
// add the characteristic to the service
ledService.addCharacteristic(switchCharacteristic);
// add service
BLE.addService(ledService);
// set the initial value for the characteristic:
switchCharacteristic.writeValue(0);
// start advertising
BLE.advertise();
Serial.println("BLE LED Peripheral");
}
void loop() {
// listen for BLE peripherals to connect:
BLEDevice central = BLE.central();
// if a central is connected to peripheral:
if (central) {
Serial.print("Connected to central: ");
// print the central's MAC address:
Serial.println(central.address());
// while the central is still connected to peripheral:
while (central.connected()) {
// if the remote device wrote to the characteristic,
// use the value to control the LED:
if (switchCharacteristic.written()) {
switch (switchCharacteristic.value()) { // any value other than 0
case 01:
Serial.println("Bloc primer de Leds");
for (int i = 0; i <= 10; i++) { //Repetim 10 vegades al programa
Serial.println("Engeguem el led del pin 10");
digitalWrite(pinLed, HIGH);
delay(500);
Serial.println("Aturem el led del pin 10");
digitalWrite(pinLed, LOW);
delay(500);
Serial.println("Engeguem el led del pin 11");
digitalWrite(pinLed2, HIGH);
delay(500);
Serial.println("Aturem el led del pin 11");
digitalWrite(pinLed2, LOW);
delay(500);
Serial.println("Engeguem el led del pin 12");
digitalWrite(pinLed3, HIGH);
delay(500);
Serial.println("Aturem el led del pin 12");
digitalWrite(pinLed3, LOW);
delay(500);
}// final del for
break;
case 02:
Serial.println("Bloc segon de Leds");
for (int i = 0; i <= 25; i++) { //Repetim 25 vegades al programa
Serial.println("Engeguem el led del pin 10");
digitalWrite(pinLed, HIGH);
delay(100);
Serial.println("Aturem el led del pin 10");
digitalWrite(pinLed, LOW);
delay(100);
Serial.println("Engeguem el led del pin 11");
digitalWrite(pinLed2, HIGH);
delay(100);
Serial.println("Aturem el led del pin 11");
digitalWrite(pinLed2, LOW);
delay(100);
Serial.println("Engeguem el led del pin 12");
digitalWrite(pinLed3, HIGH);
delay(100);
Serial.println("Aturem el led del pin 12");
digitalWrite(pinLed3, LOW);
delay(100);
}// final del for
break;
case 03:
Serial.println("Bloc tercer de Leds");
for (int i = 0; i <= 25; i++) { //Repetim 25 vegades al programa
Serial.println("Engeguem el led del pin 10");
digitalWrite(pinLed, HIGH);
delay(50);
Serial.println("Aturem el led del pin 10");
digitalWrite(pinLed, LOW);
delay(50);
Serial.println("Engeguem el led del pin 11");
digitalWrite(pinLed2, HIGH);
delay(50);
Serial.println("Aturem el led del pin 11");
digitalWrite(pinLed2, LOW);
delay(50);
Serial.println("Engeguem el led del pin 12");
digitalWrite(pinLed3, HIGH);
delay(50);
Serial.println("Aturem el led del pin 12");
digitalWrite(pinLed3, LOW);
delay(50);
}// final del for
break;
default:
Serial.println(F("Estat dels LEDs quan no enviem res per Bluetooth "));
digitalWrite(pinLed, LOW); // Aturem el Led
digitalWrite(pinLed2, LOW); // Aturem el Led
digitalWrite(pinLed3, LOW); // Aturem el Led
break;
}
}
}
// when the central disconnects, print it out:
Serial.print(F("Disconnected from central: "));
Serial.println(central.address());
// Estat dels LEDs quan desconnectem la Central Bluetooth del mòbil del dispositiu muntat amb «Nanoarduino 33 IoT»
digitalWrite(pinLed, LOW); // Aturem el Led
digitalWrite(pinLed2, LOW); // Aturem el Led
digitalWrite(pinLed3, LOW); // Aturem el Led
}
}
|