STM32项目分享:基于stm32的自动升降棋系统

"我们不做一锤子买卖,只做技术成长的长期伙伴!"

目录

一、视频展示

二、项目简介

三、原理图设计

四、PCB硬件设计

五、程序设计

六、资料分享


一、视频展示

基于stm32的自动升降棋系统 -视频分享

二、项目简介

题目:基于stm32的自动升降棋系统

主控:STM32

oled显示

雨滴传感器

步进电机(转动模拟升旗)

JQ8400语音播报

遥控模块

功能:

1、可以一键升旗降旗(升旗时播放国歌,降旗不播放)

2、可以一键升降半旗(不播放)

3、雨滴传感器检测到下雨,自动降旗。

4、屏幕显示当前旗子状态。

5、步进电机正转二圈代表升旗到顶,一圈代表半旗,反之同理。

三、原理图设计

四、PCB硬件设计

五、程序设计

复制代码
#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "lcd.h"
#include "IOput.h"
#include "usart.h"
#include "timer.h"
#include "STEPMOTOR.h"
#include "jq8400.h"   
#include "IRC.h"
#include "adc.h"

extern u8 res;

u8 rain,on_flag=0,half=0;
u8 show_flag,show1_flag,max_wd=30,dec_wd=20,max_sd=60,dec_sd=40;

void beep_()
{
	BEEP=0;
	Delay_50ms(200);
	BEEP=1;
}


int main (void)
{
	delay_init();
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	OLED_Init();
	delay_ms(1);
	OLED_Clear();
	output_init();
	input_init();
	TIM2_Int_Init(71,9999);
	stepmotor_init();
	USART_Config();
	Drv_Hw_Init ();
	Adc_Init();
	while(1)
	{
		Med_Hw_ReadKeyValue();
		rain= 100- Get_Adc_Average(0,10)*100/4096;
		key_scan(1,0,0);
		if(set_flag==1)
		{
			beep_();
			set_flag=0;
			show_flag++;
			if(show_flag>=1)
			{
			show_flag=0;
			}
		}
		if(show_flag==0)
		{
			OLED_ShowCH(0,0,"  自动升旗系统  ");
			OLED_ShowCH(0,2,"雨情:");
			OLED_ShowNum(40,2,rain,2,16);
//			OLED_ShowNum(64,2,remote_val,2,16);
			OLED_ShowCH(0,4,"全旗:");
			OLED_ShowCH(0,6,"半旗:");
			if((add_flag==1 || remote_val==15) && half==0)
			{
				beep_();
				remote_val=0;
				add_flag=0;
				on_flag++;
				if(on_flag>=2)
					on_flag=0;
				OLED_ShowCH(40,4,"运行中");
				if(on_flag==1)
				{
					playsong(1);
					MotorCW(1200,1280);
					MotorStop();
				}
				else if(on_flag==0)
				{
					MotorCCW(1200,1280);
					MotorStop();
				}
			}
			else
			{
				if(remote_val==15)
					remote_val=0;
				add_flag=0;
			}
			if(on_flag==1)
			{
				OLED_ShowCH(40,4,"升起  ");
			}
			else
			{
				OLED_ShowCH(40,4,"收起  ");
			}
			if((dec_flag==1 || remote_val==16 ) && on_flag==0)
			{
				beep_();
				remote_val=0;
				dec_flag=0;
				half++;
				if(half>=2)
					half=0;
				OLED_ShowCH(40,6,"运行中");
				if(half==1)
				{
					MotorCW(1200,640);
					MotorStop();
				}
				else if(half==0)
				{
					MotorCCW(1200,640);
					MotorStop();
				}
			}
			else
			{
				remote_val=0;
				dec_flag=0;
			}
			
			if(half==1)
			{
				OLED_ShowCH(40,6,"升起  ");
			}
			else
			{
				OLED_ShowCH(40,6,"收起  ");
			}
			
			if(rain>=50 && on_flag==1)
			{
				on_flag=0;
				MotorCCW(1200,1280);
				MotorStop();
			}
			else if(rain>=50 && half==1)
			{
				half=0;
				MotorCCW(1200,640);
				MotorStop();
			}
			
			
		}
		
	}
}

六、资料分享

点击即可查看当前资料分享。

相关推荐
FreakStudio2 小时前
MicroPython 内核开发者直接狂喜!这个 Claude 插件市场,把开发全流程做成了「对话式外挂」
python·单片机·嵌入式·面向对象·并行计算·电子diy
天诚智能门锁3 小时前
天诚公租房管控平台CAT.1人脸猫眼智能锁助力青神县公租房管理
人工智能·嵌入式硬件·物联网·智能家居·智能硬件
m0_377108146 小时前
5月1日zzz
单片机
踏着七彩祥云的小丑6 小时前
嵌入式——认识电子元器件——晶体谐振器系列
单片机·嵌入式硬件
玩转单片机与嵌入式6 小时前
TinyML应用场景解析:动作识别!
人工智能·单片机·嵌入式硬件·嵌入式ai·ai+嵌入式
xiangw@GZ6 小时前
智能锁TouchKey的抗干扰设计-1.概述
单片机·嵌入式硬件
这波不该贪内存的6 小时前
嵌入式开发避坑指南
单片机·嵌入式硬件
振南的单片机世界6 小时前
单片机是嵌入设备的“单芯片计算机”
单片机·嵌入式硬件
zhangrelay6 小时前
三分钟云课实践速通--单片机原理与应用--Arduino--SimulIDE--
linux·单片机·嵌入式硬件·学习·ubuntu