Intel+Ardruino 101
为了传说中的那啥, 啊, 嗯..
#include <CurieBLE.h>
const int ledPin = 13; // set ledPin to on-board LED LED的pin脚就是14
const int buttonPin = 4; // set buttonPin to digital pin 4 按键pin脚是4
BLEPeripheral blePeripheral; // create peripheral instance 这里就好像一个起一个对象一样, 连new都不用, 就特么起了一个外设, 牛逼, java党表示不服...
BLEService ledService("19B10010-E8F2-537E-4F6C-D104768A1214"); // create service with a 128-bit UUID (32 characters exclusive of dashes). 生成一个128位的UUID, 目的是生成一个service. 具体的方法, 参考ble的协议要求文档,core什么的...
// Long UUID denote custom user created UUID
// create switch characteristic and allow remote device to read and write
//下面就是创建一个对象的方法类似, 创建一个led的特征字, 可读可写
BLECharCharacteristic ledCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
// create button characteristic and allow remote device to get notifications
//下面创建一个按钮用的特征字, 可读可通知.
BLECharCharacteristic buttonCharacteristic("19B10012-E8F2-537E-4F6C-D104768A1214", BLERead | BLENotify); // allows remote device to get notifications
// Note use of Typed Characteristics. These previous 2 characeristics are of the type char
//setup是特么阿追诺的特色(shai)
void setup() {
//设置串口9600
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // use the LED on pin 13 as an output 设置对应的pin脚为输出
pinMode(buttonPin, INPUT); // use button pin 4 as an input button的pin脚是输入.
// set the local name peripheral advertises 设置本地广播名, 问题是似乎设置了, 没用...
blePeripheral.setLocalName("SmartJar");
// set the UUID for the service this peripheral advertises:
//设置外设的广播用UUID
blePeripheral.setAdvertisedServiceUuid(ledService.uuid());
// add service and characteristics
//添加服务与特征字.
blePeripheral.addAttribute(ledService);
blePeripheral.addAttribute(ledCharacteristic);
blePeripheral.addAttribute(buttonCharacteristic);
// set initial values for led and button characteristic
//设置初始值
ledCharacteristic.setValue(0);
buttonCharacteristic.setValue(0);
// advertise the service
//广播
blePeripheral.begin();
//串口打印.
Serial.println("Bluetooth device active, waiting for connections...");
}
//这里就是一个大while (1)
void loop() {
// poll peripheral
//外设轮询
blePeripheral.poll();
// read the current button pin state
//读取目前的按键pin状态
char buttonValue = digitalRead(buttonPin);
// has the value changed since the last read
//看来要适应这种对象的写法. 判断button的值有没有改变.
boolean buttonChanged = (buttonCharacteristic.value() != buttonValue);
if (buttonChanged) {
//如果按键改变值, 就更新特征字, 两个特征字同时改.
// button state changed, update characteristics
ledCharacteristic.setValue(buttonValue);
buttonCharacteristic.setValue(buttonValue);
}
if (ledCharacteristic.written() || buttonChanged) {
//写入任何, 或者按键改变, 都会在串口打印当前的LED灯的状态, 并实际性的改变LED的状态.
// update LED, either central has written to characteristic or button state has changed
// if you are using a phone or a BLE central device that is aware of this characteristic, writing a value of 0x40 for example
// Will be interpreted as written
if (ledCharacteristic.value()) {
Serial.println("LED on");
digitalWrite(ledPin, HIGH);
} else {
// If central writes a 0 value then it is interpreted as no value and turns off the LED
Serial.println("LED off");
digitalWrite(ledPin, LOW);
}
}
}
Intel+Ardruino 101的更多相关文章
- Intel+Ardruino 101 翻转时点灯
/* =============================================== Example sketch for CurieIMU library for Intel(R ...
- 了解 ARDUINO 101* 平台
原文链接 简介 作为一名物联网 (IoT) 开发人员,您需要根据项目的不同需求,选择最适合的平台来构建应用. 了解不同平台的功能至关重要. 本文第一部分比较了 Arduino 101 平台和 Ardu ...
- 学习 Linux,101: Linux 命令行
概述 本教程将简要介绍 bash shell 的一些主要特性,涵盖以下主题: 使用命令行与 shell 和命令交互 使用有效的命令和命令序列 定义.修改.引用和导出环境变量 访问命令历史和编辑工具 调 ...
- Arduino101学习笔记(三)—— 101简介
一.板子图示--摘自中文社区 二.技术规格 主控器 Intel Curie 工作电压 3.3V (I/O兼容5V) 输入电压 (推荐) 7-12V 输入电压 (极限) 6-20V 数字 I/O 14 ...
- Intel X710网卡VxLAN offload 性能测试
Intel X710网卡VxLAN offload性能测试 1. 测试环境参数: 交换机:盛科E580 服务器: Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz ...
- Intel 移位指令的陷阱(转)
今天发现了一个Intel逻辑左移指令shl的一个bug. 逻辑左移的概念是对给定的目的操作数左移COUNT次,每次移位时最高位移入标志位CF中,最低位补零. 其中OPRD1为目的操作数, 可以是通 ...
- Intel汇编指令格式解析
环境: win7_x64旗舰版.VS2015企业版 一.Intel保护模式.实地址模式和虚拟8086模式指令格式(x86) 图在Intel手册2.1章节 1.1)Instruction Prefixe ...
- Intel daal数据预处理
https://software.intel.com/en-us/daal-programming-guide-datasource-featureextraction-py # file: data ...
- intel:spectre&Meltdown侧信道攻击(四)—— cache mapping
前面简单介绍了row hammer攻击的原理和方法,为了更好理解这种底层硬件类攻击,今天介绍一下cpu的cache mapping: 众所周知,cpu从内存读数据,最开始用的是虚拟地址,需要通过分页机 ...
随机推荐
- Definition Questions
What is the relationship and differences between processes and threads? A process usually represent ...
- Theano学习笔记:Theano的艰辛安装体验
http://www.cnblogs.com/hanahimi/p/4127026.html
- Android TimePickerDialog样式配置与TimePicker模式选择
习惯性的,把要说的内容先总结一下: TimePicker有两种模式:spinner 和clock,可通过如下方式配置: <TimePicker android:timePickerMode = ...
- JBoss远程方法调用漏洞利用详解
早上起床打开微博看到空虚浪子心大神发的一篇有关Jboss漏洞的文章,对我等菜鸟来说那边文章看起来还是很吃力的,所以查了查国内外的资料,翻译写了这边文章,记录一下. 在JBoss服务器上部署web应用程 ...
- 互联网4.0时代需要商业智能BI
当今大数据互联网时代飞速发展,德国提出了工业化4.0, 美国提出了产业互联网,而中国提出了两化深度融合战略.越来越多的企业家开始安耐不住了,开始担心自己的企业是否跟的上时代的变化,是否使用了商业智能B ...
- 5、JavaScript进阶篇②——函数、事件、内置对象
一.函数 1. 什么是函数 函数的作用,可以写一次代码,然后反复地重用这个代码. 如:我们要完成多组数和的功能. var sum; sum = 3+2; alert(sum); sum=7+8 ; a ...
- Java String.split()
在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用“.”作为分隔的话,必须是如下写法,String.split( ...
- dlopen、dlsym和dlclose的使用
在dlopen()函数以指定模式打开指定的动态链接库文件,并返回一个句柄给dlsym()的调用进程.使用dlclose()来卸载打开的库. dlopen: dlopen() The function ...
- PostgreSQL Replication之第十二章 与Postgres-XC一起工作(5)
12.5 创建表和发送查询 介绍了Postgres-XC以及其底层的思想之后,是时候创建我们的第一个表,看看集群将如何表现.下面的例子演示了一个简单的表.将使用id列的哈希键来分布它: test=# ...
- PostgreSQL Replication之第十一章 使用Skytools(4)
11.4 使用 londiste 复制数据 pgq是一个叫做londiste的复制工具的核心.londiste 的核心是有一个比如比Slony 更加简单,容易使用的机制.如果您在一个大的安装中使用Sl ...