史上最全的arduino實驗集錦

Ardinuo知識點與項目實戰
(1)簡易流水燈void setup()
{ int i=10; for(i;i<=13;i++)
pinMode(i,OUTPUT);//循環一下而已}
void loop() { digitalWrite(10,HIGH);
digitalWrite(11,LOW);
delay(200);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
delay(200);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
delay(200);
digitalWrite(13,HIGH);
digitalWrite(10,LOW);
delay(200);}
(2)按鍵控制小燈的開關const int LED=13; //聲明變量 LED燈接在13針腳;
const int BUTTON=7; //聲明變量,按鈕接在第7針腳;
int val=0; //聲明變量,用來存儲按鈕返回值HIGH或者LOW;
int val_old=0;//聲明變量,存儲上一次按鈕返回值;比對val和val_old的值,來判斷按鈕是按下還是擡起 //valLOW && val_oldHIGHT 擡起狀態;
valHIGH && val_oldLOW 按下狀態;
int state=0;//0 off,1 on 聲明變量,起到中轉的作用,小技巧;
void setup() //初始化;{ pinMode(LED,OUTPUT); //定義LED燈輸入模式;
pinMode(BUTTON,INPUT);//定義BUTTON爲輸出模式;
} void loop() { val=digitalRead(BUTTON);//讀取數字針腳的值;
if((valHIGH) && (val_oldLOW))//比較前一次和現在的按鈕返回的值, //只有現在按下按鈕這個狀態下,才改變state的值
{ state=1-state; } if((valLOW && val_oldHIGH)) //去抖的作用,一般10-15ms;
{ delay(10); } val_old=val;//把現在按鈕返回的值賦予val_old;
if(state==1)//控制燈開關;
{ digitalWrite(LED,HIGH); }
else { digitalWrite(LED,LOW); } }
第二種方法
int buttonState = 0;
void setup() {pinMode(13, OUTPUT);
pinMode(2, INPUT);}
void loop(){buttonState = digitalRead(2);
if (buttonState == HIGH) {digitalWrite(13, HIGH);}
else {digitalWrite(13, LOW);}
蜂鳴器製作電子琴
int buzzer=8;int buzzer2=9;int buzzer3=10;
void setup(){pinMode(buzzer,INPUT);
pinMode(buzzer2,INPUT);
pinMode(buzzer3,INPUT);
pinMode(3,OUTPUT);
digitalWrite(buzzer,HIGH);
digitalWrite(buzzer2,HIGH);
digitalWrite(buzzer3,HIGH);}
void loop(){ if(digitalRead(buzzer)==LOW)
{ tone(3,2349);
delay(100);
noTone(3);}
else if(digitalRead(buzzer2)==LOW)
{ tone(3,2093); delay(100);
noTone(3);}
else if(digitalRead(buzzer3)==LOW)
{ tone(3,2637);
delay(100);
noTone(3);}
else noTone(3);}
數字控制呼吸燈
void setup() { pinMode(11,OUTPUT);}
void loop()
{for(int i=0;i<=30;i++)
{analogWrite(11,i);
delay(10);}
for(int i=30;i>=0;i–)
{analogWrite(11,i);delay(10); }}
呼吸流水燈
void setup() { pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);}
int level =0;
int ports[6]={3,5,6,9,10,11}
;int idx=0;
void loop()
{delay(10);
analogWrite(ports[idx],level);
++level %=7;++idx %=6;}設定小燈IO數字管腳爲5,閃爍
int ledPin = 5;//設定控制LED的數字IO管腳
void setup() {pinMode(ledPin,OUTPUT);}//設定數字IO口的模式,output爲輸出
void loop(){digitalWrite(ledPin,HIGH);//設定PIN5腳爲HIGH=5v左右
delay(200);digitalWrite(ledPin,LOW);//設定PIN5腳爲LOW=0v
delay(200);}
利用串口輸入字符控制小燈閃爍
int ledPin = 13;//設定控制LED的數字IO管腳
int val;void setup()
{pinMode(ledPin,OUTPUT);//設定數字IO口的模式,
output爲輸出Serial.begin(9600);}//設定波特率爲9600
void loop(){val=Serial.read();
if(-1!=val){if('H’val)
{digitalWrite(ledPin,HIGH);//設定PIN5腳爲HIGH=5v左右
delay(500);
digitalWrite(ledPin,LOW);//設定PIN5腳爲LOW=0v
Serial.print(“Available:”);
Serial.println(Serial.available(),DEC);//返回串口緩衝區中當前剩下的字符個數。最多能夠緩衝128個字節。 }}}
(四)旋轉按鈕模擬輸出控制小燈的亮與暗
int ledPin =3;int analogPin =A5;//一個5v,中間A5,一個GND
int val= 0;
void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);}
void loop(){val = analogRead(analogPin);
analogWrite(ledPin, );
Serial.println(val);delay(200);}
(五)打印hello world
void setup()
{Serial.begin(9600);}
void loop(){Serial.println(“Hello world”);delay(1000);}
(六)數碼管流動數字製作
int pinDigitron = 2; //管腳D2連接到數碼管的A腳,D3連B… D9連h
void setup() { for(int x=0; x<8; x++)
pinMode(pinDigitron+x, OUTPUT); //設置各腳爲輸出狀態
} //
在數碼管中顯示數字的函數
void displayDigit(unsigned char digit)
{ //定義一個數組表:不同數字的abcdefgh各段的取值
unsigned char abcdefgh[][8] = {
{1,1,1,1,1,1,0,0}, //0
{0,1,1,0,0,0,0,0}, //1
{1,1,0,1,1,0,1,0}, //2
{1,1,1,1,0,0,1,0}, //3
{0,1,1,0,0,1,1,0}, //4
{1,0,1,1,0,1,1,0}, //5
{1,0,1,1,1,1,1,0}, //6
{1,1,1,0,0,0,0,0}, //7
{1,1,1,1,1,1,1,0}, //8
{1,1,1,1,0,1,1,0}, //9
{1,1,1,0,1,1,1,0}, //A
{0,0,1,1,1,1,1,0}, //b
{1,0,0,1,1,1,0,0}, //C
{0,1,1,1,1,0,1,0}, //d
{1,0,0,1,1,1,1,0}, //E
{1,0,0,0,1,1,1,0}, //F };
if ( digit >= 16 ) return;
for (unsigned char x=0; x<8; x++)
digitalWrite( pinDigitron + x, abcdefgh[digit][x] );}
void loop() { //在數碼管中顯示0-9,A-F各個數字
for (int x=0; x<16; x++) {
displayDigit(x); //調用displayDigit()子函數,顯示數字
delay(1000); //等待1000毫秒
}}
(七)蜂鳴器唱小星星
int d=262;//1
int re=294;//
2int mi=330;//3
int fa=349;//4
int sol=392;//5
int la=440;//6
int si=494;//7
int buzzerPin=7;
int ol[43]={d,d,sol,sol,la,la,sol, fa,fa,mi,mi,re,re,d, sol,sol,fa,fa,mi,mi,re, sol,sol,fa,fa,mi,mi,re, d,d,sol,sol,la,la,sol, fa,fa,mi,mi,re,re,d};
void setup()
{ pinMode(buzzerPin,OUTPUT); }
void loop(){
for(int i=0;i<=42;i++)
{ tone(buzzerPin,ol[i]);
delay(100);
noTone(buzzerPin);
delay(100);} }
(七)使用alm35製作溫度計平面對人,左腳爲正極,右腳負極,中間爲模擬輸入管腳
void setup(){
Serial.begin(9600); }
void loop(){
Serial.println(analogRead(0)0.48828125);//輸出爲攝氏度:5/10241000/10
delay(100); }
(八)光敏電阻一腳接5v,一腳負極並需與普通電阻相接,中間插模擬輸出管腳
void setup(){
Serial.begin(9600); }
void loop()
{ Serial.println(analogRead(0)); delay(100); }
(九)反饋裝置,基本功能同上,只是加了一個小燈
void setup()
{ Serial.begin(9600);
pinMode(9,OUTPUT); }
void loop(){
analogWrite(9,map(analogRead(0),400,700,0,255));//map 映射
Serial.println(analogRead(0));
delay(100); }
(十)紅外熱人體測距 中間插管腳,一邊插gnd
void setup(){ pinMode(11,OUTPUT);
pinMode(7,INPUT); }
void loop(){ if(digitalRead(7)HIGH)
digitalWrite(11,HIGH);
else digitalWrite(11,LOW); }
(十一)檢測按鈕
int pushButton =7;
int buttonState=0;
int beforeState =0;
void setup(){ Serial.begin(9600);
pinMode(pushButton,INPUT); }
void loop(){
buttonState=digitalRead(pushButton);
if(buttonState
1 and beforeState
1)
{ Serial.print(“hi~~”);
Serial.print(buttonState); }
beforeState=buttonState; delay(1);}
(十二)電子琴加呼吸燈加電位器
int a=0;
int analogPin =A5;
int b=0;
int buzzer=7;
int buzzer2=2;
int buzzer3=8;
int buzzer4=4;
int buzzer5=12;
void setup()
{pinMode(5,OUTPUT);//LED1
pinMode(6,OUTPUT);//LED2
pinMode(9,OUTPUT);//LED3
pinMode(10,OUTPUT);//LED4
pinMode(11,OUTPUT);//LED5
pinMode(buzzer,INPUT);
pinMode(buzzer2,INPUT);
pinMode(buzzer3,INPUT);
pinMode(buzzer4,INPUT);
pinMode(buzzer5,INPUT);
pinMode(3,OUTPUT);
digitalWrite(buzzer,HIGH);
digitalWrite(buzzer2,HIGH);
digitalWrite(buzzer3,HIGH);
digitalWrite(buzzer4,HIGH);
digitalWrite(buzzer5,HIGH);
digitalWrite(11,LOW);//LED1
digitalWrite(5,LOW);//LED2
digitalWrite(6,LOW);//LED3
digitalWrite(9,LOW);//LED4
digitalWrite(10,LOW);//LED5}
void loop(){
b = analogRead(analogPin);
if(digitalRead(buzzer)LOW)
{ tone(3,262);delay(100);noTone(3);
for(int i=a;i<=b;i++) {analogWrite(5,i);
delay(10);}
for(int i=b;i>=a;i–) {analogWrite(5,i); delay(10);} } else if(digitalRead(buzzer2)LOW) { tone(3,294);delay(100);noTone(3); {for(int i=a;i<=b;i++) {analogWrite(6,i); delay(10);}} for(int i=b;i>=a;i–) {analogWrite(6,i); delay(10);} } else if(digitalRead(buzzer3)LOW) { tone(3,330);delay(100);noTone(3); {for(int i=a;i<=b;i++) {analogWrite(9,i); delay(10);}} for(int i=b;i>=a;i–) {analogWrite(9,i); delay(10);} } else if(digitalRead(buzzer4)LOW) { tone(3,349); delay(100);noTone(3); {for(int i=a;i<=b;i++) {analogWrite(10,i); delay(10);}} for(int i=b;i>=a;i–) {analogWrite(10,i); delay(10);} } else if(digitalRead(buzzer5)LOW) { tone(3,392);delay(100);noTone(3); {for(int i=a;i<=b;i++) {analogWrite(11,i); delay(10);} for(int i=b;i>=a;i–) {analogWrite(11,i); delay(10);} } } else noTone(3);}
(十三)電位器控制流水燈與電子琴
int analogPin =A5;
int ledpin[]={5,6,9,10,11};
int i=5;
void setup(){for(int i=7;i>=3;i–){pinMode(ledpin[i],OUTPUT);
digitalWrite(ledpin[i],HIGH);}//make the led from
pinMode(3,OUTPUT);}
void loop(){
int a=analogRead(analogPin);
int ledlevel=map(a,0,1023,0,i);
for(int b=0;b<i;b++)
{if(b<ledlevel)
{digitalWrite(ledpin[b],HIGH);}
else
{digitalWrite(ledpin[b],LOW);} }
int c=map(a,0,1023,0,5);
if(c
1)
{ tone(3,262);delay(100);noTone(3);}
else if(c
2){tone(3,294);delay(100);noTone(3); }
else if(c
3) {tone(3,330);delay(100);noTone(3); }
else if(c
4) {tone(3,349);delay(100);noTone(3); }
else if(c
5) {tone(3,392);delay(100);noTone(3); }
else noTone(3);}
(十四)超聲波測距
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup() {Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(8,OUTPUT);}
void loop() {digitalWrite(8, LOW);
digitalWrite(TrigPin, LOW); //低高低電平發一個短時間脈衝去TrigPin
delayMicroseconds(10);
digitalWrite(TrigPin, HIGH)
;delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //將回波時間換算成cm
cm = (int(cm * 100.0)) / 100.0; //保留兩位小數
Serial.println( pulseIn(EchoPin, HIGH) / 58.0);
if (cm>=2 && cm<=10)tone(8, HIGH);delay(100);noTone(8);}
(十五)
#include<LiquidCrystal.h>//
LiquidCrystal lcd(1,2,4,5,6,7);//RS,e,寄存器D4,D5,D6,D7
void setup(){lcd.begin(16,2);//定義lcd的尺寸,2行16格
}void loop(){lcd.print(“arduino”) ;
delay(3000);lcd.setCursor(2,1);//(列,行)
lcd.print(“LCD Tutorial”);
delay(3000);
lcd.clear();
lcd.blink();//設置閃爍光標
delay(4000);l
cd.setCursor(7,1);
delay(3000)
;lcd.noBlink();
lcd.cursor();//設置爲下劃線的閃爍光標
lcd.noCursor()
;lcd.clear();}1.gnd2.vcc //5v3.vo
可以加一個電位器來控制顯示器的對比度4.rs 選擇是否將發送命令或數據到液晶顯示器,引腳放在低電位或0v則可以發送命令到液晶顯示屏將光標位置放在特定位置,清屏等。高電位或5v,就向LCD發送數據或字符5.r/w 選擇模式6.e 寫入寄存器,或接下來的數據引腳從D0到D77.D0到D7 date pins|0|0|0|0|0|0|0|,發送這些ascall碼到寄存器,有特定表參照 8.a(正極)9.k(負極背光)(十六)lcd閃爍指標#include<LiquidCrystal.h>//byte slash[8]={B00001,B00010,B00100,B01000,B10000,B00000,B00000,B00000 };
LiquidCrystal lcd(1,2,4,5,6,7)
;void setup(){lcd.begin(16,2);//定義lcd的尺寸,2行16格
lcd.createChar(7,slash);}void loop(){for(int i=0;i<=15;i++) {lcd.setCursor(i,0);lcd.clear();lcd.write(7);delay(1000);}}
(十七)火焰探測器,ao口接模擬接口
int fame=A0;int Beep=8;int val=0;
void setup()
{pinMode(fame,INPUT);
Serial.begin(9600);}
void loop(){val=analogRead(fame);
Serial.println(val); delay(500); }
(十八)土壤溼度傳感器
#define Moisture A0 //定義AO 引腳 爲 IO-A0
#define DO 7 //定義DO 引腳 爲 IO-7
void setup() { pinMode(Moisture, INPUT);//定義A0爲輸入模式
pinMode(DO, INPUT);
Serial.begin(9600);}
void loop() { //串口返回測量數據
Serial.print(“Moisture=”);
Serial.print(analogRead(Moisture));//讀取AO的數值
Serial.print("|DO=");
Serial.println(digitalRead(DO));//讀取DO的數值
delay(1000);}
(十九)煙霧傳感器
const int gasSensor =0;
void setup(){ Serial.begin(9600); // sets the serial port to 9600
}void loop(){ float voltage;
voltage = getVoltage(gasSensor);
Serial.println(voltage);
delay(1000);}
float getVoltage(int pin){
return (analogRead(pin) * 0.004882814);}
(二十)紅外傳感器
int LEDpin = 2
;int light = 3;
void setup()
{pinMode(LEDpin,OUTPUT);
pinMode(light,INPUT);
Serial.begin(9600);}
void loop(){
int zhongbest = digitalRead(light);
Serial.println(zhongbest);
if (zhongbest == 0)
{digitalWrite(LEDpin,HIGH)
;delay(1000);
digitalWrite(LEDpin,LOW);}
else{digitalWrite(LEDpin,LOW);}}
(二十一)紅外遙控小燈簡易版
#include <IRremote.h>
int RECV_PIN = 11
;int LED_PIN = 13;
IRrecv irrecv(RECV_PIN);//創建實例
decode_results results;//解碼
void setup(){ Serial.begin(9600);
irrecv.enableIRIn(); // 開始接收紅外線
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);}
void loop() {
if (irrecv.decode(&results))
{//如果有接收到信息
Serial.println(results.value, HEX);//16進制輸出,BIH就是2進制
if (results.value == 0xFFA25D) //開燈的值
{ digitalWrite(LED_PIN, LOW); }
else if (results.value == 0xFF629D) //關燈的值
{
digitalWrite(LED_PIN, HIGH); }
irrecv.resume(); //接收下一個信息 } delay(100);}
(二十二)舵機
#include<Servo.h>
Servo myservo;
int pos=0;
void setup()
{myservo.attach(9);
}void loop(){
for(pos=0;pos<=180;pos++)
{myservo.write(pos);delay(5);}
for(pos=180;pos>=0;pos–) {myservo.write(pos);delay(5);}}
(二十三)聲控燈
int val;void setup() {
Serial.begin(9600);
pinMode(8,OUTPUT);
digitalWrite(8,LOW);}
void loop(){
val = analogRead(A0);
Serial.println(val);
digitalWrite(8,HIGH);
if (val > 80) // no voice
{ digitalWrite(8,HIGH); // clear led
delay(3000); }
else { digitalWrite(8,LOW); // set led }}
(二十四)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章