zoukankan      html  css  js  c++  java
  • 物联网系统设计——与单片机通讯

    在我们完成了前面的几部分之后,我们也需要把这最后一部分解决,这里更多的是硬件,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

  • 相关阅读:
    哲理故事
    ajaxToolkit发布之后出错!说未能加载文件或程序集!
    一个沉重的教训!!!
    ValidatorCallout真的是太酷了!
    GridView放在UpdatePanle里面模板列取值!
    Prototype学习笔记之-Ajax.Request
    数据分类重排!
    SQL SERVER 2005 sa登录失败!
    flex应该学到什么程度
    jquery dataTable的学习
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3509194.html
Copyright © 2011-2022 走看看