找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 690|回復(fù): 11
收起左側(cè)

求大佬寫一個(gè)STM32單片機(jī)按鍵控制流水燈和蜂鳴器

[復(fù)制鏈接]
ID:1151234 發(fā)表于 2025-5-22 01:17 | 顯示全部樓層 |閱讀模式
通過按鍵能夠?qū)崿F(xiàn)對(duì)燈光的啟動(dòng)、關(guān)閉、效果花樣切換功能 3.設(shè)計(jì)要求至少控制8盞LED燈,能夠完成至少四種花樣。能夠?qū)崿F(xiàn)燈光能與蜂鳴器的配合
我試了好多代碼忙了好幾天了還是不行
1000144946.png

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:1091366 發(fā)表于 2025-5-22 08:31 | 顯示全部樓層
按鍵下去一個(gè)燈亮,這個(gè)最簡(jiǎn)單的你完成了嗎
回復(fù)

使用道具 舉報(bào)

ID:1151234 發(fā)表于 2025-5-22 15:13 | 顯示全部樓層
SHH123456 發(fā)表于 2025-5-22 08:31
按鍵下去一個(gè)燈亮,這個(gè)最簡(jiǎn)單的你完成了嗎

這個(gè)我會(huì)但是這個(gè)好難我不會(huì)
回復(fù)

使用道具 舉報(bào)

ID:1151234 發(fā)表于 2025-5-22 15:15 | 顯示全部樓層
我找了好多代碼好多模板去改進(jìn)到最后還是不行,檢測(cè)按鍵按下后,燈就不亮
回復(fù)

使用道具 舉報(bào)

ID:1064915 發(fā)表于 2025-5-23 09:34 | 顯示全部樓層
電路有瑕疵,單片機(jī)是控制,不能驅(qū)動(dòng)
回復(fù)

使用道具 舉報(bào)

ID:1151234 發(fā)表于 2025-5-23 11:25 | 顯示全部樓層
joyb 發(fā)表于 2025-5-23 09:34
電路有瑕疵,單片機(jī)是控制,不能驅(qū)動(dòng)

我是小白大佬幫幫
回復(fù)

使用道具 舉報(bào)

ID:1151327 發(fā)表于 2025-5-23 12:41 | 顯示全部樓層
好簡(jiǎn)單,需要遠(yuǎn)程幫忙調(diào)試不
回復(fù)

使用道具 舉報(bào)

ID:370824 發(fā)表于 2025-5-23 14:51 | 顯示全部樓層
你這個(gè)LED燈接法錯(cuò)誤, 正負(fù)極反了哦
回復(fù)

使用道具 舉報(bào)

ID:554658 發(fā)表于 2025-5-23 15:32 | 顯示全部樓層
是的,LED接反了
回復(fù)

使用道具 舉報(bào)

ID:1151234 發(fā)表于 2025-5-24 01:37 | 顯示全部樓層
已經(jīng)做完了,
回復(fù)

使用道具 舉報(bào)

ID:420836 發(fā)表于 2025-5-26 05:02 | 顯示全部樓層
LED正負(fù)極接反
回復(fù)

使用道具 舉報(bào)

ID:1151681 發(fā)表于 2025-5-26 10:49 | 顯示全部樓層
#include "main.h"  // 定義流水燈引腳 #define LED_PORT GPIOA #define LED_PIN1 GPIO_PIN_0 #define LED_PIN2 GPIO_PIN_1 #define LED_PIN3 GPIO_PIN_2 #define LED_PIN4 GPIO_PIN_3 #define LED_PIN5 GPIO_PIN_4 #define LED_PIN6 GPIO_PIN_5 #define LED_PIN7 GPIO_PIN_6 #define LED_PIN8 GPIO_PIN_7  // 定義蜂鳴器引腳 #define BUZZER_PORT GPIOB #define BUZZER_PIN GPIO_PIN_0  // 定義按鍵引腳 #define BUTTON_PORT GPIOC #define BUTTON_PIN GPIO_PIN_13  // 定義流水燈狀態(tài) uint8_t led_state = 0;  void SystemClock_Config(void); static void MX_GPIO_Init(void);  int main(void) {     HAL_Init(); // 初始化HAL庫(kù)     SystemClock_Config(); // 配置系統(tǒng)時(shí)鐘     MX_GPIO_Init(); // 初始化GPIO      while (1)     {         // 檢測(cè)按鍵是否按下(低電平有效)         if (HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN) == GPIO_PIN_RESET)         {             // 按鍵按下,控制流水燈和蜂鳴器             HAL_Delay(200); // 延時(shí)消抖              // 更新流水燈狀態(tài)             led_state = (led_state + 1) % 8;              // 清除所有流水燈             HAL_GPIO_WritePin(LED_PORT, LED_PIN1 | LED_PIN2 | LED_PIN3 | LED_PIN4 |                                       LED_PIN5 | LED_PIN6 | LED_PIN7 | LED_PIN8, GPIO_PIN_RESET);              // 點(diǎn)亮當(dāng)前流水燈             switch (led_state)             {                 case 0:                     HAL_GPIO_WritePin(LED_PORT, LED_PIN1, GPIO_PIN_SET);                     break;                 case 1:                     HAL_GPIO_WritePin(LED_PORT, LED_PIN2, GPIO_PIN_SET);                     break;                 case 2:                     HAL_GPIO_WritePin(LED_PORT, LED_PIN3, GPIO_PIN_SET);                     break;                 case 3:                     HAL_GPIO_WritePin(LED_PORT, LED_PIN4, GPIO_PIN_SET);                     break;                 case 4:                     HAL_GPIO_WritePin(LED_PORT, LED_PIN5, GPIO_PIN_SET);                     break;                 case 5:                     HAL_GPIO_WritePin(LED_PORT, LED_PIN6, GPIO_PIN_SET);                     break;                 case 6:                     HAL_GPIO_WritePin(LED_PORT, LED_PIN7, GPIO_PIN_SET);                     break;                 case 7:                     HAL_GPIO_WritePin(LED_PORT, LED_PIN8, GPIO_PIN_SET);                     break;             }              // 蜂鳴器發(fā)聲             HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET);             HAL_Delay(100); // 蜂鳴器發(fā)聲100ms             HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET);         }     } }  static void MX_GPIO_Init(void) {     GPIO_InitTypeDef GPIO_InitStruct = {0};      // 使能GPIO時(shí)鐘     __HAL_RCC_GPIOA_CLK_ENABLE();     __HAL_RCC_GPIOB_CLK_ENABLE();     __HAL_RCC_GPIOC_CLK_ENABLE();      // 配置流水燈引腳為輸出模式     GPIO_InitStruct.Pin = LED_PIN1 | LED_PIN2 | LED_PIN3 | LED_PIN4 |                           LED_PIN5 | LED_PIN6 | LED_PIN7 | LED_PIN8;     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;     GPIO_InitStruct.Pull = GPIO_NOPULL;     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;     HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);      // 配置蜂鳴器引腳為輸出模式     GPIO_InitStruct.Pin = BUZZER_PIN;     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;     GPIO_InitStruct.Pull = GPIO_NOPULL;     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;     HAL_GPIO_Init(BUZZER_PORT, &GPIO_InitStruct);      // 配置按鍵引腳為輸入模式,上拉電阻使能     GPIO_InitStruct.Pin = BUTTON_PIN;     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;     GPIO_InitStruct.Pull = GPIO_PULLUP;     HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct); }  void SystemClock_Config(void) {     // 系統(tǒng)時(shí)鐘配置(根據(jù)開發(fā)板實(shí)際情況進(jìn)行配置)     // 這里使用默認(rèn)的系統(tǒng)時(shí)鐘配置 }
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表