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