MODULE BLUETOOTH (3 / 3 étapes)

Étape 3: CODE:-

Paramètres de la série : COM11 9600 8 N 1

\r ou \n à la fin de ligne de commande / / Bluetooth est sur la broche 0 & 1 @ vitesse 9600 / / structure de commandement / / CMD RED| GREEN| JAUNE = COMPILATION ON| OFF / / CMD TMAX| SECONDES = valeur / / CMD secondes = valeur / / statut de CMD / / structure de message d’État / / statut RED| GREEN| YELLOW| TMIN| TMAX| SECONDS| TEMP| Haut de cuisse = valeur d’initialisation des variables nécessaires à température contrôle flotteur maxTemp = 30,0 ; Allumez la tête temp > maxTemp int maxTempSensor = (int) ((maxTemp/100 +.5) * 204.8) ; flotteur de température = 0.0 ; maxTemp a plus tard peut être changé, mais le programme a besoin de commencer avec une valeur par défaut. maxTempSensor est la conversion de maxTemp pour les 0-1023 plage fournie par le convertisseur ADC Arduino ; Comparaison de température est effectuée par une routine d’interruption que nous voulons aussi vite que possible : il est plus efficace de directement comparer l’entier sortie Pin valeur plutôt que de la température de flotteur. Nous voulons toujours de rendre compte de la température et le programme il va stocker dans la variable portant le même nom. Si vous n’êtes pas familier avec la formule de conversion de température, vous pouvez jeter un oeil ici. maxSeconds peut également être modifié avec une commande, mais encore une fois nous avons besoin d’un défaut int maxSeconds = 10 ; Envoyer message d’état tous maxSeconds déclarations de Pin constantes const int ledPin = 13 ; température dirigée const int tempPin = A0 ; T36 température capteur analogique entrée pin const int led1Pin = 3 ; Jaune const int led2Pin = 4 ; Vert const int led3Pin = 5 ; Rouge Variables utilisées dans la routine d’interruption et accessible depuis l’extérieur volatile int tempVal ; secondes de volatile int = 0 ; volatil tempHigh booléen = false ; volatil statusReport booléen = false ; Volatile est un mot clé spécial qui empêche le compilateur d’effectuer certaines opérations d’optimisation : toutes les variables sont modifiés dans une routine d’interruption et sont également accessibles en dehors de celui-ci doivent être déclarés comme volatile à signaler que leur valeur peut changer à tout moment et pour s’assurer plus tard, correct, valeur est lue de la mémoire si nécessaire. Variables de chaîne de commande (il seront expliquées plus tard) String inputString = "" ; Chaîne de commande = "" ; Valeur de chaîne = "" ; stringComplete booléen = false ; La fonction de setup() void setup() {connexion série //start Serial.begin(9600) ; Serial.Print ("Max T:") ; Serial.Print(maxTemp) ; Serial.Print ("capteur:") ; Serial.println(maxTempSensor) ; inputString.reserve(50) ; Command.Reserve(50) ; value.Reserve(50) ;

pinMode (ledPin, sortie) ; digitalWrite (ledPin, basse) ;

pinMode (led1Pin, sortie) ; pinMode (led2Pin, sortie) ; pinMode (led3Pin, sortie) ; digitalWrite (led1Pin, basse) ; digitalWrite (led2Pin, basse) ; digitalWrite (led3Pin, basse) ; La méthode de la réserve d’une chaîne alloue le nombre d’octets fourni comme argument. Le code suivant est nécessaire pour initialiser l’interruption timer et réglez-le au feu toutes les secondes, le plus lent que Arduino peut faire ; pour des informations détaillées, voir ici. CLI() ; désactiver les interruptions globales

initialiser le Timer1 pour interruption @ 1000 msec TCCR1A = 0 ; la valeur entière TCCR1A Registre 0 TCCR1B = 0 ; même chose pour TCCR1B

Registre de correspondance de comparer la valeur comte de minuterie désiré : OCR1A = 15624 ; activer le mode de la CCT : TCCR1B | = (1 << WGM12) ; Définissez les bits de CS10 et CS12 pour 1024 Prédiviseur : TCCR1B | = (1 << CS10) ; TCCR1B | = (1 << CS12) ; activer minuteur comparer interrupt : TIMSK1 | = (1 << OCIE1A) ;

SEI() ; activer les interruptions globales} la routine d’interruption du timer : nous ne pouvons pas changer son nom, mais le contenu est entièrement personnalisable. ISR(TIMER1_COMPA_vect) {tempVal = analogRead(tempPin) ;

Si (tempVal > maxTempSensor) {digitalWrite (ledPin, HIGH); tempHigh = true;} else {digitalWrite (ledPin, LOW); tempHigh = false;} La valeur de la température - ou, comme nous l’avons vu ses 0-1023 représentation entière - est lue à partir du capteur et on compare avec le la valeur seuil : quand au-dessus du haut est allumée et tempHigh a la valeur true, sinon la LED est éteinte, et tempHigh est définie sur false. Si (secondes ++ > = maxSeconds) {statusReport = true ; secondes = 0;}} N’oubliez pas que l’interruption est déclenchée à chaque seconde, mais nous voulons signaler l’état du système moins fréquemment : la variable secondes est incrémentée à chaque itération jusqu'à ce qu’il atteigne les valeurs lorsque le rapport est attendu ; Cela se fera plus tard dans la boucle principale en cochant le drapeau statusReport. En règle générale, ne jamais faire quelque chose si lent de ces données par écrit à la série de dans une routine d’interruption. La fonction loop() interprète et exécute les commandes lorsque reçu, il signale ensuite l’État si le drapeau est hissé par interruption de la minuterie. Pour lire une chaîne de la mémoire tampon série, loop() s’appuie sur la fonction serialEvent() qui sera définie à la fin : cette routine est exécutée entre chaque exécution de loop(). Il n’est pas largement documentée et elle ne s’applique probablement à tous les modèles de l’Arduino ; dans tous les cas, il n’est pas difficile nicher son contenu au sein de la grande boucle (voir la fin de l’étape de thi). void loop() {int intValue = 0 ;

Si (stringComplete) {Serial.println(inputString) ; stringOK booléen = false end if (inputString.startsWith ("CMD")) {inputString = inputString.substring(4) ; Tout d’abord, nous vérifions si la chaîne reçue commence par « CMD »: Si donc nous pouvons ignorer les quatre premiers caractères, sinon nous allons plus tard déclenche une erreur.

int pos = inputString.indexOf('=') ; Si (pos > -1) {commande = inputString.substring (0, pos); valeur = inputString.substring (pos + 1, inputString.length()-1); / / commande extrait jusqu'à \n exclues il y a deux types de commandes : ceux définissant une valeur, où nous trouverons "=" séparer la paire de valeur variable + et ceux où la commande est une directive unique (statut). Si « = » est présent au pos, la chaîne est divisée en commande (partie gauche) et la valeur (partie droite), laisser tomber les deux le « = » entre les deux et le caractère de fin de ligne à la fin.

Si (command.equals("RED")) {/ / rouge = compilation ON| OFF value.equals("ON") ? digitalWrite (led3Pin, HIGH): digitalWrite (led3Pin, basse) ; stringOK = true ; } ElseIf (command.equals("GREEN")) {/ / vert = compilation ON| OFF value.equals("ON") ? digitalWrite (led2Pin, HIGH): digitalWrite (led2Pin, basse) ; stringOK = true ; } ElseIf (command.equals("YELLOW")) {/ / jaune = compilation ON| OFF value.equals("ON") ? digitalWrite (led1Pin, HIGH): digitalWrite (led1Pin, basse) ; stringOK = true ; } Nous examiner et exécuter les commandes de LED ; Notez que le code vérifie uniquement valeur ON: Si vous écrivez vert = ASD, elle sera interprétée comme vert = OFF. Il n’est pas parfait, mais il garde les choses beaucoup plus simple. stringOK = true est définie, chaque fois qu’une commande est reconnue et exécutée afin que les commandes mal seront signalés par la suite.

ElseIf (command.equals("TMAX")) {/ / TMAX = valeur intValue = value.toInt() ; if (intValue > 0) {maxTemp = (float) intValue ; maxTempSensor = (int) ((maxTemp/100 +.5) * 204.8); stringOK = true;}} ElseIf (command.equals("SECONDS")) {/ / secondes = valeur intValue = value.toInt() ; if (intValue > 0) {maxSeconds = intValue ; stringOK = true;}} Lorsque la valeur doit être un nombre, il faut convertir il et c’est vraiment un certain nombre de test. Dans le cas de MaxTemp, nous calculons aussi la valeur de la sonde comme expliqué dans la section définition de la variable

} / / pos >-1 ElseIf (inputString.startsWith("STATUS")) {Serial.print ("statut rouge =") ; Serial.println(digitalRead(led3Pin)) ; Serial.Print ("état vert =") ; Serial.println(digitalRead(led2Pin)) ; Serial.Print ("statut jaune =") ; Serial.println(digitalRead(led1Pin)) ; Serial.Print ("statut TMAX =") ; Serial.println(maxTemp) ; Serial.Print ("statut secondes =") ; Serial.println(maxSeconds) ; Serial.Print ("TEMP STATUS =") ; Serial.println(temperature) ; Serial.Print ("statut cuisse =") ; Serial.println(tempHigh) ; stringOK = true ; } / / inputString.startsWith("STATUS") si la commande est l’État, le programme sorties simplement toutes les informations pour la série.

} / / stringOK inputString.startsWith ("CMD") ? Serial.println ("commande exécutée"): Serial.println ("commande non valide") ; Signal si une commande valide ou non valide a été reçue.

effacer la chaîne pour la prochaine itération inputString = "" ; stringComplete = false ; } / / stringComplete Variable de ménage pour l’itération suivante de la commande.

Si (statusReport) {température = (tempVal * 0.0048828125 -.5) * 100 ; Serial.Print ("TEMP STATUS =") ; Serial.println(temperature) ; Serial.Print ("statut cuisse =") ; Serial.println(tempHigh) ; statusReport = false ; }} Si la routine d’interruption a hissé le drapeau de statusReport, quelques informations sont affichées dans la série et que le drapeau est désactivé. Notez que la valeur de la température actuelle est calculée à ce stade : par conséquent, si vous émettez une commande de statut entre l’intervalle de statusReport, vous obtiendrez l’ancienne valeur de la température. Comme déjà indiqué, serialEvent() se produit chaque fois qu’un nouveau données vient dans le RX série de matériel. Cette routine est exécutée entre chaque séries de loop() de temps, donc à l’aide de retard à l’intérieur de la boucle peut retarder la réponse. Multiples d’octets de données soient disponibles. void serialEvent() {tandis que (Serial.available()) {/ / obtenir le new ubyte : char inChar = (char)Serial.read(); / / ajouter à l’inputString : inputString += inChar; / / si le caractère entrant est un saut de ligne ou un retour chariot, définir un indicateur / / donc la boucle principale peut faire quelque chose : si (inChar == « \n » || inChar == « \r ») {stringComplete = true;}}}

Articles Liés

Comment contrôler la carte arduino à l’aide d’un téléphone android et un module bluetooth

Comment contrôler la carte arduino à l’aide d’un téléphone android et un module bluetooth

dans ce tutoriel, vous apprendrez comment utiliser un module bluetooth et inventeur app du MIT pour créer une liaison série sans fil entre un téléphone android et une carte arduino.Voici une courte vidéo montrant un exemple d'application que j'ai cré
Pirater et mettre à niveau votre système stéréo avec un module bluetooth

Pirater et mettre à niveau votre système stéréo avec un module bluetooth

J'ai cet amplificateur stéréo qui a un grand bruit, mais sans connectivité sans fil.Avec un peu d'argent et un peu de patience, il est possible de faire un système stéréo bluetooth grand !Etape 1: Acheter certains composants Vous aurez besoin :Un xs3
Compteur de température DHT11 Arduino/Android - module Bluetooth HC-06 - & ANDROID APP

Compteur de température DHT11 Arduino/Android - module Bluetooth HC-06 - & ANDROID APP

Bonjour tout le monde! Aujourd'hui, j'ai fait un soft pour lire tout texte ou la valeur de la série monitor pour votre téléphone android, vous pouvez utiliser n'importe quel capteur qui affiche le texte ou valeurs.VOUS POUVEZ AJOUTER N'IMPORTE QUEL C
Modifier les paramètres par défaut du Module Bluetooth HC-05 à l’aide de commandes AT

Modifier les paramètres par défaut du Module Bluetooth HC-05 à l’aide de commandes AT

mises à jour4 septembre 2013 : En vedette sur Hackaday.com http://goo.gl/qxvWkd1er septembre 2013 : En vedette sur DangerousPrototypes.com http://goo.gl/K4kH9gINTRODUCTIONDans ce guide, je vais expliquer comment utiliser Arduino pour modifier les par
Androino ! Contrôler un Arduino à partir votre appareil Android à l’aide d’un module bluetooth à bas prix.

Androino ! Contrôler un Arduino à partir votre appareil Android à l’aide d’un module bluetooth à bas prix.

Cette instructable vous montre comment lire des valeurs de capteur d'un Arduino avec votre appareil Android à l'aide d'un périphérique série bluetooth à bas prix, vous pouvez commander pour moins de 10 $ sur dealextreme ou ebay.Cet exemple utilise Py
Construction d’une application Android pour communiquer avec le Module Bluetooth HC-06

Construction d’une application Android pour communiquer avec le Module Bluetooth HC-06

Dans ce Instructable nous examinerons comment créer une simple application Android qui peuvent se connecter et parler à un Arduino via une connexion Bluetooth sans fil. Nous allons utiliser le module Bluetooth HC-06 populaire et à faible coût pour cr
Arduino - contrôle de la maison avec Bluetooth et voix en utilisant le module Bluetooth HC-06.

Arduino - contrôle de la maison avec Bluetooth et voix en utilisant le module Bluetooth HC-06.

Salut tout le monde! Aujourd'hui, j'ai fait un dispositif de contrôle domestique avec 2 relais et un module Bluetoothpour l'utiliser comme un système de commande vocale. Vous pouvez utiliser ce soft pour lutter contre elle -> (Cliquez ici pour l'APP)
Construction d’une application Android pour communiquer avec le Module Bluetooth RN-42

Construction d’une application Android pour communiquer avec le Module Bluetooth RN-42

Dans ce Instructable nous examinerons comment créer une simple application Android qui peuvent se connecter et parler à un Arduino via une connexion Bluetooth sans fil. Nous allons utiliser le module Bluetooth RN-42 populaire pour créer le signal Blu
Comment installer et utiliser le module Bluetooth JY-MCU pour Arduino

Comment installer et utiliser le module Bluetooth JY-MCU pour Arduino

Bonjour, dans ce instructable je vais enseigner vous comment installer et utiliser le module Bluetooth JY-MCU pour Arduino. Ce petit module vous permettra de contrôler votre arduino sans fil à partir de votre ordinateur ou votre téléphone. Permet de
Vérifier la salubrité du module Bluetooth HC-05 sans programmation ni arduino

Vérifier la salubrité du module Bluetooth HC-05 sans programmation ni arduino

cette instructable doit donner idée sur la façon de vérifier rapidement votre module Bluetooth avant de commencer n'importe quel projet vous serez très sûr de salubrité du module.Cette méthode vérifie complètement votre module comprennent la salubrit
Mise à jour de Arduino relais module bluetooth

Mise à jour de Arduino relais module bluetooth

Étape 1: Comment Liste des pièces :-module relais 1 canalAttiny45/85-Module bluetooth HC-05/06-une réglette à broches-Connecteur de pcb mini USBInfos :Le programme attiny est un peu mis à jour l'arduino SoftwareSerial app.Son utilisation parseInt, do
Ppt de contrôle à l’aide de module bluetooth.

Ppt de contrôle à l’aide de module bluetooth.

Je veux faire le contrôleur ppt sans contrôleur de port usb.J'ai vu quelqu'un faire le contrôleur ppt en utilisant le capteur flex.Le capteur flex très cher. J'ai donc décidé d'utiliser bluetooth pour faire contrôleur ppt.Étape 1: pièces-WIZwiki-W750
$3 Bluetooth Module HID (HC05 avec Firmware RN42)

$3 Bluetooth Module HID (HC05 avec Firmware RN42)

Modules Bluetooth HID (périphérique d'interface humaine) vous permet de créer les périphériques bluetooth qui peuvent appairer avec les appareils mobiles out-of-the-box (comme les claviers bluetooth, manettes de jeu, souris, etc.).Si nous cherchons à
AU mode de commande du module HC-05 et 06-HC Bluetooth

AU mode de commande du module HC-05 et 06-HC Bluetooth

Mis à jour le 18 juillet : vous pouvez maintenant entrer en mode de HC-05, à l'aide d'une carte Arduino, (arduino uno utilisé dans ce tutoriel)Mis à jour le 7 juillet : J'ai eu l'occasion de tester un module HC06. Ce guide couvre désormais le module