Tinkercad Circuits:Temperature controlled fan(溫控電風扇)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

前言(Preface):
炎炎夏日,不想手動調整電風扇,那就自己做個智慧型的風扇吧!只要用溫度感測器以及控制馬達的電子材料就可以完成隨著溫度變化自動調整風扇速度的「智慧風扇」了。
Do you want a smart electric fan? Let's try to build one with Arduino!

材料(Materials):
  • Arduino UNO R3 板子 x 1
  • 麵包板 Breadboard small x1
  • 直流馬達 DC motor x1
  • 溫度感測器 Temperature sensor x1
  • 杜邦線 jumper wire x 11
  • nMOS Transistor(MOSFET) x1
  • 10K歐姆電阻 x1


電路(Circuit):

The temperature sensor Vout pin is connected to arduino pin A3.
The MOSFET gate pin is connected to arduino pin 6.


程式碼(The Code):


示範影片(Demo Video):


範例連結(Example Link):
https://www.tinkercad.com/things/4GAVQvmKai0

成功者必須經歷的八節生存課

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

底下為節錄自《狼學》一書的附錄。

成功者必須經歷的八節生存課
第一課:「畏懼」
害怕「高度」和「難度」--> 「這件事我行嗎?」
關鍵:平衡心態,看淡得失。

第二課:「失落」
由恐懼導致退縮,不敢去做,從而產生嚴重的失落感。
關鍵:理性期待,拒絕天真。

第三課:「逃避」
選擇性無視現實,尋找安全的地方進行逃避:「啊,那件事我早忘了,別煩我!」他們一邊玩遊戲,一邊這樣告訴你。
關鍵:直面困難,承擔責任,並且戰勝自己的「拖延症」。

第四課:「清醒」
總有一天,他需要看清現實,明白自己站在什麼位置--或許是懸崖邊上?
關鍵:做好自我定位,始終保持頭腦清醒。

第五課:「行動」
要發現自己必須做什麼,並且充滿立刻行動的力量。
關鍵:使目標擁有可行性,並且確立優先順序。

第六課:「自省」
審視自身的意識、角度和頻率。
關鍵:讓自己養成定期反思和總結的良好習慣。

第七課:「樂觀」
我們看到的是未來的太陽,而不是眼前的黑夜。我們看到花落,要想到明天花還會開,而且堅信一定會開。
關鍵:養成正面思考的習慣,並培養自己樂觀的心態。

第八課:「堅持」
即便預期計畫沒有效果,也能鼓勵自己堅持下去,但有幾個人能真正做到呢?
關鍵:預料到問題,並且提前制定應對計畫,才是能夠堅持到底的最大保證。

如何突破思維定勢
  1. 想要打破常規,就要標新立異。
  2. 願意讓自己有一個好的改變。
  3. 當路走不通時,懂得繞行。

函數是什麼? What is a function ?

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

底下的影片說明了什麼是函數。

Wikipedia對函數的說明裡有張圖:

那我們可以把函數想成是飲料販賣機,我們投了20元新台幣(x)販賣機(函數)只會得到一瓶20元的飲料( 輸出值 y 等於f(x) )。記得只會得到一瓶喔(一個輸出值y),如果販賣機跑出兩瓶20元的飲料時,那就代表販賣機(函數)問題了!

在Lubuntu上使用qemu建立模擬樹莓派環境

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

筆者所用的OS系統為Lubuntu 18.10。首先要安裝arm版本的qemu,指令如下:
sudo apt install qemu-system-arm

會需要三個檔案:
Raspbian Stretch Lite image
Linux Kernel(kernel-qemu-4.14.50-stretch)
Device Tree Blob(versatile-pb.dtb)

註:當然可以使用有桌面環境的Raspbian Stretch with desktop

筆者將kernel-qemu-4.14.50-stretch與versatile-pb.dtd放bootpart資料夾下:

接著執行底下指令:
qemu-system-arm -kernel bootpart/kernel-qemu-4.14.50-stretch -dtb bootpart/versatile-pb.dtb -m 256 -M versatilepb -cpu arm1176 -serial stdio -append "rw console=ttyAMA0 root=/dev/sda2 rootfstype=ext4 loglevel=8 rootwait fsck.repair=yes memtest=1" -drive file=2019-04-08-raspbian-stretch-lite.img,format=raw -redir tcp:5022::22 -no-reboot

執行結果畫面:

Arduino IDE 內建的 8x8 LED Matrix 動畫控制

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本文所用到的材料為:
  • Arduion UNO x 1
  • MAX7219 點矩陣模組 x 1
  • 杜邦線公對母 x 10
軟體為 Arduino IDE 1.8.5搭配LedControl程式庫。

安裝LedControl程式庫
打開Arduino 的程式庫管理工具(草稿碼 ==> 匯入程式庫 ==> 管理程式庫)

搜尋LedControl並安裝

安裝好LedControl就可以看到內建的範例程式


8x8 LED Matrix接上Arduino的電路

  • Arduino pin 12 接 DataIn 
  • Arduino pin 11 接 CLK 
  • Arduino pin 10 接 CS

接好電路後,筆者使用【檔案 ==> 範例 ==> LedControl ==> LCDemoMatrix】來試試看,影片如下:



LeetCode OJ:1.Two Sum

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

原文題目連結:https://leetcode.com/problems/two-sum/
題目的意思是要從一列數字中找出兩個數字的總和等於指定的數字,但得指出此兩數字在原來陣列的位置為何。

例如:
指定的數字為:9
數列為:【1, 3, 4, 7, 9, 2, 10】。
因為只會找到 7 + 2 = 9,而7在索引[3]的位置,2在索引[5],所以答案為[3, 5]

而筆者一開始也是使用暴力法(Brute Force)來解題,解完後看了一下https://leetcode.com/problems/two-sum/solution/ 才知道還有Two-pass Hash Table與One-pass Hash Table等解法,於是自己理解後,用C++的語言來實作囉,底下列出連結給讀者參考。

Two-pass Hash Table:
https://gist.github.com/pinglunliao/4b0e75dfde7d39468449a8f569dbfdbb

One-pass Hash Table;
https://gist.github.com/pinglunliao/f2e024ba28aa414640e3ebd45eead40e