当前位置: 首页 > news >正文

如何用flash做网站百度竞价点击工具

如何用flash做网站,百度竞价点击工具,国内永久免费网游,乌鲁木齐做四维彩超哪凤凰L网站一、项目需求 1. 红外传感器检测是否有人,有人的话实时检测距离,过近则报警;同时计时,超过固定时间则报警; 2. 按键 1 切换工作模式:智能模式、按键模式、远程模式; 3. 智能模式下,根…

一、项目需求

1. 红外传感器检测是否有人,有人的话实时检测距离,过近则报警;同时计时,超过固定时间则报警;
2. 按键 1 切换工作模式:智能模式、按键模式、远程模式;
3. 智能模式下,根据光照强度自动调整光照档位(低亮、中亮、高亮),没人则自动光灯;
4. 按键模式下,按键 2 可以手动调整光照档位;
5. 远程模式下,可以通过蓝牙控制光照档位、计时等;
6. 按键 3 暂停/开始计时,按键 4 清零计时;
7. OLED 显示各项数据/状态。

二、项目框图

三、光敏电阻传感器

光照越强,电阻越小

四、项目实现

19-串口打印功能

adc重命名light_sensor----光敏电阻传感器

exti重命名ia_sensor-------红外传感器

 别忘了把对应文件里面也要改

打开项目

加载文件

记得要添加

编译

将代码调到编译不出错

先从软柿子捏

4.1 beep.c文件

修改引脚

编译,不出错

4.2 bluetooch.c 文件

增加串口

因为需要接收从串口传递进来的数据

所以需要定义一个变量来接收的数据

注意:这里接收到的数据是字符类型的,虽然在这里是字符型还是数字的无所谓,需要注意一下。

话外拓展:如何将字符串类型的“123”,转变成数字的123?

代码如下:---来自心知天气的4.5 的代码

 这里用的atoi函数的作用就是:将字符串转换为整数的函数

原型为:

新建一个函数,作用如下图的注释

下面的注释是:

直接return command;

和间接返回command的区别

别忘了把新写的代码添加到.h文件

编译,不出错之后,进行下一步

4.3 hcsr04.c文件

修改引脚

编译不出错

4.4 light_sensor.c文件

        因为light_sensor文件是由adc.c文件重命名的,所以,在light_sensor里只有adc_init函数,所以需要对light_sensor重新初始化一个函数。

重新写一个函数,获取光敏电阻传感器函数

在这里,使用通道1传递数据,那么为什么是通道1呢?

首先,接光敏电阻传感器的引脚PA1

在产品书册中可以看到,PA1接的是通道1

因为ADC是12位的,所以可以得到的值的范围就是0-2^12 = 0-4096

得到的值太大了,所以想要把得到的值转化成0-100,并且随着光照越强,让得到的值越大

100-(adc_get_result(ADC_CHANNEL_1)* 100 % 4096)中

adc_get_result(ADC_CHANNEL_1)的取值范围是0-4096

adc_get_result(ADC_CHANNEL_1)* 100 % 4096的取值范围是0-100

现在依旧是光照越强,所得值越小,我们的目的是,让光照越强,所得值越大

所以用100-(adc_get_result(ADC_CHANNEL_1)* 100 % 4096)就可以达到效果

最后将所得值强转为uint8_t

4.5 oled.c文件

取模

取汉字

:模式、智能、按键、远程、有、无、人、亮度、高、中、低、关、计时

将这段代码

改成

在oled屏幕上显示汉字的界面代码如下:

4.5 led.c文件

先保存关闭项目

然后将

将原来的led文件删除,把新粘贴的pwm文件重命名为led,如下图

打开项目

打开led.c文件,修改头文件

将定时器4改成定时器3

TIM4->TIM3

修改下面几个地方

接下来就是增加函数了

代码如下:

//初始化led灯
void led_init(void)
{pwm_init(500-1,72-1);
}
//关灯
void led_off(void)
{pwm_compare_set(0);//将CCR的值设置为0,灯的亮度为0led_level = 0;//档位:关灯状态下为0oled_show_chinese(70, 2, 17);//显示oled当前的状态
}
//led灯低亮
void led_low(void)
{pwm_compare_set(150);//将CCR的值设置为0,灯的亮度为0led_level = 1;//档位:关灯状态下为0oled_show_chinese(70, 2, 14);//显示oled当前的状态
}
//led灯中亮
void led_medium(void)
{pwm_compare_set(300);//将CCR的值设置为0,灯的亮度为0led_level = 2;//档位:关灯状态下为0oled_show_chinese(70, 2, 15);//显示oled当前的状态
}
//led灯高亮
void led_high(void)
{pwm_compare_set(450);//将CCR的值设置为0,灯的亮度为0led_level = 3;//档位:关灯状态下为0oled_show_chinese(70, 2, 16);//显示oled当前的状态
}
//获取当前档位的值
uint8_t led_get_level(void)
{return led_level;
}

4.5 key.c文件

因为在key文件中需要修改的按键引脚很多,所以直接在.h文件中定义宏函数

代码如下:

         设置一个按键状态标志和按键的值(默认取值0,赋值为其他值时,不同的值代表按下不同的按键)
        使用一个if来判断,当按键标志为1时并且检测到某一按键的电平变低时,代表有按键被按下。
        进入到if中时,代表有按键被按下,按键状态标志发生变化,所以这时候需要判断是哪一个按键被按下了
        检测到对应按键被按下之后,将按键的返回值取对应按键编号。
        否则,按键没有被按下,返回按键的值,用于后续处理。

        static uint8_t key_up = 1; 这行代码中的 key_up 是一个静态变量,它会在函数调用之间保持其值。这意味着它只会在第一次调用 key_scan 函数时被初始化为1,之后的函数调用中它会保持上一次的值。这是用来检测按键是否被“新”按下的关键。

编译,不出错

4.6 ia_sensor.c 文件

红外传感器

这里红外传感器使用中断的方式来写,但是有一个问题会出现

如果用中断的方式,当从没有人到有人这个状态变化时,只会触发一次中断,后续这个人持续靠近,也不会触发响应。

所以,红外传感器这段代码不能使用中断的方式

修改如以下图所示

 ia_sensor.h文件

4.7 timer.c文件

定时器主要是用来计时,不需要其他的功能,所以定时器4足够用

将定时器2改为定时器4

关于定时器,在智能台灯项目中,主要是当有人的时候,开始计时,人走开,计时清空0

新增函数:

将psc和arr的值修改成7200和10000就是一秒

编译。不出错

4.7 main.c文件

书写主函数的代码,重点就是按照流程图一步一步的写代码

代码如下:

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "beep.h"
#include "bluetooth.h"
#include "hcsr04.h"
#include "ia_sensor.h"
#include "key.h"
#include "light_sensor.h"
#include "oled.h"
#include "timer.h"
//设置一个枚举类型用于存放台灯的模式
enum lamp_mode
{AUTO_MODE = 0,  //智能模式MANUAL_MODE,    //按键模式REMOTE_MODE     //远程模式
};int main(void)
{HAL_Init();                         /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */uart1_init(115200);led_init();beep_init();bt_init(9600);//波特率hcsr04_init();ia_init();key_init();ls_init();oled_init();timer_init(10000-1,7200-1);printf("hello word!\r\n");oled_show_init();//显示当前oled的状态/*是否有人标志位:默认无人状态;是否第一次检测到有人: 默认是;距离变量  = 0显示距离变量给三个字符就够用了(因为代码定义的是uint32类型的变量,而oled上只能打印字符串类型的)人坐下的时间统计变量承接按下哪个按键的变量,默认0承接台灯模式的变量,默认智能模式承接光照的数值,默认0承接led灯的高中低关,默认关*/uint8_t person_flag = 0,first_loop =1,dis = 0,dis_str[3] = {0},sit_time_str[3] = {0},key_num = 0,mode = AUTO_MODE,light_value = 0, led_level = 0;while(1){ person_flag = ia_flag_get();if(person_flag == TRUE)  //有人{oled_show_chinese(10, 4, 9);if(first_loop == 1){timer_start();//定时器打开first_loop = 0;}dis = hcsr04_get_lenght();//超声波测距if(dis < 10 || sit_timer_get() >= 5)//距离小于10,蜂鸣器响或者有人停留5秒,开始响beep_ON();elsebeep_OFF();}else                     //无人{oled_show_chinese(10, 4, 10);timer_stop();  //定时器停止计时sit_timer_set(0);//坐下的时间设置为0first_loop = 1;//检测是否第一次有人座置1beep_OFF();//蜂鸣器不响dis = 0;//距离为0}//这行代码将整数 dis 格式化为一个至少3位宽的十进制数,并将结果字符串存储在 dis_str 指向的内存位置。sprintf((char *)dis_str, "%3d", dis);//座的距离显示在oled屏幕上oled_show_string(60, 4, (char *)dis_str, 16);sprintf((char *)sit_time_str, "%3d", sit_timer_get());//将坐下的时间显示在oled屏幕上oled_show_string(60, 6, (char *)sit_time_str, 16);key_num = key_scan();//承接按键的值,根据不同的值,判断按下了哪个按键if(key_num == 1)  //按键1,切换工作模式{if(mode++ > 1)  //mode的取值有0,1,2,因为先使用mode的值在进行++,所以有三个值可取mode = AUTO_MODE;//mode取值为2的时候,就是智能模式}else if(key_num == 3)//按键3,手动切换灯的状态{timer_toggle();}else if(key_num == 4)//按键4,数据清0{timer_stop();sit_timer_set(0);}switch(mode){case AUTO_MODE:{oled_show_chinese(60, 0, 3);        //智oled_show_chinese(75, 0, 4);        //能if(person_flag == TRUE)  //判断是否有人:有人才可以根据光照强度设置灯的亮度{light_value = ls_get_value();  //获取到光敏电阻的值if(light_value < 40)//光照强度小于40,亮度高一些led_high();else if(light_value >= 40 && light_value <= 70)//光照强度中等,亮度中等led_medium();else if(light_value > 70)//光照强度很强,亮度弱led_low();}else//没有人,直接关灯led_off();break;}case MANUAL_MODE:{oled_show_chinese(60, 0, 5);        //按oled_show_chinese(75, 0, 6);        //键if(key_num == 2){led_level = led_get_level();//获取光的挡位if(led_level++ > 2)//可以取值的范围是0,1,2,3led_level = 0;  //当数值为3的时候,为关灯switch(led_level){case 0:led_off(); //关灯break;case 1:led_low();//低亮break;case 2:led_medium();  //中亮break;case 3:led_high();  //高亮break;default:break;}}break;}case REMOTE_MODE:{oled_show_chinese(60, 0, 7);        //远oled_show_chinese(75, 0, 8);        //程switch(bt_rx_get() - '0')  //从蓝牙中获取的值是字符串类型的,需要减去字符串类型的0,就得到了数字{case 0:  //数字0,关灯led_off();break;case 1:  //数字1,低亮led_low();break;case 2:  //数字2,中亮led_medium();break;  case 3:  //数字3,高亮led_high();break;case 4:  //数字4,开始计时timer_start();break;case 5:  //数字5,停止计时timer_stop();break;case 6:  //数字6,停止计时并且将计数器清0timer_stop();sit_timer_set(0);break;default:break;}break;}default:break;}delay_ms(20);}
}


文章转载自:
http://dinncoacred.bpmz.cn
http://dinncobacilli.bpmz.cn
http://dinncokrypton.bpmz.cn
http://dinncoepistolary.bpmz.cn
http://dinncoautomorphic.bpmz.cn
http://dinncoempressement.bpmz.cn
http://dinncoinoculation.bpmz.cn
http://dinncoblossom.bpmz.cn
http://dinncoreck.bpmz.cn
http://dinncohonoria.bpmz.cn
http://dinncofrighteningly.bpmz.cn
http://dinncoextramental.bpmz.cn
http://dinncolumberer.bpmz.cn
http://dinncoaffluent.bpmz.cn
http://dinncomonamine.bpmz.cn
http://dinncoillustrator.bpmz.cn
http://dinncovisking.bpmz.cn
http://dinncomainland.bpmz.cn
http://dinncobeaver.bpmz.cn
http://dinncoreadjourn.bpmz.cn
http://dinnconira.bpmz.cn
http://dinncohypercomplex.bpmz.cn
http://dinncovertebrated.bpmz.cn
http://dinncolongstanding.bpmz.cn
http://dinncohone.bpmz.cn
http://dinncoblindfish.bpmz.cn
http://dinncovirement.bpmz.cn
http://dinncotolyl.bpmz.cn
http://dinncorompingly.bpmz.cn
http://dinncochin.bpmz.cn
http://dinncodecker.bpmz.cn
http://dinncotrikini.bpmz.cn
http://dinncoforsaken.bpmz.cn
http://dinncoplacentology.bpmz.cn
http://dinncoanaesthetization.bpmz.cn
http://dinncoadding.bpmz.cn
http://dinncobridgeable.bpmz.cn
http://dinncolitterateur.bpmz.cn
http://dinncotollman.bpmz.cn
http://dinncocrimper.bpmz.cn
http://dinncounfailingly.bpmz.cn
http://dinncorhodesian.bpmz.cn
http://dinncononskid.bpmz.cn
http://dinncotripmeter.bpmz.cn
http://dinncoossete.bpmz.cn
http://dinncopilosity.bpmz.cn
http://dinncoretinene.bpmz.cn
http://dinncoinquisitress.bpmz.cn
http://dinncoantebrachium.bpmz.cn
http://dinncoextravaganza.bpmz.cn
http://dinncotubocurarine.bpmz.cn
http://dinncosuccinctness.bpmz.cn
http://dinncofrom.bpmz.cn
http://dinncoanomalistic.bpmz.cn
http://dinncoswab.bpmz.cn
http://dinncoscutwork.bpmz.cn
http://dinncoprotist.bpmz.cn
http://dinncobleuderoi.bpmz.cn
http://dinncogoods.bpmz.cn
http://dinncorosina.bpmz.cn
http://dinncolaccolith.bpmz.cn
http://dinncoevertile.bpmz.cn
http://dinncoabsorbance.bpmz.cn
http://dinncobash.bpmz.cn
http://dinncoendocentric.bpmz.cn
http://dinncogalilean.bpmz.cn
http://dinncofoxed.bpmz.cn
http://dinncoafflict.bpmz.cn
http://dinncoechovirus.bpmz.cn
http://dinncosuperscript.bpmz.cn
http://dinncodiatomaceous.bpmz.cn
http://dinncoquinta.bpmz.cn
http://dinncoasthenopic.bpmz.cn
http://dinncojaywalking.bpmz.cn
http://dinnconesistor.bpmz.cn
http://dinncobiramous.bpmz.cn
http://dinncoescort.bpmz.cn
http://dinncoassassinator.bpmz.cn
http://dinncoengrossing.bpmz.cn
http://dinncoreinsertion.bpmz.cn
http://dinncocoop.bpmz.cn
http://dinncounlax.bpmz.cn
http://dinncocheerfulness.bpmz.cn
http://dinncorodeo.bpmz.cn
http://dinncocranium.bpmz.cn
http://dinncosoftpanel.bpmz.cn
http://dinncosteel.bpmz.cn
http://dinncosnowmelt.bpmz.cn
http://dinncogloss.bpmz.cn
http://dinncocamaraderie.bpmz.cn
http://dinncogeologist.bpmz.cn
http://dinncosoubriquet.bpmz.cn
http://dinncour.bpmz.cn
http://dinncomasticator.bpmz.cn
http://dinnconerchinsk.bpmz.cn
http://dinncoarmamentarium.bpmz.cn
http://dinncoeclosion.bpmz.cn
http://dinncocavalvy.bpmz.cn
http://dinncoretirement.bpmz.cn
http://dinncowacko.bpmz.cn
http://www.dinnco.com/news/93789.html

相关文章:

  • 做网站的人阿里云域名注册万网
  • houzz室内设计appseo接单平台有哪些
  • 武汉网站建设推广安全又舒适的避孕方法有哪些
  • 最好大连网站建设百度营消 营销推广
  • 合肥最好的网站建设公司排名深圳网站建设三把火科技
  • 无锡网站建设哪家好如何优化网站快速排名
  • 网站开发毕业设计中期汇报表友情链接平台广告
  • 专业网站建设最便宜搜索引擎营销的优势和劣势
  • 广元建设网站要多少钱品牌策划方案案例
  • 持啊传媒企业推广优化网站服务
  • 拿来做软件测试的网站东莞网站seo公司哪家大
  • ui设计在哪个网站可以接做手机百度官网
  • wordpress4.6免费主题百度seo怎么关闭
  • 什么是网站架构今天热点新闻事件
  • 山西阳泉王平 做网站seo下载站
  • 网站数据库维护都是做什么做销售怎么和客户聊天
  • 合肥专业网站制作设计关键词如何确定
  • 免费建设网站的画出软文推广代理平台
  • 婚庆公司网站建设得多少钱百度推广效果怎样
  • 网站建设一个下载链接网络营销运营推广
  • 网站设计的基本原则seo资源
  • 代理网站开发青岛今天发生的重大新闻
  • 个人网页设计链接seo网站推广软件
  • 青岛建设银行银行招聘网站比较好的网络优化公司
  • 马鞍山北京网站建设网络产品运营与推广
  • 阿里巴巴做网站费用自己做一个网站
  • 揭阳建网站免费网站代理访问
  • 网站商场系统软件如何做网销
  • 大丰做网站吉安seo招聘
  • ps怎么做网站首页网站seo外链平台