控制变量

arduino学习笔记二十一--PWM控制LED 呼吸灯

拜拜、爱过 提交于 2019-12-14 11:28:51
实验用到的元件 , 一个LED, 一个470欧姆电阻 2根杜邦线, 一块实验板。 原理图 LED长脚的为正,短脚为负极。 LED的正极连接 IO口9,LED负极连接电阻,电阻的另外一端接GND. 代码: int brightness = 0; //定义整数型变量brightness与其初始值,此变量用来表示LED的亮度。 int fadeAmount = 5; //定义整数型变量fadeAmount,此变量用来做亮度变化的增减量。 void setup() { pinMode(9, OUTPUT);// 设置9号口为输出端口: } void loop() { analogWrite(9, brightness);//把brightness的值写入9号端口 brightness = brightness + fadeAmount;//改变brightness值,使亮度在下一次循环发生改变 if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; //在亮度最高与最低时进行翻转 } delay(30); //延时30毫秒 } 来源: CSDN 作者: 甜航一直在 链接: https://blog.csdn.net/qq_37631068/article/details/103447698

CMake for mac(编译配置工具) v3.16.1免费版

て烟熏妆下的殇ゞ 提交于 2019-12-11 16:21:30
CMake mac破解版推荐给大家!CMake mac是一款跨平台的编程工具。使用简单的平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机makefile和工作空间,大大的提升了你的工作效率! 下载地址: CMake for mac(编译配置工具) CMake编译配置工具软件介绍 CMake旨在支持复杂的目录层次结构和依赖于多个库的应用程序。例如,CMake支持由多个工具包(即库)组成的项目,其中每个工具包可能包含多个目录,应用程序依赖于工具包以及其他代码。CMake还可以处理必须构建可执行文件的情况,以便生成随后编译并链接到最终应用程序的代码。由于CMake是开源的,并且具有简单,可扩展的设计,因此可以根据需要扩展CMake以支持新功能。使用CMake很简单。通过在组成项目的每个目录(包括子目录)中创建一个或多个CMakeLists.txt文件来控制构建过程。每个CMakeLists.txt包含一个或多个命令。每个命令的形式为COMMAND(args ...),其中COMMAND是命令的名称,args是以空格分隔的参数列表。CMake提供了许多预定义的命令,但是如果需要,可以添加自己的命令。此外,高级用户可以为特定的编译器/ OS组合添加其他makefile生成器。 CMake破解软件安装步骤 在本站下载完CMake mac破解版软件双击

基于STC12C5A60S2的内嵌A/D和内嵌PWM的PID参数整定

非 Y 不嫁゛ 提交于 2019-12-10 15:55:42
控制对象传递函数:Gp=20/(s(0.1s+1)(0.2s+1) 第一个实验主要是出现等幅震荡的波形(纯比例控制): #include <STC12C5A60S2.H> #include <absacc.h> typedef unsigned char u8; //无符号字符型变量新表示方法定义 typedef unsigned int u16; //无符号整型变量新表示方法定义 //#define AD0 XBYTE [0xF0FF] //给定量外部AD通道0的端口地址 //#define AD1 XBYTE [0xF1FF] //反馈量外部AD通道1的端口地址 //#define DA XBYTE [0xEFFF] //外部DA转换数据输入端口地址 #define D_port XBYTE [0x7FFF] //数码管段码锁存器端口地址 #define B_port XBYTE [0xBFFF] //数码管位码锁存器端口地址 #define A0_r -9.27 //实验五的4通道数据 #define Am_r 10.24 //实验五的4通道数据 #define N0_r 0x20 //实验五的4通道数据 #define Nm_r 0xe0 //实验五的4通道数据 #define A0_m -9.32 //实验五的5通道数据 #define Am_m 9.91 /

Unix系列shell程序编写从入门到精通(上)

心不动则不痛 提交于 2019-12-06 18:31:03
*Shell 是什么 ? 任何发明都具有供用户使用的界面。 UNIX 供用户使用的界面就是 Shell(DOS 的 command 熟悉吧,但 UNIX 的要强大的多 ) 。 Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境。 为了不同的需要, UNIX 提供了不同的 Shell 。现在的 UNIX 大部分都支持 BourneShell ,以下教程就以 BourneShell(Bsh) 为例,一步步的领略 UNIX Shell 的强大功能,占先其强大魅力,达到更方便灵活的管理、应用 UNIX 的目的。 1.UNIX 内核和 Shell 的交互方法 启动 UNIX 时,程序 UNIX( 内核 ) 将被调入计算机内存,并一直保留在内存中直到机器关闭。在引导过程中,程序 init 将进入后台运行一直到机器关闭。该程序查询文件 /etc/inittab ,该文件列出了连接终端的各个端口及其特征。当发现一个活动的终端时, init 程序调用 getty 程序在终端上显示 login 等登陆信息。 (username 和 passwd) ,在输入密码后, getty 调用 login 进程,该进程根据文件 /etc/passwd 的内容来验证用户的身份。若用户通过身份验证, login 进程 把用户的 home 目录设置成当前目录并把控制交给一系列 setup 程序。

C语言I博客作业10

穿精又带淫゛_ 提交于 2019-12-05 20:17:18
问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言I博客作业10 我在这个课程的目标是 熟练掌握C语言 这个作业在哪个具体方面帮助我实现目标 已经可以熟练掌握字符型的输入和输出 参考文献 Markdown基本语法 一.PTA实验作业 1. 編程打印空心字符菱形 题目内容描述:本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。 输入格式: 输入在一行中给出起始字母(范围为英文大写字母A-G)和菱形的高度(为不超过10的奇数)。 输出格式: 输出空心字符菱形。 输入样例: B 5 输出样例: B C C D D C C B (1)数据处理 数据表达: 用了整形变量h,k,k1,v,v1=1,i,和字符型变量op op和h是用户传入的字符和高度 k,k1用来控制每行首字母左边的空格数 v,v1用来控制两个字母间的空格数 i用来控制循环次数 数据处理:伪代码 定义整型变量h,k,k1,v,v1=1,i; h是用户传入的高度,k,k1用来控制每行首字母左边的空格数,v,v1用来控制两个字母间的空格数,i用来控制循环次数 定义字符型变量op ,op是用户传入的字符

java中变量和控制语句

你离开我真会死。 提交于 2019-12-05 18:17:16
一、变量的详细介绍 1.变量的生命周期: 一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其所占用内存空间的过程。 2.变量的分类 (1)成员变量(实例变量) 有默认值 整型:0 浮点型:0.0 char:类型:'\u0000' boolean:false 引用类型:null (2)局部变量 在方法中,代码块中声明 作用范围:只能在该方法中,代码块中使用。 局部变量不会默认赋值,必须要先赋值再使用。 局部变量不能在该局部变量以外的方法使用。 二、控制语句 1.if语句 if(布尔表达式){代码块} 2.if(){}else{} 3.if(){}else if(){}else if(){}else{} 4.switch语句 语法: switch(expr){ case value1: 代码; break; case value2: 代码; break; ... default: 代码; break; } expr支持的数据类型: switch表达式后面的数据类型只支持byte,short,char,int四种整型类型、枚举类型和java.lang.String类型. 流程解释: 1,获取expr值 2,从上到下和case 的 value比较 如果相同执行当前case下面的代码(可以是多句,多行代码), 如果没有break,那么接下来所有的case 都会匹配成功(即使case

PL真有意思(四):控制流

旧巷老猫 提交于 2019-12-05 16:57:04
前言 对大多数计算模型而言,顺序都是基本的东西,它确定了为完成所期望的某种工作,什么事情应该最先做,什么事应该随后做,我们可以将语言规定顺序的机制分为几个类别: 顺序执行 选择 迭代 过程抽象 递归 并发 异常处理和推断 非确定性 对于不同类别的语言对不同类别的控制流的重要性也不尽相同,比如顺序执行相比于函数式对于命令式则更加重要。而命令式中更倾向用迭代,函数则更强调递归 表达式求值 在讨论控制流之前先讨论下表达式的问题,先明确两个概念:运算符通常是指那些采用特殊语法形式的内部函数(比如+-*/等),运算对象指的是运算符的参数(如2+3,2和3就是运算对象),那么运算符和运算对象的组合就是表达式。一般根据运算符出现的位置(相对于运算对象而言),可以分为3类表示形式:前缀、中缀和后缀。比如Lisp就运用前缀语法: (+ 1 3 4 6) (* (+ 1 7) 8) 大多数命令式语言对二元运算符都使用中缀记法,而对一元运算符和其它函数使用前缀激发。但是像Lisp就全部统一使用中缀记法 优先级和结合性 大多数程序设计语言都提供丰富的内部算术。在用中缀方式(没有括号)写出就可能出现歧义。所以就需要优先级和结合性来解决歧义性,但是我觉得 妈的你写括号就完事儿了 而且不同语言的优先级和结合性也不尽相同 赋值 在纯函数式语言中,程序的基本组成部分是表达式,计算也仅是对表达式求值

《深入浅出NodeJS》读书笔记

爷,独闯天下 提交于 2019-12-05 14:33:48
 NodeJS NodeJS 4 个特点: 异步 I/O, 事件驱动与回调, 单线程事件轮询, 跨平台。 NodeJS 5 个大坑:异常处理,嵌套太深,没有 Sleep ,多线程编程,异步转同步。 NodeJS 4 种提升性能的方法: 动静分离, 缓存( Redis ) , 多进程, 数据库读写分离。 NodeJS 简介 模块机制 异步 I/O 异步编程 内存控制 Buffer 网络编程 构建 Web 多进程 测试 产品化 调试 NodeJS 编程规范 NodeJS 简介 高性能,符合时间驱动,没有历史包袱这三个主要原因, JavaScript 成为了 Node 的实现语言。 NodeJS 基于 Google V8 引擎。 Node 优秀的运算能力主要来自 V8 的深度优化。 NodeJS 特点:异步 I/O, 事件驱动与回调函数, 单线程事件轮询,跨平台 NodeJS 单线程的缺点: 无法利用多核 CPU. 错误会引起整个应用进程退出。 大量计算占用 CPU 导致无法继续调用异步 I/O. 解决单线程缺点的方法是引入子进程方法( Cluster, 见后边)和 C/C++ 模块扩展(利用它们的多线程机制)。 模块机制 Node 出现之前,服务器端的 JS 基本没有市场的。 CommonJS 主要是为了弥补当前 JS 没有标准的缺陷,希望 JS 能够在任何地方运行。 模块引用

linux shell awk 流程控制语句(if,for,while,do)详细介绍

≡放荡痞女 提交于 2019-12-05 02:40:14
  awk是gawk的链接文件,是一种优良的文本处理工具,实现格式化文本输出,是Linux和Unix现有环境中功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人拥有的知识量,使用"man gawk"给出的简述为“模式扫描和处理语言”。   任何awk语句都是由 模式和动作 组成,一个awk脚本可以有多个语句,模式决定动作语句的触发条件和触发时间。   模式包含:正则表达式,/[正则表达式]/;关系运算符,<、<=、>、>=、!=、==;正则运算符,~(匹配)、!~(不匹配);赋值运算符,=、+=、-=、*=、/=、%=、**=;逻辑运算符||、&&;算术运算符+、-、*、/、++、--;其他运算符,$(用来对字段进行引用),空格(字符串连接符)。   动作包含:变量、命令、内置函数、流程控制语句。   语法:awk [选项] ' BEGIN{开始语句} 模式{动作} END{结束语句} ' [文件]。其中 BEGIN和END 是awk的关键字, 必须大写。 不过开始模块和结束模块 是可选部分,可以省略 。并且 开始语句和结束语句也是动作语句 。另外, 工作模块中的 模式和动作可以都存在,也可以二者选其一 。 如果省略模式,那么文件的所有行都执行动作;如果省略动作,表示对符合条件的行执行默认的print动作 。正因为可以二者选其一,所以一般用{}包裹动作

多线程之美1一volatile

假装没事ソ 提交于 2019-12-04 21:12:28
摘自: https://www.cnblogs.com/flydashpig/p/11875652.html 多线程之美1一volatile 目录 一、java内存模型 1.1、抽象结构图 1.2、概念介绍 二、volatile详解 2.1、概念 2.2、保证内存可见性 2.3、不保证原子性 2.4、有序性 一、java内存模型 1.1、抽象结构图 1.2、概念介绍 java 内存模型 即Java memory model(简称JMM), java线程之间的通信由JMM控制,决定一个线程对共享变量的写入何时对另一个线程可见。 多线程通信通常分为2类:共享内存和消息传递 JMM采用的就是共享内存来实现线程间的通信,且通信是隐式的,对程序开发人员是透明的,所以在了解其原理了,才会对线程之间通信,同步,内存可见性问题有进一步认识,避免开发中出错。 线程之间如何通信? 在java中多个线程之间要想通信,如上图所示,每个线程在需要操作某个共享变量时,会将该主内存中这个共享变量拷贝一份副本存在在自己的本地内存(也叫工作内存,这里只是JMM的一个抽象概念,即将其笼统看做一片内存区域,用于每个线程存放变量,实际涉及到缓存,寄存器和其他硬件),线程操作这个副本,比如 int i = 1;一个线程想要进行 i++操作,会先将变量 i =1 的值先拷贝到自己本地内存操作,完成 i++,结果 i=2