关于延时函数的简单应用--随机颜色不同速度切换

本文介绍了一种使用JavaScript生成随机颜色并应用于HTML元素的方法。通过定义全局变量和定时器,网页上的指定元素背景色可以按设定的速度进行变化。用户可通过按钮控制颜色变换速度,实现有趣且动态的视觉效果。
<!DOCTYPE html>
<html>
<head>
	<title>改变颜色</title>
	<meta charset="utf-8">
	<style type="text/css">
		#bordercolor{
			width: 400px;
			height: 400px;
			margin: 0 auto;
		}
	</style>
</head>
<body>
	<div id="bordercolor"></div>
	<div style="margin: 20px auto;width: 150px">
		<input type="button" name="" value="+" onclick="add(1);">
		<input type="button" name="" value="开始" onclick="begin();">
		<input type="button" name="" value="-" onclick="add(0);">
	</div>
	<script type="text/javascript">
/*
		//随机颜色
		function randomHexColor() { //随机生成十六进制颜色
			 var hex = Math.floor(Math.random() * 16777216).toString(16); //生成ffffff以内16进制数
			 while (hex.length < 6) { //while循环判断hex位数,少于6位前面加0凑够6位
			  hex = '0' + hex;
			 }
			 return '#' + hex; //返回‘#'开头16进制颜色
		}
*/
		var tar;//定义一个全局的变量
		var speed = 1000;
		//改变颜色的函数
		function changeColor(){
			document.getElementById("bordercolor").style.backgroundColor = randomColor();
		}
		//随机颜色的函数
		function randomColor(){
			var arr = [0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F"];
			var restcolor = "#";
			for(var i = 0; i < 6; i++){
				restcolor = restcolor + arr[Math.floor(Math.random() * 16)];
			}
			return restcolor;
		}
		//开始的按键
		function begin(){
			tar = setInterval(changeColor,speed);
		}
		//加减的按键
		function add(player){
			if (player == 1) {
				clearInterval(tar);
				speed = speed + 1000;
				tar = setInterval(changeColor,speed);
			}else if (player == 0) {
				clearInterval(tar);
				speed = speed - 1000;
				tar = setInterval(changeColor,speed);
			}
		}
	</script>
</body>
</html>
随机颜色的函数,一个借的网上的,一个自己用数组写的。自己写的不好看,网上的更简洁。
在STM32微控制器中,使用外部中断(通常指INT0或EXTI)配合按键控制LED灯的花色变化,可以按照以下步骤操作: 1. **硬件连接**: - 连接按键到STM32的外部中断输入引脚,如PA0或PB0等。 - 将该引脚配置为中断输入模式,并设置成上升沿触发。 - LED灯通过GPIO口驱动,例如PA7或PB6等,用于实现流水灯效果。 2. **软件配置**: - 在STM32 HAL库中初始化中断系统,开启并配置EXTI中断。 - 实现` EXTI_CallbackTypeDef`回调函数,当按键按下时被触发。 ```c void EXTI_GPIO_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line0) != RESET) { // EXTI Line0代表按键引脚 EXTI_ClearITPendingBit(EXTI_Line0); // 清除中断标志 switchLEDs(); // 调用处理按键事件的函数 } } ``` 3. **处理按键事件**: - 定义`switchLEDs()`函数,根据当前按键状态调整LED灯的显示模式。这可能涉及到设置定时器,使LED按某种规律(如逐位亮起、随机闪烁、循环变色等)变换颜色。 ```c void switchLEDs() { static uint8_t patternIndex = 0; static const uint8_t ledColors[4] = {RED, GREEN, BLUE, YELLOW}; // 示例颜色数组 GPIO_ToggleBits(GPIOA, GPIO_Pin_7); // 只是一个示例,替换为实际的LED灯操作 patternIndex++; if (patternIndex >= sizeof(ledColors)) { patternIndex = 0; // 当遍历完所有颜色后回到第一个 } } ``` 4. **启用中断**: - 开启按键中断并在必要时挂起中断服务请求(ISRs),防止中断频繁触发导致程序异常。 5. **相关问题--:** 1. STM32如何避免按键抖动影响中断响应? 2. 如何在STM32中设置延时来实现LED颜色的变化? 3. 如果有多个按键需要控制不同LED,该如何扩展这个电路设计?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值