發佈日期:

【Arduino】不用模組純代碼實現方波驅動蜂鳴器

瀏覽量:15

【Arduino 知識分享】擺脫模組束縛:純代碼實現 Pin 8 方波驅動蜂鳴器

在 Arduino 的專案開發中,許多初學者習慣購買現成的「蜂鳴器模組」。雖然模組方便,但若能直接透過單片機的 I/O 腳位精確控制方波(Square Wave),不僅能減少硬體體積,更能讓你深入理解頻率與音調的物理關係。

今天我們分享如何透過 Arduino Pin 8 直接輸出方波,在不使用外部驅動模組的情況下,控制一個無源蜂鳴器(Passive Buzzer)發出聲音。

💡 核心知識點

  • 無源蜂鳴器 vs 有源蜂鳴器:有源蜂鳴器通電即響,而無源蜂鳴器需要給予特定頻率的「方波」訊號才能震動發聲。
  • 方波輸出(tone 函式):Arduino 內建的 tone() 函式可以產生指定頻率的方波,其原理是快速切換高低電平(HIGH/LOW)來模擬音調。
  • 硬體精簡:僅需 Arduino 開發板與一個蜂鳴器,正極接 Pin 8,負極接 GND 即可完成實驗。

💻 Arduino.ino 完整範例程式碼

本範例展示如何循環輸出一個 1kHz(1000Hz)的音頻訊號。

/*
 * 專案名稱:Arduino Pin 8 方波驅動蜂鳴器範例
 * 功能說明:不使用外部模組,直接透過代碼控制無源蜂鳴器發聲
 */

const int buzzerPin = 8; // 定義蜂鳴器連接在數位腳位 8

void setup() {
  // 將 Pin 8 設置為輸出模式
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  // 1. 使用內建 tone 函式:頻率 1000 Hz (1kHz),持續 500 毫秒
  tone(buzzerPin, 1000); 
  delay(500); 

  // 2. 停止輸出 500 毫秒
  noTone(buzzerPin);
  delay(500);

  /* 
   * [進階知識] 也可以手動用 digitalWrite 模擬方波:
   * digitalWrite(buzzerPin, HIGH);
   * delayMicroseconds(500); // 1000Hz 的半週期約為 500us
   * digitalWrite(buzzerPin, LOW);
   * delayMicroseconds(500);
   */
}

🛠️ 實作小貼士

  1. 限流保護:為了保護 Arduino 腳位,建議在蜂鳴器正極串聯一個 220Ω ~ 1kΩ 的電阻。
  2. 音調調整:修改 tone(buzzerPin, 頻率) 中的頻率數值,例如 262Hz 為中央 C(Do),440Hz 為標準 A 音(La)。
  3. 多腳位限制:請注意,tone() 函式同一時間只能在一個腳位產生聲音。

這種類型的知識分享對您的有幫助嗎?如果您需要特定的旋律代碼或是進階的硬體接線圖說明,歡迎隨時告知!

發佈日期:

安裝 .NET Framework 是有順序的

瀏覽量:11

.NET Framework 4 可以與舊版的 .NET Framework 並存安裝在單一電腦上。 如果先前已在電腦上啟用 IIS,.NET Framework 的安裝程序就會自動在 IIS 註冊 ASP.NET 4。 不過,如果在啟用 IIS 之前安裝 .NET Framework 4,您必須執行 ASP.NET IIS 註冊工具,才能在 IIS 註冊 .NET Framework,並建立使用 .NET Framework 4 的應用程式集區。

錯誤範例動作:先安裝了.NET Framework4.0 => 安裝IIS角色又裝了.NET Framework 3.5,然後網站就出現:

無法從組件 ‘System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’ 載入型別 ‘System.ServiceModel.Activation.HttpModule’。

解決步驟如下:
1.開啟命令提示字元視窗。
2.然後指定作業路徑至C:\Windows\Microsoft.NET\Framework\v4.0.30319。
3.輸入【aspnet_regiis -i】後按ENTER。
4.再到IIS重新啟動 (iisreset)!

相關連結:
ASP.NET IIS 註冊工具(Aspnet_regiis.exe)

發佈日期:

php is_numberic函式造成的SQL隱碼攻擊漏洞

瀏覽量:7

php is_numberic函式造成的SQL隱碼攻擊漏洞

is_numberic 函式結構 bool is_numeric (mixed $var)
如果 var 是數字和數字字串則返回 TRUE,否則返回 FALSE。

接下來看個例子,說明這個函式是否安全。
複製程式碼 程式碼如下:

$s = is_numeric($_GET[‘s’])?$_GET[‘s’]:0;
$sql=”insert into test(type)values($s);”; //是 values($s) 不是values(‘$s’)
mysql_query($sql);

這個片段程式是判斷引數s是否為數字,是則返回數字,不是則返回0,然後帶入資料庫查詢。(這樣就構造不了sql語句)
我們把‘1 or 1′ 轉換為16進位制 0x31206f722031 為s引數的值,程式執行後,再重新查詢這個表的欄位出來,不做過濾帶入另一個SQL語句,將會造成2次注入。

總結
儘量不要使用這函式,如果要使用這個函式,建議使用規範的sql語句,條件加入單引號,這樣16進位制0x31206f722031就會在資料庫裡顯示出來。而不會出現1 or 1。

發佈日期:

PDO (PHP Data Object)

瀏覽量:13

PHP7已經不支援MySQL系列函數,而是改用MySQLi,或者PDO物件。

PDO是PHP5新加入的一個重大功能,因為在PHP5以前的php4/php3都是一堆的數據庫擴展來跟各個數據庫的連接和處理,無比煩瑣和低效。

mysql()指令集在php5.5之後是建議不要使用,而php7正式移除。
你現在如果還在用那個指令集未來可能會遇到不支援或無法維護,所以強烈建議無論如何改使用pdo。雖然會多花一些學習時間,但對未來是好的。

發佈日期:

[PHP] 強制使用https連線

瀏覽量:11

Google早已宣告將於2017年1月開始,在Google Chrome瀏覽器第56版,直接將沒有採用SSL安全認證的網站標示為「不安全」,並且在2014年就宣告,網站有導入SSL安全認證(HTTPS)服務,將會獲得優先收錄與優先排名,這就確定了未來網站都要導入SSL安全認證(HTTPS)服務,這更是搜尋引擎行銷必備條件之一。

所以網站的頁面,我們需要強制使用者使用https加密連線,也可來保護使用者輸入的資料。

這時可利用以下兩種檢查方式加上重新導向來達到:

檢查$_SERVER[“HTTPS”]

if(empty($_SERVER["HTTPS"])) {
$https_login = "https://" . $_SERVER["SERVER_NAME"] . '/login' ;
header("Location: $https_login");
exit();
}

檢查$_SERVER[“SERVER_PORT”]

if($_SERVER["SERVER_PORT"] != '443' ) {
$https_login = "https://" . $_SERVER["SERVER_NAME"] . '/login' ;
header("Location: $https_login");
exit();
}