你了解什么是Arduino嗎?你知道Arduino能做些什么嗎?今天就讓我們來認(rèn)識一下Arduino!什么是Arduino?
一、什么是Arduino?
Arduino是一款便捷靈活、方便上手的開源電子原型平臺。包含硬件(各種型號的Arduino板)和軟件(Arduino IDE)。由一個(gè)歐洲開發(fā)團(tuán)隊(duì)于2005年冬季開發(fā)。其成員包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。
它構(gòu)建于開放原始碼simple I/O介面版,并且具有使用類似Java、C語言的Processing/Wiring開發(fā)環(huán)境。主要包含兩個(gè)主要的部分:硬件部分是可以用來做電路連接的Arduino電路板;另外一個(gè)則是Arduino IDE,你的計(jì)算機(jī)中的程序開發(fā)環(huán)境。你只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會(huì)告訴Arduino電路板要做些什么了。
Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達(dá)和其他的裝置來反饋、影響環(huán)境。板子上的微控制器可以通過Arduino的編程語言來編寫程序,編譯成二進(jìn)制文件,燒錄進(jìn)微控制器。對Arduino的編程是通過 Arduino編程語言 (基于 Wiring)和Arduino開發(fā)環(huán)境(基于 Processing)來實(shí)現(xiàn)的。基于Arduino的項(xiàng)目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運(yùn)行的軟件,他們之間進(jìn)行通信 (比如 Flash, Processing, MaxMSP)來實(shí)現(xiàn)。
1、Arduino的來歷
Massimo Banzi之前是意大利Ivrea一家高科技設(shè)計(jì)學(xué)校的老師。他的學(xué)生們經(jīng)常抱怨找不到便宜好用的微控制器。 2005年冬天, Massimo Banzi跟David Cuartielles討論了這個(gè)問題。 David Cuartielles是一個(gè)西班牙籍晶片工程師,當(dāng)時(shí)在這所學(xué)校做訪問學(xué)者。兩人決定設(shè)計(jì)自己的電路板,并引入了Banzi的學(xué)生David Mellis為電路板設(shè)計(jì)編程語言。兩天以后,David Mellis就寫出了程式碼。又過了三天,電路板就完工了。Massimo Banzi喜歡去一家名叫di Re Arduino的酒吧,該酒吧是以1000年前意大利國王Arduin的名字命名的。為了紀(jì)念這個(gè)地方,他將這塊電路板命名為Arduino。
隨后Banzi、Cuartielles和Mellis把設(shè)計(jì)圖放到了網(wǎng)上。版權(quán)法可以監(jiān)管開源軟件,卻很難用在硬件上,為了保持設(shè)計(jì)的開放源碼理念,他們決定采用Creative Commons(CC)的授權(quán)方式公開硬件設(shè)計(jì)圖。在這樣的授權(quán)下.任何人都可以生產(chǎn)電路板的復(fù)制品,甚至還能重新設(shè)計(jì)和銷售原設(shè)計(jì)的復(fù)制品。人們不需要支付任何費(fèi)用,甚至不用取得Arduino團(tuán)隊(duì)的許可。然而,如果重新發(fā)布了引用設(shè)計(jì),就必須聲明原始Arduino團(tuán)隊(duì)的貢獻(xiàn)。如果修改了電路板,則最新設(shè)計(jì)必須使用相同或類似的Creative Commons(CC)的授權(quán)方式,以保證新版本的Arduino電路板也會(huì)一樣是自由和開放的。唯一被保留的只有Arduino這個(gè)名字,它被注冊成了商標(biāo),在沒有官方授權(quán)的情況下不能使用它。
二、arduino能干什么
1.趣味彩燈
void setup()
{
for(int i=0;i《=7;i++) //把0-7設(shè)置為輸入
pinMode(i,INPUT);
for(int j=8;j《=13;j++) //把8-13設(shè)置為輸出
pinMode(j,OUTPUT);
}
void loop()
{
if(digitalRead(1)==HIGH)
{
if(digitalRead(1)==HIGH)
{
for (int x=9; x《=12; x++) //循環(huán)方式依次讓每個(gè)led在1秒內(nèi)點(diǎn)亮
{
digitalWrite(x,HIGH);
delay(1000);
}
}
delay(10000);
for (int x=9; x《=12; x++) //循環(huán)方式依次讓每個(gè)led熄滅
{
digitalWrite(x,LOW);
}
for (int K=1; K《=10; K++) //循環(huán)10次,亮0.5秒滅0.5秒,共10秒
{
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
}
}
2.樓道延時(shí)報(bào)警燈
void setup()
{
for(int i=0,j=9;i《=8,j《=13;i++,j++) //設(shè)置0-8為輸入,9-13為輸出
{pinMode(i,INPUT);pinMode(j,OUTPUT);}
}
void loop()
{
if(digitalRead(1)==HIGH||digitalRead(2)==HIGH) //引腳1或2置高電平
{
digitalWrite(9,HIGH); //9置高電平
delay(25000); //延時(shí)25秒
digitalWrite(10,HIGH); //10置高電平
delay(5000); //延時(shí)5秒
digitalWrite(10,LOW); //10置低電平
digitalWrite(9,LOW); //9置低電平
}
}
3.行程自動(dòng)往返工件傳送帶
void setup()
{
for(int i=0;i《=7;i++) //把0-7設(shè)置為輸入
pinMode(i,INPUT);
for(int j=8;j《=13;j++) //把8-13設(shè)置為輸出
pinMode(j,OUTPUT);
}
void loop() {
if(digitalRead(1)==HIGH){
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
}
if(digitalRead(2)==HIGH){
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
}
if(digitalRead(3)==HIGH){
digitalWrite(9,LOW);
digitalWrite(10,LOW);
}
}
4.A、B、C三路智能搶答器(直接用帶閃爍燈的蜂鳴器更好)
void setup()
{
for(int i=0,j=9;i《=8,j《=13;i++,j++) //設(shè)置0-8為輸入,9-13為輸出
{pinMode(i,INPUT);pinMode(j,OUTPUT);}
}
void loop()
{ if(digitalRead(1)==HIGH&&digitalRead(11)==LOW&&digitalRead(13)==LOW)
{
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
} if(digitalRead(2)==HIGH&&digitalRead(9)==LOW&&digitalRead(13)==LOW)
{
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}
if(digitalRead(3)==HIGH&&digitalRead(9)==LOW&&digitalRead(11)==LOW)
{
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
if(digitalRead(4)==HIGH)
{
for(int k=8;k《=13;k++)
digitalWrite(k,LOW);
}
}
5.機(jī)床控制系統(tǒng)
void setup()
{
for(int i=0;i《=7;i++) //把0-7設(shè)置為輸入
{pinMode(i,INPUT);}
for(int j=8;j《=13;j++) //把8-13設(shè)置為輸出
{pinMode(j,OUTPUT);}
}
void loop() {
digitalWrite(9,digitalRead(1));
digitalWrite(10,!digitalRead(2));
digitalWrite(11,digitalRead(3));
}
6.樓上樓下共控一燈(方式2)
void setup()
{
for(int i=0,j=9;i《=8,j《=13;i++,j++) //設(shè)置0-8為輸入,9-13為輸出
{pinMode(i,INPUT);pinMode(j,OUTPUT);}
}
void loop() {
if(digitalRead(1) == HIGH) //有按鍵按下
{
delay(20); //延時(shí)去抖動(dòng)
if(digitalRead(1) == HIGH) //有按鍵按下
{
digitalWrite(9,!digitalRead(9)); //LED的狀態(tài)翻轉(zhuǎn)
while(digitalRead(1) == HIGH); //等待按鍵松手
}
}
if(digitalRead(2) == HIGH) //有按鍵按下
{
delay(20); //延時(shí)去抖動(dòng)
if(digitalRead(2) == HIGH) //有按鍵按下
{
digitalWrite(9,!digitalRead(9)); //LED的狀態(tài)翻轉(zhuǎn)
while(digitalRead(2) == HIGH); //等待按鍵松手
}
}
}
7.工廠順序啟動(dòng)反順序停車控制系統(tǒng)
void setup()
{
for(int i=0;i《=7;i++) //把0-7設(shè)置為輸入
{pinMode(i,INPUT);}
for(int j=8;j《=13;j++) //把8-13設(shè)置為輸出
{pinMode(j,OUTPUT);}
}
void loop() {
if(digitalRead(1)==HIGH)
{digitalWrite(9,HIGH);
delay(5000);
digitalWrite(10,HIGH);}
if(digitalRead(2)==HIGH)
{digitalWrite(10,LOW);
delay(5000);
digitalWrite(9,LOW);}
}
8.樓道聲光控?zé)?/strong>
void setup()
{
for(int i=0;i《=7;i++) //把0-7設(shè)置為輸入
{pinMode(i,INPUT);}
for(int j=8;j《=13;j++) //把8-13設(shè)置為輸出
{pinMode(j,OUTPUT);}
}
void loop() {
if(digitalRead(1)==HIGH&digitalRead(2)==HIGH)
{digitalWrite(9,HIGH);
delay(20000);
digitalWrite(9,LOW);}
}
9.水塔自動(dòng)上水裝置
void setup() {
pinMode(1,INPUT);
pinMode(9,OUTPUT);}
void loop()
{digitalWrite(9,!digitalRead(1));}
10.電機(jī)拖動(dòng)控制
void setup()
{
for(int i=0;i《=7;i++) //把0-7設(shè)置為輸入
pinMode(i,INPUT);
for(int j=8;j《=13;j++) //把8-13設(shè)置為輸出
pinMode(j,OUTPUT);
}
void loop()
{
if(digitalRead(1)==HIGH&&digitalRead(9)==LOW&&digitalRead(10)==LOW)
{
digitalWrite(9,HIGH);
delay(5000);
digitalWrite(10,HIGH);
}
if(digitalRead(2)==HIGH)
{digitalWrite(9,HIGH);}
if(digitalRead(3)==HIGH)
{digitalWrite(9,LOW);}
if(digitalRead(4)==HIGH)
{digitalWrite(10,HIGH);}
if(digitalRead(5)==HIGH)
{digitalWrite(10,LOW);}
}
評論
查看更多