hdu物联网硬件实验3 按键和中断

学院

班级

学号

姓名

日期

成绩

实验题目

按键和中断

实验目的

实现闪灯功能转换

硬件原理

关键代码及注释

/*

  Button

 Turns on and off a light emitting diode(LED) connected to digital  

 pin 13, when pressing a pushbutton attached to pin 2.

 The circuit:

 * LED attached from pin 13 to ground

 * pushbutton attached to pin 2 from +3.3V

 * 10K resistor attached to pin 2 from ground

 * Note: on most Arduinos there is already an LED on the board

 attached to pin 13.

 created 2005

 by DojoDave <http://www.0j0.org>

 modified 30 Aug 2011

 by Tom Igoe

 modified Apr 27 2012

 by Robert Wessels

 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/Button

 */

// constants won't change. They're used here to

// set pin numbers:

const int buttonPin = PUSH2;     // the number of the pushbutton pin

const int ledPin1 =  GREEN_LED;      // the number of the LED pin

const int ledPin2 =  YELLOW_LED;

const int ledPin3 =  RED_LED;

int ledState = LOW;

int ledState1 = LOW;

int ledState2 = LOW;

int ledState3 = LOW;

volatile bool state = HIGH;

int count = 0;

// variables will change:

int buttonState = 0;         // variable for reading the pushbutton status

long previousMillis = 0;        // will store last time LED was updated

long term = 0;

// the follow variables is a long because the time, measured in miliseconds,

// will quickly become a bigger number than can be stored in an int.

long interval = 1000;  

void setup() {

  // initialize the LED pin as an output:

  pinMode(ledPin1, OUTPUT);      

  pinMode(ledPin2, OUTPUT);

  pinMode(ledPin3, OUTPUT);

  //digitalWrite(ledPin,state);

  pinMode(buttonPin,INPUT_PULLUP);

  attachInterrupt (buttonPin ,blink ,RISING);

}

void blink(){

  state = !state;

}

void loop(){

  unsigned long currentMillis = millis();

  

  if(state==HIGH){

  if(currentMillis - previousMillis > interval) {

    // save the last time you blinked the LED

    previousMillis = currentMillis;   

    // if the LED is off turn it on and vice-versa:

    if (ledState == LOW)

      ledState = HIGH;

    else{

      ledState = LOW;

      

      }

    // set the LED with the ledState of the variable:

 digitalWrite(ledPin1, ledState);

 digitalWrite(ledPin2, ledState);

 digitalWrite(ledPin3, ledState);

 }

}

else{

  if(currentMillis - previousMillis > interval) {

    previousMillis = currentMillis;  

    if (ledState1 == LOW && ledState2 == LOW && ledState3 == LOW)

      ledState1 = HIGH;

    else if(ledState1 == HIGH){

      ledState1 = LOW;

      ledState2 = HIGH;

      }

     else if(ledState2 == HIGH){

      ledState2 = LOW;

      ledState3 = HIGH;

             

      }

      else if(ledState3 == HIGH){

      ledState3 = LOW;

      ledState1 = HIGH;

     

      }

 digitalWrite(ledPin1, ledState1);

 digitalWrite(ledPin2, ledState2);

 digitalWrite(ledPin3, ledState3);

  }

}

}

实验步骤

在上次作业基础上加上了按钮,中断

实验结果

思考与反馈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI端侧大模型未来发展趋势

一、定义与优势 端侧AI大模型是指基于移动终端设备上的大型神经网络模型&#xff0c;这些模型能够在本地设备&#xff08;如智能手机、PC、汽车、XR以及物联网设备等&#xff09;上直接运行和处理人工智能算法&#xff0c;实现如图像识别、语音识别、自然语言处理等任务。端侧…

解决WSL2报错:当前电脑配置不支持WSL2,请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化

事情要追溯到突发奇想下载了腾讯的手游模拟器开始。。。因为一直闪退&#xff0c;模拟器自检就要求把虚拟化功能关闭了&#xff0c;结果还是一直闪退&#xff0c;WSL2也给我报错了。。。大无语 主要通过以下两个步骤解决&#xff0c;操作了之后需要把电脑重启&#xff1a; 一、…

docker里日志分割的方法

在Docker中对日志进行按大小分割&#xff08;log rotation&#xff09;是一个常见的需求&#xff0c;因为长时间运行的容器可能会生成大量日志&#xff0c;导致磁盘空间不足。Docker提供了内置的日志管理功能&#xff0c;可以通过配置日志驱动来实现日志的自动分割。以下是具体…

安卓系统裁剪原生app

目录 前言一、修改build目录main.mk二、修改build目录product.mk三、在.mk中使用PRODUCT_DEL_PACKAGES属性 前言 安卓系统裁剪预置应用或服务基本步骤 一、修改build目录main.mk ifdef FULL_BUILD# The base list of modules to build for this product is specified# by th…

小程序做自定义分享封面图,Canvas base64图片数据真机上不显示?【已解决】

首选说一下需求&#xff0c;做一个小程序分享&#xff0c;但是封面图要自定义&#xff0c;除了要有对应商品还有有背景图&#xff0c;商品名。类似这种 实现逻辑&#xff0c;把商品图和背景图&#xff0c;再加上价格和商品名用canvas 渲染出来 这是弄好之后的效果图&#xff0…

管理者要勇敢做“坏人”

有点正义感的人都对坏人深恶痛绝&#xff0c;但在团队管理上&#xff0c;有一种观念或许会让你感到意外&#xff0c;那就是管理者要敢于做“坏人”。这并不是让管理者去做恶&#xff0c;而是在某些关键时刻&#xff0c;要有勇气打破常规的“好人”形象&#xff0c;做出不受欢迎…

执行数据库语句时没有报错,并且提示执行成功,但在数据库中没有新增数据

这可能是因为你没有提交事务。在执行 INSERT、UPDATE 或 DELETE 等修改数据的操作后&#xff0c;需要明确地提交事务才能将更改持久化到数据库中。 以下是一个示例&#xff0c;展示python中如何在执行 INSERT 语句后提交事务&#xff1a; import pymysql# MySQL数据库连接配置…

SpringSecurity中文文档(Servlet Method Security)

Method Security 除了在请求级别进行建模授权之外&#xff0c;Spring Security 还支持在方法级别进行建模。 您可以在应用程序中激活它&#xff0c;方法是使用EnableMethodSecurity 注释任何Configuration 类&#xff0c;或者将 < method-security > 添加到任何 XML 配…

springbootAl农作物病虫害预警系统-计算机毕业设计源码21875

摘要 随着农业现代化的推进&#xff0c;农作物病虫害的防治已成为农业生产中的重要环节。传统的病虫害防治方法往往依赖于农民的经验和观察&#xff0c;难以准确、及时地预测和防控病虫害的发生。因此&#xff0c;开发一种基于现代信息技术的农作物病虫害预警系统&#xff0c;对…

【计算机毕业设计】012基于微信小程序的科创微应用平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Python数据分析实战,公交车站点设置优化分析,案例教程编程实例课程详解

一、引言 随着城市化进程的加快,公共交通在城市交通中扮演着越来越重要的角色。公交车站点作为公共交通系统的重要组成部分,其布局设计直接影响到公共交通的运输效率和市民的出行体验。本文将通过Python数据分析的方法,对某城市的公交车站点设置进行优化分析,旨在提出合理的…

解决vite 断点调试定位不准确问题

问题&#xff1a;vite构建时&#xff0c;控制台报错行数等信息定位不准确或debugger断点调试定位不准确 解决&#xff1a;F12后打开设置面板&#xff0c;把“JavaScript源代码映射”去掉可临时解决&#xff0c;如需永久解决需升级vite到最新版 还有一种&#xff1a; 参考&…

esp32_spfiffs

生成 spiffs image python spiffsgen.py <image_size> <base_dir> <output_file> eg, python spiffsgen.py 0x2000 ./folder hello.bin Arduino 的库有例子可以直接用于 OTA 升级 spiffs 分区 HTTPUpdateResult HTTPUpdate::updateSpiffs(HTTPClient &h…

7.9 cf div3

BProblem - B - Codeforces 题目解读&#xff1a; 找到严格大于相邻数字的数&#xff0c;将其减一&#xff0c;直到整个数组成为稳定的&#xff08;不存在数字严格大于相邻数&#xff09; ac代码 #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_w…

免费白嫖A100活动开始啦,InternLM + LlamaIndex RAG 实践

内容来源&#xff1a;Docs 前置知识&#xff1a; 检索增强生成&#xff08;Retrieval Augmented Generation&#xff0c;RAG&#xff09; LlamaIndex LlamaIndex 是一个上下文增强的 LLM 框架&#xff0c;旨在通过将其与特定上下文数据集集成&#xff0c;增强大型语言模型&a…

如何选择可靠的三方支付公司?

选择可靠的三方支付公司需要考虑以下几个方面&#xff1a; - 资质和信誉&#xff1a;确保支付公司具有合法的资质和良好的信誉&#xff0c;可以查看其营业执照、支付业务许可证等相关证件。 - 安全性&#xff1a;了解支付公司的安全措施&#xff0c;如加密技术、风险控制体系等…

【康复学习--LeetCode每日一题】2965. 找出缺失和重复的数字

题目&#xff1a; 给你一个下标从 0 开始的二维整数矩阵 grid&#xff0c;大小为 n * n &#xff0c;其中的值在 [1, n2] 范围内。除了 a 出现 两次&#xff0c;b 缺失 之外&#xff0c;每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失的数字 b 。 返回一个下标从 0…

探索回归模型的奥秘:从理论到实践,以PlugLink为例

回归模型初探 回归分析&#xff0c;顾名思义&#xff0c;旨在探索两个或多个变量之间的关系&#xff0c;特别是当一个变量&#xff08;因变量&#xff09;依赖于其他一个或多个变量&#xff08;自变量&#xff09;时&#xff0c;它能够预测因变量的值。常见的回归模型包括线性…

spring web flux 记录用户日志及异常日志

package cn.finopen.boot.autoconfigure.aop;Configuration EnableAspectJAutoProxy Order public class EndpointLogAopConfiguration {/*** 请求方法白名单*/private static final String[] METHOD_WHITE_LIST {"get", "unreadCount", "find"…

MySQL8之mysql-community-common的作用

在MySQL 8中&#xff0c;mysql-community-common是一个软件包&#xff0c;它提供了MySQL服务器和客户端库所需的一些共同文件。具体来说&#xff0c;mysql-community-common的作用包括但不限于以下几点&#xff1a; 1. 提供基础配置和错误信息 错误信息和字符集包&#xff1a…