是樹莓派好玩,還是單片機好玩?或者說那個更有趣?我想吸引我弟弟,培養他的學習能力和動手能力
我自己最近也在玩樹莓派,所以來答一答。
提問的這個孩子(可愛的人統稱為孩子),不知道是在校學生還是已經在賺錢的人了,看得出來你很愛你的弟弟,希望他的能力提高,希望他變得優秀。和許多家長一樣,秉著鍛煉孩子的能力為由,給孩子買一大堆的書,材料,希望只要自己在教育上面花錢了,孩子就能變得優秀。
但是往往事與願違,你買的東西,小孩子不一定待見,比如說樹莓派這個東東,自身就是一個小型PC,我們專業在大學裡接受過正規學習的人一開始接觸的時候都不一定能玩得開心,看樹莓派官方介紹,查文檔,對一個小項目寫技術路線。這些都是有點枯燥的,尤其遇到一些因為型號或者亂七八糟原因出現的bug……
看到上面有答案已經在嘲諷了,問你會不會C,Linux,當然你要買一個現成的做好的東西自然不需要知道這些東西。
開發板DIY一些東西很有趣,可畢竟要經歷有趣,必先和枯燥交流。
首先問問題主,你希望小孩子拿到這個東西後能做什麼?一塊並不好看的綠綠的板子,上面的各種東西都不知道是做什麼的,插上電也沒有圖像,沒有聲音。題主覺得,沒錯!就是這樣geek就是在這樣的折騰中誕生的,你要他弄明白裡面的東西都是做什麼的,你要他創造出來有趣的東西,怎麼做呢?好了,現在扔給他一本計算機科學導論,說:「孩子,答案都在這裡面,自己參悟去吧」
他會被你酷酷地吸引,然後勤加研習,終成一代大神?別?逗我了,這麼枯燥的事情有幾個孩子喜歡做?別說他是個孩子,就是題主,你覺得自己會為了尋個開心,去學習網路編程,學一下gpio?你要吸引小孩子,你就要帶著他做,以你為主體,而不是他,把你的情緒傳遞給他,讓他覺得這是一件偉大的事情,這是一件有意思的事情。在你們做的時候,順便給他講一講裡面的原理,能接受多少就算多少。而且這樣還會給他一點安全感,覺得在和一個大人在一起做一件事,這樣的體驗真的是特別爽的。
教育不僅是一件花錢的事,更是一件花精力的事。
而且,妄自多說幾句,最終你的弟弟能在樹莓派上能走多遠,基本取決於你能做多久,而不會是你的弟弟。先捫心自問自己能做到哪一步,如果自己不能堅持,自己沒有毅力學習,自己對它不感興趣的話,就不要要求你的弟弟了。
就像許多家長總是指責孩子,這個那個做不到,其實把家長放到相同的情景下也不一定能夠做得到。在沒有生存和生活壓力下,對不感興趣的事誰會去做?換位思考說起來容易,做起來難,因為沒有當時當地,那種情景和情緒的作用。所以儘管我盡量地描述,可能許多人還是一廂情地認為小孩子就是那麼點事。
啥?你問我為什麼知道?那你就問問我是怎麼學會針灸的吧……雖然我現在不學醫,但小時候聽車前草,使君子的故事好過癮!看千金方好過癮!記經絡穴位好過癮!給自己扎針好過癮!我的父親就是這樣把這些東西教會我的,雖然我現在是工科專業的孩子,直到現在都對職業藥師資格證躍躍欲試~
我以後有了孩子,我就和他一起用樹莓派做玩具,不愁他不入硬體的坑。
(雖然我現在沒有女朋友,但是……萬一呢……)至於推薦哪一個,我當然推薦樹莓派了,就是一個小型的PC,還有圖形化界面,就算之前沒有相關的基礎,操作起來還是順手的,裡面內置的rpi.gpio封裝好了原生的C代碼,使得IO儘可能快。而且最最重要的一點:裡面有minecraft可以玩!起碼花幾百大洋,算給他買個遊戲機了。
來吧,最後給一個簡單的項目,製造蜂鳴聲
- 壓電蜂鳴器,連接到一個GPIO引腳上
- 串聯一個約470歐的電阻(使得電流不要超過3mA)
- 打開IDLE或者vi
- import RPi.GPIO as GPIOimport timebuzzer_pin = 18GPIO.setmode(GPIO.BCM)GPIO.setup(buzzer_pin,GPIO.OUT)def buzz(pitch,duration): period = 1.0 / pitch
delay = period/2
cycles = int(duration * pitch) for i in range(cycles) GPIO.output(buzzer_pin,True) time.sleep(delay) GPIO.output(buzzer_pin,False) time.sleep(delay)while Ture: pitch_s = raw_input("Enter Pitch (200 to 1000):")pitch = float(pitch_s)
duration_s = raw_input ("Enter Duration (secends):") durations = float(duration_s) buzz(pitch,duration)#這個是我第一次接觸樹莓派的時候做的,你試試~能不能讓它響。記得保存為.py文件~ - 收藏28,贊20,刪除二維碼,2016.01 update
arduino ,這個寫起來基本上是硬體無關代碼,只需要會c語言,然後在X寶上買一套小車或者是什麼的設備,就可以做一個看起來很高大上的東西了,樹莓派和單片機學習起來相對來說複雜一點,也就沒有那麼有趣吧,不過真的能學進去的話,樹莓派好點,因為學好之後,能做的東西可以很高達上
一圖勝千言。Arduino的arduBlock工具,圖形化編程,一鍵下載。
多大arduino圖形化編程
import RPi.GPIO as GPIO
import time
import numpy as np
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# Buttons channel dictonary define, key is channel, value is pitch
buttons = {
11 : 1,
12 : 2,
13 : 3,
14 : 4,
15 : 5,
16 : 6,
17 : 7}
up_button = 24
down_button = 25
# Setup buttons(Piano keys)
for x in buttons.keys():
GPIO.setup(x, GPIO.IN, GPIO.PUD_UP)
GPIO.add_event_detect(x, GPIO.RISING, callback=playOnce, bouncetime=200)
GPIO.setup(up_button, GPIO.IN, GPIO.PUD_UP)
GPIO.add_event_detect(up_button, GPIO.RISING, callback=upTune, bouncetime=200)
# Buzzer channel define
buzzer = 22
# Setup PWM for Buzzer
GPIO.setup(buzzer, GPIO.OUT)
buzz_PWM = GPIO.PWM(buzzer, 0.001)
# Music tune define
# Tune list from A-G mark to 1-7 pitch
tuneList = np.array([[
441,495,556,589,661,742,833],
[495,556,624,661,742,833,935],
[262,294,330,350,393,441,495],
[294,330,350,393,441,495,556],
[330,350,393,441,495,556,624],
[350,393,441,495,556,624,661],
[393,441,495,556,624,661,742]])
# Other param
current_mark = 3 # Default C-mark
duration = 0.2 # Sound duration
def buzz(pitch, duration):
if(pitch==0):
time.sleep(duration)
return
period = 1.0 / pitch # The period (sec/cyc) is the inverse of the frequency (cyc/sec)
delay = period / 2 # Calculate the time for half of the wave
cycles = int(duration * pitch) # The number of waves to produce is the duration times the frequency
for i in xrange(cycles):
GPIO.output(buzzer, 1)
time.sleep(delay)
GPIO.output(buzzer, 0)
time.sleep(delay)
def playOnce(channel):
pitch = buttons[channel]
tune = node(current_mark, pitch)
buzz(tune, duration)
time.sleep(duration *0.5)
buzz(tune, duration)
time.sleep(duration *0.5)
def play(tune):
for p in tune:
buzz(p, duration) # Feed the pitch and duration to the function, "buzz"
time.sleep(duration *0.5)
for p in reversed(tune):
buzz(p, duration)
time.sleep(duration *0.5)
# Define the music note, with mark(A to 1,B to 2...) and pitch (1-7)
def note(mark, pitch):
if (mark &> 0 mark &< 8 pitch &> 0 pitch &< 8):
mark-=1
pitch-=1
else:
return # check for mark and pitch input
return tuneList[mark, pitch]
def upTune(channel):
current_mark = current_mark &> 6 ? 1 : current_mark + 1
def downTune(channel):
current_mark = current_mark &< 2 ? 7 : current_mark - 1
def main():
try:
while True:
except KeyboardInterrupt:
stop()
main()
看看,不到100行搞一個7個按鈕的電子鋼琴(誤……),還能多用兩個按鈕來改變升降調2333……
其實,Raspberry Pi主要是簡單,使用Python語言來新手入門,可以配合很多強大又傻瓜的Python庫(比如SimpleCV,來用20行實現一個簡單的人臉識別,10行實現簡單的4種濾鏡)。
如果你的弟弟是小學生,建議用Raspberry Pi,還能帶一個Linux OS,可以培養興趣或許以後還能搞搞網安之類
如果你的弟弟是初中生,建議讓他學Arduino,可以搞搞類C來為以後打基礎
如果你的弟弟是高中生,建議都別搞,不如刷刷NOI,從C++開始入門,為日後保送CS專業名校奠定基礎
如果你的弟弟是大學生……額,建議讓他好好學習,不要像我這樣貪玩-.-占坑 考完後答
考試前的我是這樣的好了先給你看三張圖
這是樹莓派這是51開發版
這是STM32開發版
這是fpga開發版
學樹莓派吧 好入手
等會再答//////////////////////////////////////////////////////後悔!應該是經典的51單片機
.知道了成績忽然不想答了.等我心情好再說吧
/////////////////////////////:::::::////////////¥655//////還是買個樹莓派吧 ,裡面教程也挺全的。刷一下定製的linux,berrybian。預裝了python之類的,也比較方便。
不建議51,當然以後如果有興趣也可以玩一玩。因為學單片機免不了要在嵌入式坑裡跳一跳。按照這個教程來,起碼跑不偏,讓他多上知乎,
作者@蕭井陌http://zhuanlan.zhihu.com/xiao-jing-mo/19959253?plg_nld=1plg_uin=1plg_auth=1plg_nld=1plg_usr=1plg_vkey=1plg_dev=1你自己會哪個?還是自己都不會?
都非常好玩,都非常強大。 1-先從arduino開始,語言簡單,立馬見效,各種燈,電機,mp3模塊,測距模塊,藍牙,無線模塊,玩的飛起,能做好多有趣的產品,arduino mega還能作為3d印表機的主控板 2- 當開始涉及到網路,到網路上取數據,雲,和遠程控制的時候,可是開始試試樹莓派,雖然arduino也有可以實現的模塊,但樹莓派在這方面的能力還是要強很多,因為是linux系統,用慣圖形化系統的人會有點不習慣,這時候做東西肯定需要更多的知識,html php python 等,這時候結合arduino,用樹莓派做數據抓取和處理,用arduino作為控制機械的部分,就可以有有無限的想像力了,可以自己做一個gameboy 做一個遊戲廳的大型遊戲機,做一個氣象站 等。 最後啰嗦一句,多培養設計感,這是核心。 想像力決定了最後做出來的「玩具」到底有多好玩。 祝你好運!
用什麼不重要,重要的是興趣。
我倒是覺得LZ可以用更低的成本先試探下你弟弟對電子製作有沒有興趣。想想我純(zi4)潔(bi4)的童年,一個電珠和兩節電池就能玩一暑假。。。然後有一年被允許拆一個舊收錄機,於是純潔的玩具又多了電動小馬達、LED、喇叭。。。初中的時候手工勞動課有一年就是電子,因此高分飄過。高中的時候學校里圖書館裡看到一本《少年電子入門》,借了還、還了借看了整整三年。沒有電路板就拿橡皮和銅絲,用圓規針或元件把銅絲頂在橡皮里,接觸不良是經常的。那時候家裡條件不好,家長沒說我浪費橡皮就算是很大的支持了。點亮LED沒有成就感後就想著如何花式點亮。單閃、雙閃、用一節乾電池點亮。。。原件都來自拆機的電路板上,甚至還自己發明了「冷焊接」:就利用電路板的原焊點,用小刀割個槽,元件引腳放進去後再用力把焊錫頂回去包住。。。當然最後我沒有成為電子工程師,不過這並不影響我保持對電子的興趣。
當然現在就不需要這麼麻煩了。我要是LZ,先在純粹的麵包板上演示如何點亮LED,如果弟弟表現出很有興趣的樣子可以進一步用樹莓派或Arduino演示如何一閃一閃亮晶晶,然後引導弟弟提出自己的想法,讓他自己提方案猜結果,教他自己改參數看效果。如果真的有興趣,必然會提出很多問題,這時候LZ就可以循序漸進的引導。
Arduino的好處是省事兒,但個人覺得Linux還是應該學一點的,這個看實際興趣吧,先不做定論。如果像我老婆一樣,看了LED的演示之後一臉茫然的問「然後呢」,那就洗洗睡吧。。。主要看你弟弟喜歡電子和計算機兩者哪個更多一些,樹莓派就是一個微型電腦,能通過樹莓派,學習併入門Linux,並對計算機感興趣,確實是個不錯的選擇。推薦最近發現的一本樹莓派入門書籍:零基礎學Raspberry pi 圖文版,簡潔易懂,感覺跟小時候看故事書的似的(=?ω?)?
RPI是個燒了都不心疼的LINUX卡片機 想怎麼玩就怎麼玩
樹莓派,裝個linux,然後用python做個抓包程序,抓取某些人體藝術,然後再寫個自動更改桌面的程序。(捂臉逃~~
你會編程,會python,Java樹莓派很好玩。
玩過單片機,沒玩過樹莓派。
所以我要推薦樹莓派……~(~o ̄▽ ̄)~o 。。。
兩種屬於不同的應用領域。ardiuno資源比較少,更多用在小型機器人的控制,raspberry資源比較多,ardiuno能做的基本都可以(貌似沒有板載的AD),因為速度比較塊,還可以實現圖像處理等複雜運算。
小孩子的話,ardiuno挺好,寓教於樂那要看他有沒有興趣學這個方向了
推薦閱讀:
※「樹莓派」是什麼以及普通人怎麼玩?
※用樹莓派做天氣監控和預測,什麼演算法能實現預測功能?
TAG:單片機 | 樹莓派RaspberryPi |