Arduino学习笔记4

一.声控灯实验

1.源代码

int led=2;//定义板子上数字2口控制小灯
int flag=0;//定义一个变量记录小灯是亮起还是熄灭
int shengyin=3;//定义声音传感器的控制口

void setup()
{
    pinMode(led,OUTPUT);//定义小灯为输出模式
    pinMode(shengyin,INPUT);//定义声音控制口为输入模式
}
void loop()
{

    if(digitalRead(shengyin)==HIGH)//判断是否检测到声音信号
    { 
         if(flag==0){//判断小灯是否亮起
            flag=1; //标志小灯亮起 
            digitalWrite(led,HIGH);//对应的LED小灯亮起
          }else{
            flag=0;  //标志小灯亮熄灭
            digitalWrite(led,LOW);//对应的LED小灯熄灭
    
          }
          delay(1000);//延时

    } 
    

 

2.电路图

TRD4.jpg

3.声音传感器

digitalRead(shengyin)==HIGH你可能对这个代码段比较好奇,为什么使用digitalRead函数,传感器不是应该接模拟引脚然后使用analogRead函数吗?其实传感器既可以接数字引脚也可以接模拟引脚,只有接数字引脚它只产生0和1两种输出,即数字引脚的高电平和低电平;而模拟引脚却会产生0到1024之间的数值,两种引脚都可以,只是我们平时一般对于这种传感器都采用接模拟引脚的方式。

delay(1000);//延时的作用是使效果延迟,易于我们肉眼观察。

二.红外解码实验

1.源代码

#include <IRremote.h>
int RECV_PIN = 3; // 红外一体化接收头连接到Arduino 3号引脚
IRrecv irrecv(RECV_PIN);
decode_results results; // 用于存储编码结果的对象
void setup()
{
  Serial.begin(9600); // 初始化串口通信
  irrecv.enableIRIn(); // 初始化红外解码
}

//遥控器的每个按键都对应了不同的编码,不同的遥控器使用的编码也不相同。
//出现“FFFFFFFF”编码或者“0”编码,是因为使用的是NEC协议的遥控器,当按住某按键不放时,其会发送一个重复编码“FFFFFFFF”或者“0”编码

void loop() {
  
    if (irrecv.decode(&results)) {
       Serial.println(results.value, HEX);//通过红外遥控输出,串口显示出来
       irrecv.resume(); // 接收下一个编码  
    }
}

2.电路图

Tajv.jpg

3.<IRremote.h>

<IRremote.h> 是一个用于控制红外线遥控器的 Arduino 库。它允许您使用 Arduino 控制接收和发送红外线信号,从而实现红外线遥控功能。使用该库可以方便地读取和解码来自红外线遥控器发送的信息,并将其转换为可供 Arduino 使用的格式。同时,您也可以使用该库向外部设备发送红外线信号,以实现控制外部设备的功能。<IRremote.h> 库在 Arduino IDE 的 Library Manager 中可以直接安装和使用。

4.IRrecv类

在Arduino中,IRrecv 是一个类,在使用红外线(IR)遥控器的 Arduino 项目中经常使用。它是 <IRremote .h>库的一部分,该库允许 Arduino 接收和解码来自 IR 遥控器的信号。

IRrecv irrecv(RECV_PIN)这段代码的意思是在 Arduino 中创建了一个名为 irrecvIRrecv 类实例,它的构造函数参数是 RECV_PIN。这个irrecv 对象用来接收RECV_PIN指代的3号数字引脚的红外信号。

5.decode_results结构体

decode_results 是一个结构体,用于存储解码后的红外信号信息。

decode_results results表示建立一个名叫results的结构体实例对象,以便后面用来存储解码结果。

decode_results 结构体包含以下成员变量:

  • uint32_t value:表示解码后的红外数据;
  • uint16_t *rawbuf:指向原始数据缓冲区的指针;
  • uint16_t rawlen:原始数据缓冲区中的数据位数(即元素个数);
  • uint8_t decode_type:表示解码协议类型;
  • uint16_t panasonicAddress:仅适用于 Panasonic 协议,表示地址信息;
  • uint8_t numberOfBits:表示解码后的数据位数;
  • volatile uint16_t *rawbufPtr:指向原始数据缓冲区的当前位置的指针;
  • uint8_t overflow:表示是否发生了溢出。

6. .enableIRIn()函数

该函数无参数,直接在setup()调用,用于启用红外接收器模块。这个函数初始化接收器并准备好接收红外信号。一旦调用了这个函数,红外接收器就会开始监听传入的红外信号。

7..decode()函数

它是一个解码函数,用于解码红外线信号。

irrecv.decode(&results)这句代码的作用是从红外传感器接收到的数据流中解码出具体的红外编码信息,并将其存储在 results 变量中。

语法:bool decode(decode_results *results)

参数:它的参数是一个decode_results类型的结构体,意为解码存储的对象地址,注意他是一个地址。

返回值:它是一个bool声明类型,如果成功解码了信号,则返回值为 true,否则为 false。

8.HEX

在 Arduino 中,HEX 是一个常量,表示将数字以十六进制形式输出。在该行代码中,Serial.println() 是一个函数,用于将变量的值打印到串行监视器上。results.value 是要被打印的变量,它通常包含一个红外遥控器发送的编码值。通过使用 HEX 常量,将以十六进制的格式打印这个编码值。

  • Serial.println(results.value, HEX)表示十六进制输出results.value
  • Serial.println(results.value, DEC)表示十进制输出results.value
  • Serial.println(results.value, OCT)表示八进制输出results.value
  • Serial.println(results.value, BIN)表示二进制输出results.value

9..resume()函数

irrecv.resume()函数是用于接收下一个编码的。在Arduino中使用IR库时,当你想要读取下一个接收到的红外编码时,可以通过调用这个函数来启动红外接收器,从而等待接收下一个码值。

具体地说,irrecv.resume()函数会等待接收下一个红外信号,并将其解码为一个类型为decode_results的结构体。这个结构体包含了有关接收到的编码信息,例如协议、地址和命令等信息。之后,您就可以使用这些信息来执行相应的操作,如控制电子设备等。

需要注意的是,在使用irrecv.resume()函数之前,您需要先使用irrecv.enableIRIn()初始化红外接收器,以确保它能够正常工作。此外,为了避免出现干扰和错误,建议在每次读取完一个编码后,都调用irrecv.resume()函数清空缓存区并准备接收下一个编码。

三.红外控制实验

1.源代码

#include <IRremote.h>//引入的库文件
int RECV_PIN = 3; // 红外一体化接收头连接到Arduino 3号引脚
int led = 4;//数字口4控制led灯
IRrecv irrecv(RECV_PIN);
decode_results results; // 用于存储编码结果的对象
void setup()
{
  Serial.begin(9600); // 初始化串口通信
  pinMode(led,OUTPUT);  //定义数字接口为输出接口
  irrecv.enableIRIn(); // 初始化红外解码
}

//遥控器的每个按键都对应了不同的编码,不同的遥控器使用的编码也不相同。
//出现“FFFFFFFF”编码或者“0”编码,是因为使用的是NEC协议的遥控器,当按住某按键不放时,其会发送一个重复编码“FFFFFFFF”或者“0”编码

void loop() {
  
    if (irrecv.decode(&results)) {
      
       Serial.println(results.value, HEX);//通过红外遥控输出,串口显示出来,输出结果为16进制

       if(results.value == 0xFFA25D){//通过16进制判断是否是红外的CH-按键按下

          digitalWrite(led,HIGH);//打开LED灯
          
       }else if(results.value == 0xFF629D){//通过16进制判断是否是红外的CH按键按下
        
         digitalWrite(led,LOW);//关闭LED灯
       }
 
       irrecv.resume(); // 接收下一个编码  
    }
}

2.电路图

参考上一个实验的电路图

3.红外遥控键盘

本次实验实际上是上次实验的补充,红外遥控键盘就像一个遥控器,他有几种按键会产生不同的红外线信号,而Arduino开发板可以通过连接红外一体化接收头来接收其产生的红外线信号,通过引脚接收进行判断哪种信号。红外遥控键盘产生的各种信号,都可以以一种十六进制的二进制序列表达,但是红外遥控键盘各个按键的信号16进制表达式通常是由厂商确定的,并且不同品牌、型号的遥控器可能会采用不同的编码方式。因此,这些信号的具体编码方式需要查询相应的资料或手册。

TmXy.jpg

四.一位数码管显示

1.源代码

//共阴极数码管
int a=2;//定义数字接口2 连接a 段数码管
int b=3;// 定义数字接口3 连接b 段数码管
int c=4;// 定义数字接口4 连接c 段数码管
int d=5;// 定义数字接口5 连接d 段数码管
int e=6;// 定义数字接口6 连接e 段数码管
int f=7;// 定义数字接口7 连接f 段数码管
int g=8;// 定义数字接口8 连接g 段数码管
int dp=9;// 定义数字接口9 连接dp 段数码管

void digital_0(void) //显示数字0
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,LOW);
    digitalWrite(dp,HIGH);
}
void digital_1(void) //显示数字1
{
    digitalWrite(a,LOW);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,LOW);
    digitalWrite(e,LOW);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(dp,HIGH);
}
void digital_2(void) //显示数字2
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,LOW);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,HIGH);
    digitalWrite(dp,HIGH);
}

void digital_3(void) //显示数字3
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,LOW);
    digitalWrite(f,LOW);
    digitalWrite(g,HIGH);
    digitalWrite(dp,HIGH);
}

void digital_4(void) //显示数字4
{
    digitalWrite(a,LOW);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,LOW);
    digitalWrite(e,LOW);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,HIGH);
}
void digital_5(void) //显示数字5
{
    digitalWrite(a,HIGH);
    digitalWrite(b,LOW);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,LOW);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,HIGH);
}
void digital_6(void) //显示数字6
{
    digitalWrite(a,HIGH);
    digitalWrite(b,LOW);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,HIGH);
}
void digital_7(void) //显示数字7
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,LOW);
    digitalWrite(e,LOW);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(dp,HIGH);
}
void digital_8(void) //显示数字8
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,HIGH);
}
void digital_9(void) //显示数字9
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,LOW);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,HIGH);
}
void setup()
{
    int i;//定义变量
    for(i=2;i<=9;i++)
    pinMode(i,OUTPUT);//设置2~9 引脚为输出模式
}
void loop()
{

    digital_0();//显示数字0
    delay(1000);//延时1s
    digital_1();//显示数字1
    delay(1000);//延时1s
    digital_2();//显示数字2
    delay(1000); //延时1s
    digital_3();//显示数字3
    delay(1000); //延时1s
    digital_4();//显示数字4
    delay(1000); //延时1s
    digital_5();//显示数字5
    delay(1000); //延时1s
    digital_6();//显示数字6
    delay(1000); //延时1s
    digital_7();//显示数字7
    delay(1000); //延时1s
    digital_8();//显示数字8
    delay(1000); //延时1s
    digital_9();//显示数字9
    delay(1000); //延时1s

}

2.电路图

Thmh.jpg

3.数码管八段表示

数码管八段表示法是指使用八个独立的LED(发光二极管)来显示数字、字母和符号等字符。这些LED被编号为a、b、c、d、e、f、g和dp,其中dp表示小数点。

每个数字或字符都可以通过在对应LED上提供电源信号来表示。下面是每个LED代表的数字及其对应的八段表示法:

TpgQ.jpg

我们知道通过数字8可以表示0到9的任意数字,因此把8分解成8个部分(包括小数点),这样我们可以通过控制每一个部分的亮度来显示任意数字。

4.数码管结构

数码管的GF公共端和ED公共端通常被用于七段数码管的显示。其中,GF代表着左侧的两个数字段(也称为"组F"),这些数字段包括了LED数码管中的a、b、c和d四个段;而ED则代表右侧的三个数字段(也称为"组E"和"组D"),这些数字段包括了LED数码管中的e、f、g三个段。

在使用数码管进行显示时,GF和ED都需要与对应数字段的阳极或阴极连接,以便通过控制它们的电压或电流来控制对应数字段是否亮起。同时,由于这些数字段都是共阳极或共阴极的,因此要控制哪一组数字段亮起,需要将对应组的公共端(GF或ED)连接到对应的电源上。

两端每端四个引脚,分别表示四部分,把这八个引脚接入Arduino开发板的数字引脚即可听过数字电路显示任意数字。

五.四位数码管显示

1.源代码

//共阴极数码管
int a=2;//定义数字接口2 连接a 段数码管
int b=3;// 定义数字接口3 连接b 段数码管
int c=4;// 定义数字接口4 连接c 段数码管
int d=5;// 定义数字接口5 连接d 段数码管
int e=6;// 定义数字接口6 连接e 段数码管
int f=7;// 定义数字接口7 连接f 段数码管
int g=8;// 定义数字接口8 连接g 段数码管
int dp=9;// 定义数字接口9 连接dp 段数码管

int num1=10;//定义数字接口10 选中第一个数码管
int num2=11;//定义数字接口11 选中第二个数码管
int num3=12;//定义数字接口12 选中第三个数码管
int num4=13;//定义数字接口13 选中第四个数码管

int num=0;//切换数码管的变量

void digital_0(void) //显示数字0
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,LOW);
    digitalWrite(dp,LOW);

}
void digital_1(void) //显示数字1
{
    digitalWrite(a,LOW);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,LOW);
    digitalWrite(e,LOW);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(dp,LOW);

}
void digital_2(void) //显示数字2
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,LOW);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);

}

void digital_3(void) //显示数字3
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,LOW);
    digitalWrite(f,LOW);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);

}

void digital_4(void) //显示数字4
{
    digitalWrite(a,LOW);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,LOW);
    digitalWrite(e,LOW);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);

}
void digital_5(void) //显示数字5
{
    digitalWrite(a,HIGH);
    digitalWrite(b,LOW);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,LOW);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);

}
void digital_6(void) //显示数字6
{
    digitalWrite(a,HIGH);
    digitalWrite(b,LOW);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);

}
void digital_7(void) //显示数字7
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,LOW);
    digitalWrite(e,LOW);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(dp,LOW);

}
void digital_8(void) //显示数字8
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);

}
void digital_9(void) //显示数字9
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,LOW);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);
}
void setup()
{
    int i;//定义变量
    for(i=2;i<=13;i++)
    pinMode(i,OUTPUT);//设置2~13 引脚为输出模式
}
void loop()
{

    num++;//切换数码管的变量,四个数码管循环显示
    if(num>4){
      num=1;  
    }
    if(num==1){//选中第一个数码管
      
      digitalWrite(num1,LOW);
      digitalWrite(num2,HIGH);
      digitalWrite(num3,HIGH);
      digitalWrite(num4,HIGH);
      
    }else if(num==2){//选中第二个数码管

      digitalWrite(num1,HIGH);
      digitalWrite(num2,LOW);
      digitalWrite(num3,HIGH);
      digitalWrite(num4,HIGH);
    
    }else if(num==3){//选中第三个数码管

      digitalWrite(num1,HIGH);
      digitalWrite(num2,HIGH);
      digitalWrite(num3,LOW);
      digitalWrite(num4,HIGH);
    
    }else if(num==4){//选中第四个数码管

      digitalWrite(num1,HIGH);
      digitalWrite(num2,HIGH);
      digitalWrite(num3,HIGH);
      digitalWrite(num4,LOW);
    }

    digital_0();//显示数字0
    delay(1000);//延时1s
    digital_1();//显示数字1
    delay(1000);//延时1s
    digital_2();//显示数字2
    delay(1000); //延时1s
    digital_3();//显示数字3
    delay(1000); //延时1s
    digital_4();//显示数字4
    delay(1000); //延时1s
    digital_5();//显示数字5
    delay(1000); //延时1s
    digital_6();//显示数字6
    delay(1000); //延时1s
    digital_7();//显示数字7
    delay(1000); //延时1s
    digital_8();//显示数字8
    delay(1000); //延时1s
    digital_9();//显示数字9
    delay(1000); //延时1s

}

2.电路图

T4LR.jpg

这幅图详细给出了四段数码管引脚的意义和连接情况,大家参考。

3.代码理解

这段代码是用来控制共阴极数码管显示数字的程序。首先定义了每个数字接口连接到数码管的哪一段,以及选择数码管的变量和四个数码管的引脚设置为输出模式。然后在loop()函数中循环切换四个数码管,并调用digital_0()到digital_9()函数分别显示数字0到9,每次显示后延时1秒。其中,数字的显示通过控制不同段的电平状态实现,比如digital_0()函数中通过将a-g段设为HIGH或LOW来显示数字0。

运行这段代码后,会发现四个数码管会循环显示数字0到9。每次只有一个数码管被选中,并且会闪烁一下,表示它正在显示数字。在数码管上显示的数字是通过控制不同段的电平状态实现的,当一个段处于HIGH状态时,则此段不亮;当一个段处于LOW状态时,则此段亮起来。延时1秒是为了让每个数字能够停留一段时间后再切换到下一个数字。整个程序运行起来比较简单,也很容易理解。

六.说明

接上一篇博客,Arduino学习笔记3!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

SentiBank Dector上手指南

​ 官网链接&#xff1a;https://www.ee.columbia.edu/ln/dvmm/vso/download/sentibank.html SentiBank Detector可以抽取图片中的形容词-名词对&#xff0c;之前一直看到&#xff0c;这次复现模型才第一次用到&#xff0c;上手的时候有点手足无措&#xff0c;因为官网在如何使…

Python入门教程+项目实战-11.4节: 元组与列表的区别

目录 11.4.1 元组与列表的区别 11.4.2 可变数据类型 11.4.3 元组与列表的区别 11.4.4 知识要点 11.4.5 系统学习python 11.4.1 不可变数据类型 不可变数据类型是指不可以对该数据类型进行修改&#xff0c;即只读的数据类型。迄今为止学过的不可变数据类型有字符串&#x…

我做了个GPT3键盘,用了两个月发现它有点傻

自 ChatGPT 出世&#xff0c;各类文本类AI产品层出不穷。甚至接连几日&#xff0c;Producthunt 上新品过半都是AI相关。 这其中部分原因是 OpenAI 公司开放的 GPT3 1API 接口十分易用。只要一个简单的文本请求&#xff0c;就能将现有产品加入AI功能。例如&#xff0c;Notion、…

提取文本的摘要snownlp模块

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 提取文本的摘要 snownlp模块 [太阳]选择题 关于以下python代码说法错误的一项是&#xff1f; from snownlp import SnowNLP myText """ChatGPT的出现标志着人类科技发…

【flask】三种路由和各自的比较配置文件所有的字母必须大写if __name__的作用核心对象循环引用的几种解决方式--难Flask的经典错误上下文管理器

三种路由 方法1&#xff1a;装饰器 python C#, java 都可以用这种方式 from flask import Flask app Flask(__name__)app.route(/hello) def hello():return Hello world!app.run(debugTrue)方法2: 注册路由 php python from flask import Flask app Flask(__name__)//app…

【JavaWeb】jQuery(上)

本章内容 1.jQuery Hello world 2.jQuery 选择器 3.jQuery 过滤器 4.jQuery 元素筛选 1、jQuery 介绍 什么是 jQuery ? jQuery&#xff0c;顾名思义&#xff0c;也就是 JavaScript 和查询&#xff08;Query&#xff09;&#xff0c;它就是辅助 JavaScript 开发的 js 类…

Linux 文件内容相关命令使用汇总

Linux操作系统有很多强大的文件内容相关命令&#xff0c;这些命令可以让您查看、分析和编辑文件。其中&#xff0c;最基本和常用的命令包括cat、more、less和head/tail等。除了这些基本命令之外&#xff0c;grep和find命令也是文件搜索和过滤方面的有力工具。 前言 我们这篇主…

根据 vue-grid-layout 动态设置Echarts尺寸大小

文章目录 前言一、vue-grid-layout 是什么&#xff1f;二、正文1.引入vue-grid-layout2.myEcharts组件3. Utils中的debounce防抖函数 总结 前言 此文背景是根据 vue-grid-layout 动态拖拽组件大小里面包含 Echarts 组件情景&#xff0c;也可以单独把监听动态设置Echarts 尺寸抽…

【神经网络】tensorflow实验7--回归问题

1. 实验目的 ①掌握一元线性回归模型的实现方法 ②掌握多元线性回归模型的实现方法 ③掌握三维数据可视化方法 2. 实验内容 ①使用TensorFlow建立一元线性回归模型&#xff0c;使用商品房销售数据训练模型&#xff0c;并使用训练好的模型预测房价 ②使用TensorFlow建立多元线…

企业级VUE前端项目各目录文件的作用

概述 本文项目是基于Vue CLI3构建工具&#xff08;基于 webpack)生成的脚手架项目。Vue CLI 现已处于维护模式&#xff0c;VUE官方推荐使用 create-vue&#xff08;基于 Vite&#xff09;构建工具。 vue-cli2.0与3.0在目录结构方面&#xff0c;有明显的不同,vue-cli3.0移除了…

什么是 MVVM?MVVM和 MVC 有什么区别?什么又是 MVP ?

目录标题 一、什么是MVVM&#xff1f;二、MVC是什么&#xff1f;三、MVVM和MVC的区别&#xff1f;四、什么是MVP&#xff1f; 一、什么是MVVM&#xff1f; MVVM是 Model-View-ViewModel的缩写&#xff0c;即模型-视图-视图模型。MVVM 是一种设计思想。 模型&#xff08;Model…

国内首款多节点/无需密钥/无需登录的ChatGPT客户端开源项目

在这个AI浪潮推动下&#xff0c;涌现了一大批“参差不齐”的GPT产品&#xff0c;有的一直在更新迭代&#xff0c;有的不断升级乃至付费订阅&#xff0c;有的中途停止运营。在这个AI产品也需要优胜劣汰的时代下&#xff0c;谁能够“谁主沉浮&#xff0c;且看今朝&#xff01;”&…

目标检测之损失函数

损失函数的作用为度量神经网络预测信息与期望信息&#xff08;标签&#xff09;的距离&#xff0c;预测信息越接近期望信息&#xff0c;损失函数值越小。 在目标检测领域&#xff0c;常见的损失分为分类损失和回归损失。 L1损失 L1 Loss也称为平均绝对值误差&#xff08;MAE&…

跨域融合风口下,又一外资巨头Tier 1+本土供应商“组团”来袭

头部企业正在加速“融合”。 汽车智能化升级对产品创新与多元化需求下&#xff0c;来自技术升级、降本、开发周期缩短等等一系列因素影响&#xff0c;中外供应商们都在积极思变和寻求破局。 随着全球智能汽车产业步入域集中和域融合的新阶段&#xff0c;过去的以硬件&#xf…

【AGC】质量服务数据分析问题

【关键字】 AGC、质量、数据分析 【问题描述】 开发者反馈在应用中集成了AGC的相关服务&#xff0c;在查看平台数据时遇到了一些问题。具体如下所述&#xff1a; 我发现平台的App卸载量每个月都非常高&#xff0c;卸载量/新下载量近80%&#xff0c;很异常&#xff0c;所以想…

Elasticsearch --- DSL、RestClient查询文档、搜索结果处理

一、DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1、DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c…

后台-husky提交代码规范使用

husky是一个git hook工具&#xff0c;可以帮助我们触发git提交的各个阶段&#xff1a;pre-commit、commit-msg、pre-push 1.如何使用husky呢&#xff1f; npx husky-init && npm installWindows安装不成功试试npx husky-init && npm install 2.git commit规范…

图论 (Java) 从入门到入土 /第一部分 图的基础-图的定义/

零.前言 图&#xff0c;是一种比较复杂的数据结构。和树的一个节点只和上层一个节点相连不同&#xff0c;在图中&#xff0c;任意两个节点都可能相连&#xff0c;且可能具有方向性&#xff0c;并且节点的边具有权重&#xff0c;因此&#xff0c;图被用于描述各种复杂的数据对象…

Docker基础知识全解析

​ Docker是一个开源的容器化平台&#xff0c;可以让开发者在容器中构建、打包、运行和发布应用程序&#xff0c;从而实现应用程序的快速部署和可移植性。Docker将应用程序和依赖项打包在一个轻量级的可移植容器中&#xff0c;这个容器可以在任何平台上运行&#xff0c;不会受到…