2014年1月7日

在我们完成了前面的几部分之后,我们也需要把这最后一部分解决,这里更多的是硬件,Arduino的存在可以让硬件更简单。

Arduino

Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE)。它适用于艺术家、设计师、爱好者和对于“互动”有兴趣的朋友们。

    void setup() {
      Serial.begin(9600);
      pinMode(13,OUTPUT);
    }
    
    int serialData;
    void loop() {
      String inString = "";
      while (Serial.available()> 0)
      {
        int inChar = Serial.read();
        if (isDigit(inChar)) {
          inString += (char)inChar; 
        }
        serialData=inString.toInt();
        Serial.print(serialData);
      }
      if(serialData==1){
        digitalWrite(13,HIGH);
      }else{
        digitalWrite(13,LOW);
      }
    }



那么让我们先来看看我们写的代码。 (转载保留  Phodal's Blog   Phodal's  zenthink

这个代码看上去似乎会有点复杂,但是让我们看点基础的,也就是由Arduino来控制一个LED的亮和灭。

    int led = 13;
    
    void setup() {                
      pinMode(led, OUTPUT);     
    }
    
    void loop() {
      digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(1000);               // wait for a second
      digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
      delay(1000);               // wait for a second
    }


这个也就是来自于官方的示例程序,而我们要做的东西也和这个差不多,只是这个是自动的,上面那个是由串口通信来实现的。

串口通信

串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
简单地来说,我们誻就是用这个来实现通信的,用之前的RaspberryPI 发送1和0给Arduino。那么我们在Arduino上就只是接受和执行,这个由loop里面的if来执行

初始化串口

如果你真心不喜欢51上的复杂的串口,那么我想Arduino又是解放双手的东西了。

     Serial.begin(9600);

这个就是串口初始化,速率为9600。

串口读取

     while (Serial.available()<0)
      {
        int inChar = Serial.read();
        if (isDigit(inChar)) {
          inString += (char)inChar; 
        }
        serialData=inString.toInt();

用于读取的就是这么一行

 

     int inChar=Serial.read()

 

而下面的部分则是刚我们接收到的数据转换为1,由于接到的为char类型,那么我们需要转为转为Int进行判断。

为什么不直接用'1'

只是为了写给需要的同学用的,也可以直接在上面用if(serialData=='1'),上面写可以让后期扩展的时候方便一点。


 

讨论空间

QQ群:348100589

项目首页:http://iot.phodal.com

代码地址:http://github.com/gmszone/iot

 

 

posted @ 2014-01-07 16:47 我的小人生 阅读(773) 评论(0) 推荐(1) 编辑
摘要: 用电脑做的热点突然不能上了,于是捣鼓了好长时间手贱╮(╯Д╰)╭,把虚拟WiFi给禁止了。重要的是,禁止后就直接不显示了找了半天也没再网上找到解决的办法,于是,又开始了一次“冒险之旅”就把结果在这里汇总一下吧,希望可以帮助到和我一样“手贱”的朋友 1、虚拟WiFi被禁后,热点是开不了的,承载网络状态为“不可用” 2、“计算机”——〉右击——〉选“管理”——〉“设备管理器”——〉“网络适配器” 3、红色选框,右击启用就可以了 4、这时我们的承载状态显示为“未启动” 5、我们开启无线就可以了 Ps:本人电脑window8,主要是找到设备管理器,将其中的“Microsoft托管网络虚拟适配... 阅读全文
posted @ 2014-01-07 16:44 我的小人生 阅读(965) 评论(0) 推荐(1) 编辑
摘要: ReactOS是一个与 Windows 环境二进制兼容的操作系统。同时,他是一款开源、免费的操作系统。 阅读全文
posted @ 2014-01-07 16:40 我的小人生 阅读(267) 评论(0) 推荐(1) 编辑
摘要: EL表达式详解 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言. JSTL 标签 库由标签库和 EL 表达式语言两个部分组成。 EL 在 JSTL 1.0 规范中被引入,当时用来作为 Java 表达式来工作,而该表达式必须配合 JSTL 的标签库才能得到需要的结果。 说明:在 JSTL 1.1 规范中, JSP2.0 容器已经能够独立的理解任何 EL 表达式。 EL 可以独立出现在 JSP 页面的任何角落。EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构: ${ses 阅读全文
posted @ 2014-01-07 16:36 我的小人生 阅读(356) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;#include/*一亿个数里面求前一百个最大的数输出问题算法思想:1、将前一百个数建成小根堆2、后面数字依此与肯比较大小 (1)如果比根大进行下一个 (2)如果比根小,将其与根替换并调整堆重新为小根堆*/void BuildMinHeap(int A[],int len);void AdjustDown(int A[],int k,int len);int main(){ //因为A为堆所以A[0]不用 int A[101];int count=100; while(count--)//前一百个数默认为最大数 { A[count+1. 阅读全文
posted @ 2014-01-07 16:32 我的小人生 阅读(550) 评论(1) 推荐(0) 编辑
摘要: 堆排序真言头会疼,但是总有停止的那一刻,抓住那一刻去总结。否则头白疼啦。引言堆排序算法在大量数据排序中还是比较实用的,现在有好几个排序算法啦,有什么优缺点,也可以总结了。思路堆排序的算法就是两步建堆和维护。建堆一次,维护堆 n-2 次(第一次维护的时候 堆规模为 n-1,最后一次维护的时候堆规模为 2)。举个例子吧,我喜欢图,我相信你们也喜欢。一共有10个数据,如下 建堆过程中如下数据如下变化 建堆完毕。 ... 阅读全文
posted @ 2014-01-07 16:29 我的小人生 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 一、定义 GOF上对工厂方法的意图如此描述:定义一个用于创建对象的接口,让子类决定实例化哪个类。Factory Method使一个类的实例化延迟到其子类。 作为类的开发者,我们通常会在类中提供构造器方法以便客户代码实例化该类。然而有时候,客户代码并不清楚该对几个类中的哪一类进行实例化。可以用工厂模式定义一个用于创建对象的接口,同时控制对哪个类进行的实例化。 二、应用场景 工厂方法模式的特征是: (1)方法创建了一个新的对象; (2)方法的返回类型为一个抽象类或接口; (3)有若干个类实现了上述抽象类型。 三、类图 四、例子 (1)工厂方法最典型的一个例子就是在迭代器模式中的应用... 阅读全文
posted @ 2014-01-07 16:25 我的小人生 阅读(266) 评论(0) 推荐(0) 编辑
摘要: Given a collection of integers that might contain duplicates,S, return all possible subsets. Note: Elements in a subset must be in non-descending order.The solution set must not contain duplicate subsets. For example, IfS=[1,2,2], a solution is:[ [2], [1], [1,2,2], [2,2], [1,2], []]有图为证:class... 阅读全文
posted @ 2014-01-07 16:22 我的小人生 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 积分图是图像中十分常用的方法,最初是在Haar特征的快速计算中学到(参考博文:利用积分图像法快速计算Haar特征),后来发现在均值滤波,二值化等图像处理方法中也十分常见。积分图的简要介绍可以参考博文:利用积分图像法快速计算Haar特征,这里不再重复了。本篇主要是小记一下积分图的计算方法。由于积分图中每个单元存储的信息是原图中此位置左上角所有像素之和,所以对一张W*H的图像直接求取积分图,需要:(1+2+...+W-1)*H+(1+2+...+W)*(H=1) = (w-2)*H/(W-1)+2(W+1)*(H-1)/W次加法。一种简单的快速计算方法 最直接的快速计算方法是利用以计算积分求当前. 阅读全文
posted @ 2014-01-07 16:18 我的小人生 阅读(950) 评论(0) 推荐(0) 编辑
摘要: 引用注明>>【作者:张佩】【原文:www.yiiyee.cn/blog】最近我发现为Win8开发的驱动程序,有些能安装在Win7上(包括更早系统),有些则不能。那些不能安装的情况很可怕:一旦安装并加载驱动,系统就会立刻蓝屏。针对这个问题,做了一番调查研究。发现了一个简单的规律:如果开发时使用的是WDM驱动框架,则存在此问题;如果使用KMDF驱动框架,则正常。这是为什么呢?一起来看看吧。VS2012集成开发环境Visual Studio 2012(简称VS2012)中包含了Windows驱动程序编译器,使得Windows驱动也可以在Visual Studio的集成开发环境中进行开发了 阅读全文
posted @ 2014-01-07 16:15 我的小人生 阅读(953) 评论(0) 推荐(0) 编辑
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示