一Arduino的应用市场
二如何开始使用你的Arduino kit
三Arduino的入门与精深

一Arduino的应用市场
便宜——和其他平台相比。arduino板是相当便宜。最便宜的arduino课可以自己动手制作,即使组装好的成品,也不会超过200元。
跨平台——arduino软件在window,Macintosh OSX和Linux平台上均可以操作,大部分其他的单片机只能运行在window操作系统下。
简易的操作环境——初学者很容易就能学会arduino的编程环境,同时它还能为高级用户提供高级运用。对于老师们来讲,一般都很容易运用processing编程环境,如果学生使用processing编程环境的话,也很容易熟悉。
软件开源并可拓展——arduino软件是开源的,对于有经验的程序员是可以拓展的。arduino编程语言可以通过c++库进行拓展。如果有人想要去了解技术上的细节,可以通过arduino语言直接使用AVR c语言(因为arduino语言是机基于AVR c语言的)。类似,如果你有需要的话,也可以再arduino中写入AVR c语言。
硬件开源并可拓展——arduino板是基于ateml 的atmelga8和atmelga128/328的单片机。arduino是基于creative Commons许可协议。所以有经验的设计师根据需求设计自己的模块,可以对其进行拓展和改造。甚至对于一些相对没有经验的用户,也可以通过制作实验板来理解arduino是如何工作的,省钱又省事。
arduino的起源
Massimo Banzi之前是意大利Ivrea一家高科技设计学校的老师。他的学生们经常抱怨找不到便宜好用的微控制器。 2005年冬天, Massimo Banzi跟David Cuartielles讨论了这个问题。 David Cuartielles是一个西班牙籍晶片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了Banzi的学生David Mellis为电路板设计编程语言。两天以后,David Mellis就写出了程式码。又过了三天,电路板就完工了。这块电路板被命名为Arduino。

各种arduino型号
Arduino Uno
  
Arduino Nano Arduino GSM Shield Front Arduino Ethernet Shield
二如何开始使用你的Arduino kit
arduino的配置:
arduino是基于AVR平台,对AVR库进行二次封装编译,把端口都打包好了。神马寄存器呀,地址指针呀,都不用写。大大降低软件开发难度,适合非专业爱好者使用。优点和缺点并存,因为是二次开发,所以代码执行不如AVR代码精练,代码执行效率和代码体积都弱于AVR直接编译。
基本性能配置:
ditital i/o 数字输入/输出端口0-13.
anglog i/o 模拟输入/输出端口0-5.
支持ICP下载,支持tx/rx.
输入电压:支持3.3v/5v输出。
处理器:支持atmel atmegal168/328处理器,因为支持者众多,已有公司开发出32位的mcu支持arduino。
arduino的开发环境介绍
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。
Arduino是一个基于开放原始码的软硬件平台,构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语y言Processing/Wiring开发环境。
可以快速使用Arduino与Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider等软件结合,作出互动作品。 Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。 Arduino也可以独立运行,并与软件进行交互,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互动软件…。 Arduino的IDE界面基于开放源代码,可以免费下载使用,开发出更多令人惊艳的互动作品。
三Arduino的入门与精深
开始运行你的你的Arduino kit
一个简单的程序让读取模拟端口ao的值并用串口发送
void setup() {
Serial.begin(9600);//串口波特率9.6kb//d0-tx//d1-rx
}
void loop()
{
int sensorValue = analogRead(A0);//读取a0值(0-1023)
Serial.println(sensorValue);//串口发送数据
delay(1); //延时
}
注:arduino由初始化函数setup()
与循环函数loop组成。

串口控制输出
void setup() {
Serial.begin(9600);
for (int thisPin = 2; thisPin < 7; thisPin++)
{
pinMode(thisPin, OUTPUT);//将d2-d7设置为输出模式
}
}
void loop()
{
if (Serial.available() > 0) { //如果串口收到信息
int inByte = Serial.read();
switch (inByte) {
case 'a': //接受a,将d2置高
digitalWrite(2, HIGH);
break;
case 'b':
digitalWrite(3, HIGH); //接受b,将d3置高
break;
case 'c':
digitalWrite(4, HIGH); //接受c,将d4置高
break;
case 'd':
digitalWrite(5, HIGH); //接受d,将d5置高
break;
case 'e':
digitalWrite(6, HIGH); //接受e,将d6置高
break;
default:
// turn all the LEDs off:
for (int thisPin = 2; thisPin < 7; thisPin++)
{
digitalWrite(thisPin, LOW);
//其他情况就将d2-d7均置低
}
}
}
}

局域网控制LED灯
核心代码:void loop () {
word pos =ether.packetLoop(ether.packetReceive());
if(pos)
{
if(strstr((char *)Ethernet::buffer + pos, "GET /led_off.png") != 0)
send_png_image(led_off, sizeof(led_off));
else if(strstr((char *)Ethernet::buffer + pos, "GET /led_on.png") != 0)
send_png_image(led_on, sizeof(led_on));
else
{
if(strstr((char *)Ethernet::buffer + pos, "GET /?LED1") != 0)
{ led1Status = !led1Status;
digitalWrite(LED1PIN, led1Status);
}
if(strstr((char *)Ethernet::buffer + pos, "GET /?LED2") != 0) { 网页中LED图标
led2Status = !led2Status;
digitalWrite(LED2PIN, led2Status);
}
BufferFiller bfill = ether.tcpOffset();
bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
"Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
"<html><head><title>WebLeds</title></head><body>"
"Toggle leds: "));
if(led1Status) bfill.emit_p(PSTR("<a href=\"/?LED1\"><img src=\"led_on.png\"></a>"));
else bfill.emit_p(PSTR("<a href=\"/?LED1\"><img src=\"led_off.png\"></a>"));
if(led2Status) bfill.emit_p(PSTR("<a href=\"/?LED2\"><img src=\"led_on.png\"></a>"));
else bfill.emit_p(PSTR("<a href=\"/?LED2\"><img src=\"led_off.png\"></a>"));
bfill.emit_p(PSTR("</body></html>"));
ether.httpServerReply(bfill.position());
}
}
}

让你的arduino连入物联网





小节:
通过一周对arduino的学习,我们意识到虽然arduino的开源软硬件都很多,在消费类电子市场占有很大比例,但 对于资深工程师来说,arduino只是AVR的入门硬件,在精密电子仪器,中高端设备中有明显的不足。对学习嵌入式,物联网方面有一定的辅助作用。
|