博客 页面 33

关于是否选用intel Edison做开发

1.如果我的产品直接使用edison模块,从intel拿货的价格是多少钱?
我可以使用100块不到的arm核心板做开发同样的功能,但如果使用edison则要500块,这对产品量产是非常高成本,
通常我们做产品开发都非常关注成本,成本高没有问题,但目前开发者几乎都不了解edison的拿货成本,或者说不了解quark的价格。

2.是否稳定出货?
虽然intel现在在推广edison,但目前还很小众,更无法确定intel未来对edison的支持力度;
甚至我听说edison开发团队已经离开了intel,这都让我对这个模块是否能稳定出货抱有怀疑;
如果这个产品不能在未来3年内稳定出货,用于产品开发是非常危险的,特别是小众产品开发;

关于Arduino及其周边配件的购买建议

声明:强烈建议大家不要看以下内容,大概有1%的内容是软文,如造成金钱损失请自行承担。

一直有人让写,但由于我曾经在OpenJumper任职这个原因,写出来的可能很多人都认为是软文,因此一直不愿写,但确实很多买了《Arduino程序设计基础》的朋友问我,如何购买套件,初学Arduino都要买些什么…
诸如此类的问题,一个个回复把我累的半死,因此写成本帖,统一回复,但还是要提醒大家,本帖是软文,虽然我已经尽力不让它成为软文,但肯定还是有人会认为它是软文,那索性它就是软文吧。

《Arduino程序设计基础(第二版)》教师免费申请

《Arduino程序设计基础(第二版)》已经开放教师免费申请了!

申请地址:http://www.openjumper.com/arduino-book/free/

审核通过后,就可以给你寄送书咯~

 

恋爱伦理趋势预测

按目前社会舆论的发展趋势来看,伦理发展可能是这个趋势:

超越身份界限(已达成)> 超越性别界限(正在达成)> 超越血缘界限 > 超越物种界限 > 和非生物谈恋爱 >……

u8glib搬运至墙内啦

通过以下连接,就可以访问啦:

http://clz.me/u8glib/

在github上同步fork与上级项目

https://help.github.com/articles/syncing-a-fork/

http://www.tuicool.com/articles/Mnmmqyi

github更新自己Fork的代码

人体毛发长短机制

人有很多体毛:头发、胡子、眉毛、鼻毛、腋毛、胸毛、阴毛…长短各异

头发会无限长长(可能有限,只是没人测试过),而眉毛等却有固定长度,且如果你把一根眉毛剪掉一半,它还会长到原来的长度。

问题来了,

身体是怎么知道眉毛长到了固定的长度呢?这其中有什么长度反馈机制么?如果没有反馈长度,为嘛眉毛不会继续长长?

《Intel Galileo开发入门》编纂计划

书名:

《Intel Galileo开发入门》(暂定)

参与人员:

陈吕洲(Arduino中文社区)、李君(西南交通大学)、陈翔(Intel)、陶智(Arduino中文社区)

基本分工:

Galileo介绍:陈翔

Arduino部分:陈吕洲、陶智

Linux部分:李君、陈翔

各部分工作概要:

Arduino部分:

验证在Galileo Gen2上可用的Arduino库,并编写相应教程;

基本结构参照《Arduino程序设计基础》;

添加Ethernet和WIFI相关操作

附带2个基于arduino的iot示例

Linux部分:

待李老师拟定

附带2个基于linux的iot示例

 

其他事宜:

出版社暂定 北京航天航空大学出版社(因为给的版税比较高)

封面设计 自己找人or采用Intel 蓝底+晶元封面(需要陈翔沟通授权)

 

目录:

第一章:认识“伽利略”开发板
1.1 伽利略开发板是什么样的?
1.2 伽利略的“奔腾芯”
1.3 我能用伽利略做什么?
1.4 跟我一起来给伽利略“接生”

关于long long类型

在程序中发现一个const uint64_t pipe = oxE8E8F0F0E1LL;

猜测后面这个LL是longlong的意思,但发现大多数long long都是用

LL(oxE8E8F0F0E1)这种方式定义的,于是请教了几个群,最后看到,确实是需要添加LL后缀的。

关于long long的说明:

http://en.cppreference.com/w/cpp/language/integer_literal
https://gcc.gnu.org/onlinedocs/gcc/Long-Long.html
也有人遇到了相似的问题:
http://stackoverflow.com/questions/1458923/long-long-in-c-c
http://blog.csdn.net/johnphan/article/details/3857937

《Arduino程序设计基础》第二版 arduino-web-server程序修改

添加AJAX 获取数据并发送指令

<!--例程网页控制Arduino -->
<!--奈何col  2014.12.24 v3.0 -->

<html>
<head>
<meta charset="UTF-8">
<title>OpenJumper!Arduino Web Server</title>
<script type="text/javascript">
function send2arduino(){
	var xmlhttp;
	if (window.XMLHttpRequest)
	{// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	element=document.getElementById("light");
	if (element.innerHTML.match("Turn on"))
	  { 
	  	element.innerHTML="Turn off"; 
	  	xmlhttp.open("GET","on",true);
	  }
	else
	  { 
	  	element.innerHTML="Turn on";
	  	xmlhttp.open("GET","off",true); 
	  }
	xmlhttp.send();	
}
function getBrightness(){
	var xmlhttp;
	if (window.XMLHttpRequest)
	{// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange=function()
    {
    	if (xmlhttp.readyState==4 && xmlhttp.status==200)
    	{
    		document.getElementById("brightness").innerHTML=xmlhttp.responseText;
    	}
    }
	xmlhttp.open("GET","getBrightness",true); 
	xmlhttp.send();	
}
window.setInterval(getBrightness,5000); 
</script>
</head>
<body>
<div align="center">
<h1>Arduino Web Server</h1>
<div>brightness:</div>
<div id="brightness">??</div>

<button id="light" type="button" onclick="send2arduino()">Turn on</button>
<button type="button" onclick="alert('OpenJumper Web Server')">About</button>
</div>
</body>
</html>

Arduino直接输出版本:

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
EthernetServer server(80);
EthernetClient client;
String readString=""; 
int Light=6;

void setup() {
// 初始化串口通信
	Serial.begin(9600);
	// 初始化Ethernet通信
  Ethernet.begin(mac, ip);
  server.begin();
  pinMode(Light,OUTPUT);
  Serial.print("Server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  // 监听连入的客户端
  client = server.available();
  if (client) {
    Serial.println("new client");
    boolean currentLineIsBlank = false;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        readString += c;
        if (c == '\n') {
          Serial.println("1111111111:");
          Serial.println(readString);
          //检查收到的信息中是否有”on”,有则开灯
            Serial.println("check On");
            Serial.println(readString.indexOf("?on"));
	    if(readString.indexOf("?on") >0) {
	      digitalWrite(Light, HIGH);
	      Serial.println("Led On");
break;
	    }
	    //检查收到的信息中是否有”off”,有则关灯
            Serial.println("check Off");
            Serial.println(readString.indexOf("?off"));
            if(readString.indexOf("?off") >0) {
	      digitalWrite(Light, LOW);
	      Serial.println("Led Off");
break;
	    }

	    //检查收到的信息中是否有”getBrightness”,有则读取光敏模拟值,并返回给浏览器
            Serial.println("check Get");
                        Serial.println(readString.indexOf("?getBrightness"));
            if(readString.indexOf("?getBrightness") >0) {
              Serial.println("33333333333");
	      client.println(analogRead(A0));
break;
	    }
	    //发送HTML文本
	    SendHTML();
            break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
        
      }
    }
    Serial.println("2222222222:");
    Serial.println(readString);
	delay(1);
	client.stop();
	Serial.println("client disonnected");
        readString=""; 
  }
}

// 用于输出HTML文本的函数
void SendHTML()
{
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("Connection: close");
  client.println();
  client.println("<!DOCTYPE HTML>");
  client.println("<html><head><meta charset=\"UTF-8\"><title>OpenJumper!Arduino Web Server</title><script type=\"text/javascript\">");
  client.println("function send2arduino(){var xmlhttp;if (window.XMLHttpRequest)xmlhttp=new XMLHttpRequest();else xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");element=document.getElementById(\"light\");if (element.innerHTML.match(\"Turn on\")){element.innerHTML=\"Turn off\"; xmlhttp.open(\"GET\",\"/?on\",true);}else{ element.innerHTML=\"Turn on\";xmlhttp.open(\"GET\",\"/?off\",true); }xmlhttp.send();}");
  client.println("function getBrightness(){var xmlhttp;if (window.XMLHttpRequest)xmlhttp=new XMLHttpRequest();else xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState==4 && xmlhttp.status==200)document.getElementById(\"brightness\").innerHTML=xmlhttp.responseText;};xmlhttp.open(\"GET\",\"/?getBrightness\",true); xmlhttp.send();}window.setInterval(getBrightness,1000);</script>");
  client.println("</head><body><div align=\"center\"><h1>Arduino Web Server</h1><div>brightness:</div><div id=\"brightness\">??</div><button id=\"light\" type=\"button\" onclick=\"send2arduino()\">Turn on</button><button type=\"button\" onclick=\"alert('OpenJumper Web Server')\">About</button></div></body></html>");  
}

在SD卡中读取并输出: