Arduino UNO學習141.數字LED燈共陽5611BH
數字LED燈有7段顯示器和8段顯示器多個小數點,並分共陰或共陽,
可取3V水銀電池,直接引線負極到顯示器中間共腳,正極隨意接一腳,
即可知各接腳訂義,此說明使用共陽型8段顯示器,↓
數字LED燈*1共陽型5611BH
220或330歐電阻*8,
燈有10支腳,除了中間共腳為負,其他腳位都設為正,
便會讓8個燈都點亮,ArduBlock拼圖塊↓
www.ee543.com
2016年1月31日 星期日
Arduino UNO學習160.傾斜開關+有源蜂鳴器
Arduino UNO學習160.傾斜開關+有源蜂鳴器
傾斜開關是一種利用地球引力重力來控制電路打開或閉合的元件,
就和開關被壓下啟動的功能相同的,運用於控制平衡的元件,
以往是內置水銀來製作,稱為水銀開關,由於水銀有毒,現多改用鋼珠來製做,
接腳和一般壓按開關一樣接法,
有”源”蜂鳴器指的是內部有震盪源,只要有範圍內的電壓即可發出聲音,
請選用5V內的蜂鳴器搭配Arduino使用,
有源蜂鳴器有長短腳,長腳為正短腳為負,安裝時注意腳位,
玩多了LED燈,這次改用蜂鳴器來取代LED燈,可免除電阻的安裝,↓
傾斜開關*1
蜂鳴器*1
ArduBlock程式部分也是和按鍵控制燈號一樣,↓
void setup()
{
pinMode( 2 , INPUT);
pinMode( 13 , OUTPUT);
}
void loop()
{
if ( digitalRead(
2))
{
digitalWrite( 13 , LOW );
}
else
{
digitalWrite( 13 , HIGH );
}
}
把麵包板拿水平或反面,當開關感應到傾斜時蜂鳴器就會發出聲音,
若改成馬達或其他元件,就可控制物件的平衡,或是震動時啟動某元件,
以下為Arduino官方教學
2016年1月30日 星期六
Arduino UNO學習510.密碼開關EEPROM
Arduino學習510.密碼開關EEPROM
硬體
按鍵或指撥開關*4,圖片中的開關都可以
UNO中有一個可複寫唯讀記憶體EEPROM,
容量1kb=1024Byte,位址由0~1023,
程式前段先顯示原本位址10中的資料於監控視窗,
再寫入自定數字密碼9並顯示,及設定初始腳位↓
使用2進位計算方式設定4個Pin腳為1,2,4,8,
因為是輸入負低電壓訊號,因此需設成沒訊號時為0,按通後分別為1,2,4,8,
並計算開關的總計是否符合密碼9,若不符密碼就顯示錯誤,可運用在密碼正確時啟動設備↓
#include <EEPROM.h>
int _ABVAR_2_PIN3 = 0 ;
int _ABVAR_4_PIN5 = 0 ;
int _ABVAR_5_Total = 0 ;
int _ABVAR_1_PIN2 = 0 ;
int _ABVAR_3_PIN4 = 0 ;
void setup()
{
pinMode( 2 , INPUT);
pinMode( 3 , INPUT);
pinMode( 4 , INPUT);
pinMode( 5 , INPUT);
Serial.begin(9600);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
Serial.print( EEPROM.read( 10 ) );
Serial.println();
delay( 1000 );
EEPROM.write( 10 , 9 );
Serial.print( "SAVE=" );
Serial.print( EEPROM.read( 10 ) );
Serial.println();
delay( 2000 );
}
void loop()
{
if ( digitalRead( 2))
{
_ABVAR_1_PIN2 = 0 ;
}
else
{
_ABVAR_1_PIN2 = 1 ;
}
if ( digitalRead( 3))
{
_ABVAR_2_PIN3 = 0 ;
}
else
{
_ABVAR_2_PIN3 = 2 ;
}
if ( digitalRead( 4))
{
_ABVAR_3_PIN4 = 0 ;
}
else
{
_ABVAR_3_PIN4 = 4 ;
}
if ( digitalRead( 5))
{
_ABVAR_4_PIN5 = 0 ;
}
else
{
_ABVAR_4_PIN5 = 8 ;
}
_ABVAR_5_Total = ( ( _ABVAR_1_PIN2 + _ABVAR_2_PIN3 ) + ( _ABVAR_3_PIN4 + _ABVAR_4_PIN5 ) ) ;
if (( ( _ABVAR_5_Total ) == ( EEPROM.read( 10 ) ) ))
{
Serial.print( _ABVAR_5_Total );
Serial.println();
Serial.print( "WELCOME" );
Serial.println();
}
else
{
Serial.print( _ABVAR_5_Total );
Serial.println();
Serial.print( "ERROR" );
Serial.println();
}
delay( 5000 );
}
www.ee543.com
硬體
按鍵或指撥開關*4,圖片中的開關都可以
UNO中有一個可複寫唯讀記憶體EEPROM,
容量1kb=1024Byte,位址由0~1023,
程式前段先顯示原本位址10中的資料於監控視窗,
再寫入自定數字密碼9並顯示,及設定初始腳位↓
使用2進位計算方式設定4個Pin腳為1,2,4,8,
因為是輸入負低電壓訊號,因此需設成沒訊號時為0,按通後分別為1,2,4,8,
並計算開關的總計是否符合密碼9,若不符密碼就顯示錯誤,可運用在密碼正確時啟動設備↓
#include <EEPROM.h>
int _ABVAR_2_PIN3 = 0 ;
int _ABVAR_4_PIN5 = 0 ;
int _ABVAR_5_Total = 0 ;
int _ABVAR_1_PIN2 = 0 ;
int _ABVAR_3_PIN4 = 0 ;
void setup()
{
pinMode( 2 , INPUT);
pinMode( 3 , INPUT);
pinMode( 4 , INPUT);
pinMode( 5 , INPUT);
Serial.begin(9600);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
Serial.print( EEPROM.read( 10 ) );
Serial.println();
delay( 1000 );
EEPROM.write( 10 , 9 );
Serial.print( "SAVE=" );
Serial.print( EEPROM.read( 10 ) );
Serial.println();
delay( 2000 );
}
void loop()
{
if ( digitalRead( 2))
{
_ABVAR_1_PIN2 = 0 ;
}
else
{
_ABVAR_1_PIN2 = 1 ;
}
if ( digitalRead( 3))
{
_ABVAR_2_PIN3 = 0 ;
}
else
{
_ABVAR_2_PIN3 = 2 ;
}
if ( digitalRead( 4))
{
_ABVAR_3_PIN4 = 0 ;
}
else
{
_ABVAR_3_PIN4 = 4 ;
}
if ( digitalRead( 5))
{
_ABVAR_4_PIN5 = 0 ;
}
else
{
_ABVAR_4_PIN5 = 8 ;
}
_ABVAR_5_Total = ( ( _ABVAR_1_PIN2 + _ABVAR_2_PIN3 ) + ( _ABVAR_3_PIN4 + _ABVAR_4_PIN5 ) ) ;
if (( ( _ABVAR_5_Total ) == ( EEPROM.read( 10 ) ) ))
{
Serial.print( _ABVAR_5_Total );
Serial.println();
Serial.print( "WELCOME" );
Serial.println();
}
else
{
Serial.print( _ABVAR_5_Total );
Serial.println();
Serial.print( "ERROR" );
Serial.println();
}
delay( 5000 );
}
www.ee543.com
Arduino UNO學習440.8*8點陣LED燈16腳1088BS
Arduino UNO學習440.8*8點陣LED燈16腳1088BS
點陣8*8共64個燈,由8+8個腳位控制,
也有12+12腳位控制雙色8*8燈,
以下為1088BS點陣燈腳對應圖,接腳位順序不等同燈號順序,
當X13,Y9一正一負交叉時左上燈亮起,由於燈有分正負,
需依共陽或共陰,來調整X列為正或負,以及Y列為正或負,↓
燈在裝上麵包板時會發現,燈太大了,所以此學習需使用2個麵包板,
點陣8*8共有8+8=16支腳,而Arduino UNO的數位腳只有D0~D13,
因此需用到類比腳位A0~A5,來代替為第A14~A19,
為避免用到D0和D1的通訊腳位,所以從D2腳位開始接起,
也就是燈1腳接D2,,燈2腳接D3,,依序到燈12接D13,,
再轉到燈13腳接A0,,一樣依序接到燈16腳接A3,,共16腳位,
此範例是作動態閃燈,每顆亮燈時間不長,故省略了電阻,
若要長時間點亮還是要加上電阻保護,以免燒燈↓
燈的順序和腳位順序是不同步的,故接好後的燈對應Arduino腳位圖↓
ArduBlock先寫副函式,手邊的燈X負Y正時點亮,想要將燈關閉,所以X列設高Y列設低,
並將X列和Y列熄燈腳位設定為副程式以便每燈亮後作熄燈用,↓
依序要點亮每個燈,X列腳位順序即為D14,D4,D5…一直到D17,因為要亮8排,
所以可設成副程式以便亮8次,每顆燈亮100毫秒就熄燈,再亮下一顆燈,
若要讓燈由右燈亮起,也可設成反順序D17,D16,D12…一直到D14,
要換下一排前記得讓燈全部熄滅,所以在程式尾要呼叫對映副函式X1和Y0↓
主程式部分每次開始前先讓點亮的燈熄滅,所以先呼叫對映副函式X1和Y0,
Y列第一排腳為D10,加上X列由D14腳逐一往右亮起,
再亮Y列下一排D15一樣加上X列由D17由右往左亮起,
如此便可讓Y列8排都逐一亮點亮,ArduBlock的主程式拼圖↓
void Y0();
void X1();
void X14();
void X17();
void setup()
{
pinMode( 10 , OUTPUT);
pinMode( 15 , OUTPUT);
pinMode( 9 , OUTPUT);
pinMode( 13 , OUTPUT);
pinMode( 2 , OUTPUT);
pinMode( 8 , OUTPUT);
pinMode( 3 , OUTPUT);
pinMode( 6 , OUTPUT);
pinMode( 17 , OUTPUT);
pinMode( 16 , OUTPUT);
pinMode( 12 , OUTPUT);
pinMode( 7 , OUTPUT);
pinMode( 11 , OUTPUT);
pinMode( 5 , OUTPUT);
pinMode( 4 , OUTPUT);
pinMode( 14 , OUTPUT);
}
void loop()
{
X1();
Y0();
digitalWrite( 10 , HIGH );
X14();
digitalWrite( 15 , HIGH );
X17();
digitalWrite( 9 , HIGH );
X14();
digitalWrite( 13 , HIGH );
X17();
digitalWrite( 2 , HIGH );
X14();
digitalWrite( 8 , HIGH );
X17();
digitalWrite( 3 , HIGH );
X14();
digitalWrite( 6 , HIGH );
X17();
}
void X17()
{
digitalWrite( 17 , LOW );
delay( 10 );
X1();
digitalWrite( 16 , LOW );
delay( 10 );
X1();
digitalWrite( 12 , LOW );
delay( 10 );
X1();
digitalWrite( 7 , LOW );
delay( 10 );
X1();
digitalWrite( 11 , LOW );
delay( 10 );
X1();
digitalWrite( 5 , LOW );
delay( 10 );
X1();
digitalWrite( 4 , LOW );
delay( 10 );
X1();
digitalWrite( 14 , LOW );
delay( 10 );
X1();
Y0();
}
void X1()
{
digitalWrite( 14 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , HIGH );
digitalWrite( 11 , HIGH );
digitalWrite( 7 , HIGH );
digitalWrite( 12 , HIGH );
digitalWrite( 16 , HIGH );
digitalWrite( 17 , HIGH );
}
void X14()
{
digitalWrite( 14 , LOW );
delay( 10 );
X1();
digitalWrite( 4 , LOW );
delay( 10 );
X1();
digitalWrite( 5 , LOW );
delay( 10 );
X1();
digitalWrite( 11 , LOW );
delay( 10 );
X1();
digitalWrite( 7 , LOW );
delay( 10 );
X1();
digitalWrite( 12 , LOW );
delay( 10 );
X1();
digitalWrite( 16 , LOW );
delay( 10 );
X1();
digitalWrite( 17 , LOW );
delay( 10 );
X1();
Y0();
}
void Y0()
{
digitalWrite( 10 , LOW );
digitalWrite( 15 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 13 , LOW );
digitalWrite( 2 , LOW );
digitalWrite( 8 , LOW );
digitalWrite( 3 , LOW );
digitalWrite( 6 , LOW );
}
以下世界高手的作品分享,遵循Arduino精神把大家的作品放上網路分享吧
http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-matrix-on-arduino
www.ee543.com
點陣8*8共64個燈,由8+8個腳位控制,
也有12+12腳位控制雙色8*8燈,
以下為1088BS點陣燈腳對應圖,接腳位順序不等同燈號順序,
當X13,Y9一正一負交叉時左上燈亮起,由於燈有分正負,
需依共陽或共陰,來調整X列為正或負,以及Y列為正或負,↓
燈在裝上麵包板時會發現,燈太大了,所以此學習需使用2個麵包板,
點陣8*8共有8+8=16支腳,而Arduino UNO的數位腳只有D0~D13,
因此需用到類比腳位A0~A5,來代替為第A14~A19,
為避免用到D0和D1的通訊腳位,所以從D2腳位開始接起,
也就是燈1腳接D2,,燈2腳接D3,,依序到燈12接D13,,
再轉到燈13腳接A0,,一樣依序接到燈16腳接A3,,共16腳位,
此範例是作動態閃燈,每顆亮燈時間不長,故省略了電阻,
若要長時間點亮還是要加上電阻保護,以免燒燈↓
燈的順序和腳位順序是不同步的,故接好後的燈對應Arduino腳位圖↓
ArduBlock先寫副函式,手邊的燈X負Y正時點亮,想要將燈關閉,所以X列設高Y列設低,
並將X列和Y列熄燈腳位設定為副程式以便每燈亮後作熄燈用,↓
依序要點亮每個燈,X列腳位順序即為D14,D4,D5…一直到D17,因為要亮8排,
所以可設成副程式以便亮8次,每顆燈亮100毫秒就熄燈,再亮下一顆燈,
若要讓燈由右燈亮起,也可設成反順序D17,D16,D12…一直到D14,
要換下一排前記得讓燈全部熄滅,所以在程式尾要呼叫對映副函式X1和Y0↓
主程式部分每次開始前先讓點亮的燈熄滅,所以先呼叫對映副函式X1和Y0,
Y列第一排腳為D10,加上X列由D14腳逐一往右亮起,
再亮Y列下一排D15一樣加上X列由D17由右往左亮起,
如此便可讓Y列8排都逐一亮點亮,ArduBlock的主程式拼圖↓
void Y0();
void X1();
void X14();
void X17();
void setup()
{
pinMode( 10 , OUTPUT);
pinMode( 15 , OUTPUT);
pinMode( 9 , OUTPUT);
pinMode( 13 , OUTPUT);
pinMode( 2 , OUTPUT);
pinMode( 8 , OUTPUT);
pinMode( 3 , OUTPUT);
pinMode( 6 , OUTPUT);
pinMode( 17 , OUTPUT);
pinMode( 16 , OUTPUT);
pinMode( 12 , OUTPUT);
pinMode( 7 , OUTPUT);
pinMode( 11 , OUTPUT);
pinMode( 5 , OUTPUT);
pinMode( 4 , OUTPUT);
pinMode( 14 , OUTPUT);
}
void loop()
{
X1();
Y0();
digitalWrite( 10 , HIGH );
X14();
digitalWrite( 15 , HIGH );
X17();
digitalWrite( 9 , HIGH );
X14();
digitalWrite( 13 , HIGH );
X17();
digitalWrite( 2 , HIGH );
X14();
digitalWrite( 8 , HIGH );
X17();
digitalWrite( 3 , HIGH );
X14();
digitalWrite( 6 , HIGH );
X17();
}
void X17()
{
digitalWrite( 17 , LOW );
delay( 10 );
X1();
digitalWrite( 16 , LOW );
delay( 10 );
X1();
digitalWrite( 12 , LOW );
delay( 10 );
X1();
digitalWrite( 7 , LOW );
delay( 10 );
X1();
digitalWrite( 11 , LOW );
delay( 10 );
X1();
digitalWrite( 5 , LOW );
delay( 10 );
X1();
digitalWrite( 4 , LOW );
delay( 10 );
X1();
digitalWrite( 14 , LOW );
delay( 10 );
X1();
Y0();
}
void X1()
{
digitalWrite( 14 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , HIGH );
digitalWrite( 11 , HIGH );
digitalWrite( 7 , HIGH );
digitalWrite( 12 , HIGH );
digitalWrite( 16 , HIGH );
digitalWrite( 17 , HIGH );
}
void X14()
{
digitalWrite( 14 , LOW );
delay( 10 );
X1();
digitalWrite( 4 , LOW );
delay( 10 );
X1();
digitalWrite( 5 , LOW );
delay( 10 );
X1();
digitalWrite( 11 , LOW );
delay( 10 );
X1();
digitalWrite( 7 , LOW );
delay( 10 );
X1();
digitalWrite( 12 , LOW );
delay( 10 );
X1();
digitalWrite( 16 , LOW );
delay( 10 );
X1();
digitalWrite( 17 , LOW );
delay( 10 );
X1();
Y0();
}
void Y0()
{
digitalWrite( 10 , LOW );
digitalWrite( 15 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 13 , LOW );
digitalWrite( 2 , LOW );
digitalWrite( 8 , LOW );
digitalWrite( 3 , LOW );
digitalWrite( 6 , LOW );
}
以下世界高手的作品分享,遵循Arduino精神把大家的作品放上網路分享吧
http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-matrix-on-arduino
www.ee543.com
2016年1月25日 星期一
Arduino UNO學習430.控制伺服馬達
Arduino UNO學習430.控制伺服馬達
直流馬達,步進馬達,伺服馬達,是機器人及移動機具重要的元件,
馬達在搭配Arduino板使用建議另加電源,以免過載燒板,
各馬達有不同的扭力及速度,依需求搭配,不要把馬達操壞了,
伺服馬達是透過PWM控制的,所以接腳務必選擇有”~”的腳位↓
這麼重要的元件,在ArduBlock中當然有對應的角度積木塊及模組,
就讓馬達由0轉到180度,由於伺服馬達並不會轉360度,
所以程式結束後的位置在180度處,再次執行程式後再轉回到0度位置,
可自行調整角度以了解伺服馬達的控制方式↓
#include
<Servo.h>
Servo
servo_pin_9;
void
setup()
{
servo_pin_9.attach(9);
}
void
loop()
{
servo_pin_9.write(
10 );
delay( 1000 );
servo_pin_9.write(
190 );
delay( 1000 );
}
UNO板的電流輸出約僅200mA,在實作中會發現舵機出現抖動的情形,
可使用9V1A電源供應給UNO,或舵機電源外接,以提供較大電力,
並注意搭配的電線是否可通過1A以上電力,一般杜邦線是無法過1A的,
2016年1月24日 星期日
Arduino UNO學習420.控制步進馬達
Arduino
UNO學習420.控制步進馬達
步進馬達有分電壓及線腳數及步角,內有減速齒輪,
在此不說明步進馬達的運作原理,注意馬達高功率,
如長時連續使用建議外接電源,以免過載燒板,
在此不說明步進馬達的運作原理,注意馬達高功率,
如長時連續使用建議外接電源,以免過載燒板,
在此以5線步進馬達28BYJ-48為例↓
一般步進馬達會搭配ULN2003晶片來作訊號放大,以免馬達功率大而無法轉動,
可直接搭配步進馬達驅動板使用↓
可直接搭配步進馬達驅動板使用↓
馬達+驅動板+UNO板硬體連接,為了使馬達轉動明顯,可貼上膠布或紙片↓
在此不介紹步進馬達運作原理,只需知道4條訊號線依序給電即可使馬達轉動,
因是5線馬達,除了紅色為電源之外,需讓其他4線各一次高電位,以轉動馬達,
其轉動依序如下列表,在此為簡化程式,故省去了列表中第2.4.6.8的電磁配置↓
上圖示為half step共4條線的第4條Orange高位其他3腳低位,
再來是第4和第3的Yellow高位其他3腳低位,依序共8步驟為1個步角循環,
每步驟中可加入時間來控制轉速,若要反向就反著調整高位順序,
以下縮減作full step即省去半個電位變成4步驟,
注意作full step馬達反應時間過短會有漏步現像,以及建議加上外部電源提供電力↓
void
setup()
{
pinMode( 4 , OUTPUT);
pinMode( 5 , OUTPUT);
pinMode( 6 , OUTPUT);
pinMode( 7 , OUTPUT);
}
void
loop()
{
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , HIGH );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , HIGH );
delay( 10 );
}
此28BYJ-48步進馬達規格,步腳5.625度角,360度/5.625=64,
齒輪減速比為1/64=0.015625,額定半步模式,
(360度/5.625)/(齒輪比1/64)=4096/8步=512,
可把上面程式4位一循環打包成副程式
去控制值行次數以達指定角度,如512次則可繞360度一圈↓void setup()
{
pinMode( 4 , OUTPUT);
pinMode( 5 , OUTPUT);
pinMode( 6 , OUTPUT);
pinMode( 7 , OUTPUT);
for (int i = 0 ; i < 512 ; ++i )
{
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , HIGH );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , HIGH );
delay( 10 );
}
}
void loop(){}
若是half step作更精密的控制來轉動180度則為
void setup()
{
pinMode( 4 , OUTPUT);
pinMode( 5 , OUTPUT);
pinMode( 6 , OUTPUT);
pinMode( 7 , OUTPUT);
for (int i = 0 ; i < 256 ; ++i ) //256轉180度
{
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , HIGH );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
digitalWrite( 6 , HIGH );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , HIGH );
digitalWrite( 7 , LOW );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , HIGH );
digitalWrite( 7 , HIGH );
delay( 10 );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , HIGH );
delay( 10 );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , HIGH );
delay( 10 );
}
}
void loop(){}
詳細拆解內部參考它網
Arduino UNO學習410.無源蜂鳴器
Arduino UNO學習410.無源蜂鳴器
蜂鳴器有分電壓,此學習請找5V的無源蜂鳴器搭配UNO使用,
無”源”蜂鳴器,指的是內部無震盪源,是由訊號發送不同頻率產生音效,
而有源蜂鳴器是通電後就會鳴叫,有分正負腳,
而有源蜂鳴器是通電後就會鳴叫,有分正負腳,
無源蜂鳴器2腳一樣長,安裝無分正負腳位,二者使用方式完全不同,
參照Arduino.cc官網資訊對照音頻數據,
Do=523
Re=587
Mi=659
Fa=698
So=784
La=880
Si=988
Do=1047
將中音階跑完一次,再自己找簡單的樂譜試試吧
硬體
蜂鳴器*1
void setup()
{
}
void loop()
{
tone(7,
523);
delay(
1000 );
tone(7,
587);
delay(
1000 );
tone(7,
659);
delay(
1000 );
tone(7,
698);
delay(
1000 );
tone(7,
784);
delay(
1000 );
tone(7,
880);
delay(
1000 );
tone(7,
988);
delay(
1000 );
tone(7,
1047);
delay(
1000 );
}
Arduino UNO學習350.溫度計LM35
Arduino
UNO學習350.溫度計LM35
此學習使用LM35DZ元件,是一顆有3隻腳的溫度感測元件,
測量範圍0~100度C,腳位為電源(印字面左)/訊號/GND,接錯會燒壞,
硬體準備
溫感元件LM35*1
LM35DZ溫感器的訊號關係為C=10mV=0.01V,
換算UNO輸入數據為電壓5V/1024=0.0049V,
即為腳位訊號*0.0049v/0.01v=1度C,
也就是訊號值*0.49就可得到幾度C,
並將得到的C值換算成F華氏=攝氏C*1.8+32,
打開監控視窗分別顯示”輸入訊號值+攝氏C+華氏F”
每5秒傳送一次,ArduBlock拼圖如下↓
int
_ABVAR_1_C = 0 ;
void
setup()
{
Serial.begin(9600);
}
void
loop()
{
Serial.print(
analogRead(0) );
Serial.println();
Serial.print( ( ( analogRead(0) * 0.0049
) / 0.01 ) );
Serial.print(" ");
Serial.print(
"C" );
Serial.println();
_ABVAR_1_C = ( ( analogRead(0) * 0.0049
) / 0.01 ) ;
Serial.print( ( ( _ABVAR_1_C * 1.8 ) +
32 ) );
Serial.print(" ");
Serial.print(
"F" );
Serial.println();
delay( 5000 );
}
先套用內建範例>Basics>AnalogReadSerial
先取得讀取數據是否正常,再進行數據轉換,
簡化半秒顯示度C,加上int整數指令+0.5為四捨五入,方便顯示在液晶上用
void setup()
{
Serial.begin(9600);
Serial.begin(9600);
}
void loop()
{
Serial.print( int ( ( ( analogRead(0) * 0.0049 ) / 0.01 )+0.5 ) );
Serial.println();
delay( 500 );
}
補充~非整數顯示小數1位
Serial.print((( analogRead(0) * 0.0049 ) / 0.01 ),1);
2016年1月21日 星期四
Arduino UNO學習340.光控感光燈
Arduino UNO學習340.光控感光燈
光敏電阻和一般電阻一樣有不同大小,而Arduino的讀數最大為1023,
因此不同的光敏電阻需搭配各種不同的電阻來得到1023內的數據,
所以依手邊的的材料做不同的電阻搭配並修改參數,使得光感低時亮起LED燈,
如無法確認手邊的光敏電阻值可先套用程式後,打開監控視窗,
若讀數高於1023則加上不同電阻來修改數據,
準備硬體
光敏電阻*1
1K或10K電阻*1接光感器
LED燈*1
220或330電阻*1接LED燈
找出ArduBlock拼圖
int _ABVAR_1_A0 = 0 ;
void setup()
{
Serial.begin(9600);
pinMode(
13 , OUTPUT);
}
void loop()
{
_ABVAR_1_A0
= analogRead(0) ;
Serial.print( _ABVAR_1_A0 );
Serial.println();
if
(( ( _ABVAR_1_A0 ) < ( 600 ) ))
{
digitalWrite(
13 , HIGH );
}
else
{
digitalWrite(
13 , LOW );
}
}
上傳後打開監控視窗,並遮住光感元件,
注意視窗的數據,因每個光敏電阻數據不同,故要搭配不同電阻,
或調整程式中的數據,以達到環境暗就亮燈,
www.ee543.com
材料-麵包板
材料-麵包板
麵包板尺寸有很多種以下是常見的尺寸,此規格的麵包有橫向和直向,
A橫向的孔位是相通的,上2條下2條,有些會分為2邊則共8條,
B和C為直向通,代表B的5個洞是相通的,但B和C是不通的↓
而擴充板的小麵包板則沒有橫向通的腳位,直向D的5孔相通,D和E不通↓
訂閱:
文章 (Atom)