【雕爷学编程】Arduino动手做(22)——8X8 LED点阵MAX7219屏8

news2024/11/27 4:25:08

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来—小小的进步或是搞不定的问题,希望能够抛砖引玉。

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴屏幕)

在这里插入图片描述

程序十一:循环显示m,i,r,t,o,e,k还有笑脸、爱心和四个方向的箭头
Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十一:循环显示m,i,r,t,o,e,k还有笑脸、爱心和四个方向的箭头
  引脚定义
  DIN = D11
  CLK = D13
  CS  = D10
*/

#include <LedControl.h>//导入驱动库

int DIN = 11;//定义引脚
int CS =  10;
int CLK = 13;

byte m[8] =     {0xE7, 0xFF, 0xFF, 0xDB, 0xDB, 0xDB, 0xC3, 0xC3}; //英文字母m
byte i[8] =     {0x00, 0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10}; //英文字母i
byte r[8] =     {0x00, 0x00, 0x2c, 0x32, 0x20, 0x20, 0x20, 0x20}; //英文字母r
byte o[8] =     {0x00, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x1c}; //英文字母o
byte t[8] =     {0x00, 0x00, 0x10, 0x7e, 0x10, 0x10, 0x14, 0x18}; //英文字母t
byte e[8] =     {0x00, 0x3c, 0x42, 0x42, 0x7e, 0x40, 0x40, 0x3e}; //英文字母e
byte k[8] =     {0x00, 0x20, 0x20, 0x24, 0x28, 0x30, 0x28, 0x24}; //英文字母k

byte smile[8] =   {0x3C, 0x42, 0xA5, 0x81, 0xA5, 0x99, 0x42, 0x3C}; //微笑
byte love_1[8] =   {0x00, 0x66, 0x99, 0x81, 0x42, 0x24, 0x18, 0x00}; //爱心-1
byte love_2[8] =   {0x00, 0x66, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00}; //爱心-2

//实心箭头
byte Front[8] =   {0x08, 0x1c, 0x3e, 0x7f, 0x1c, 0x1c, 0x1c, 0x1c}; //前
byte back[8] =    {0x1c, 0x1c, 0x1c, 0x1c, 0x7f, 0x3e, 0x1c, 0x08}; //后
byte left[8] =    {0x10, 0x30, 0x7f, 0xff, 0x7f, 0x30, 0x10, 0x00}; //左
byte right[8] =   {0x08, 0x0c, 0xfe, 0xff, 0xfe, 0x0c, 0x08, 0x00}; //右

LedControl lc = LedControl(DIN, CLK, CS, 0);//定义引脚

void setup() {
  lc.shutdown(0, false);      //MAX7219启动时处于省电模式
  lc.setIntensity(0, 15);     // 将亮度设置为最大值
  lc.clearDisplay(0);         // 并清除显示
}

void loop() {

  printByte(smile);
  delay(1000);

  printByte(love_1);
  delay(1000);

  printByte(love_2);
  delay(1000);

  printByte(Front);
  delay(1000);

  printByte(back);
  delay(1000);

  printByte(left);
  delay(1000);

  printByte(right);
  delay(1000);

  printLetter();
  lc.clearDisplay(0);
  delay(1000);
}

void printLetter(){
  printByte(m);
  delay(1000);
  printByte(i);
  delay(1000);
  printByte(r);
  delay(1000);
  printByte(o);
  delay(1000);
  printByte(t);
  delay(1000);
  printByte(e);
  delay(1000);
  printByte(k);
  delay(1000);
}

void printByte(byte character []){
  int i = 0;
  for (i = 0; i < 8; i++)
  {
    lc.setRow(0, i, character[i]);
  }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
超简单的LED Matrix图形编辑工具:
在上述程序之后,介绍一下PixeltoMatrix图形编辑工具, PixeltoMatrix编辑的结果可以产生 Arduino 16 进位或 2 进位的动画程式码。
PixeltoMatrix编辑工具:下载
https://www.dropbox.com/sh/9ehblhdvx8yvx6b/AAAo24EZKiQbVtwySxL5h8lja?dl=0
▼执行PixelToMatrix.exe就可开始绘制图型,绘制完成后点击「Generate」,将会自动产生16 进位或 2 进位的代码,您可将此代码加入您的程式中,如上面范例第16行「爱心-1」。

在这里插入图片描述

程序十二:随机生成的一个 LED 模拟弹跳点
Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十二:随机生成的一个 LED 模拟弹跳点
  引脚定义
  DIN = D11
  CLK = D13
  CS  = D10
*/

#include "LedControl.h"//导入驱动库
LedControl lc = LedControl (11, 13, 10, 1); //定义引脚

int row;
int row_prev;
int col;
int col_prev;
int ball_timer = 100;
long randNumber;
long updown = 1;       // 指示移动:+1 向上一排,-1 向下一排
long leftright = 1;    // 指示移动:+1 是右一列,-1 是左一列


byte smiley[] =       // 填充数组以打开笑脸
{
  B00111110,
  B01000001,
  B10010101,
  B10100001,
  B10100001,
  B10010101,
  B01000001,
  B00111010
};


void setup() {
  Serial.begin (9600);
  // MAX72XX 启动时处于省电模式,
  // 我们必须做一个叫醒服务
  lc.shutdown (0, false);

  // 将亮度设置为中等值
  lc.setIntensity (0, 8);     // 0 = 低; 8 = 高

  // 显示笑脸 - 证明 8x8 数组有效
  smile();
  delay(1000);

  //清除显示
  lc.clearDisplay (0);

  // 初始位置
  randomSeed (analogRead(0));
  col = random (1, 7);    // 选择 1 到 7 之间的列位置
  row = random (1, 7);    // 选择 1 到 7 之间的行位置

  // 检查显示单元是否工作

  // 在串行监视器上显示起始列和行号
  Serial.println ("开始条件" );
  Serial.print ("行: ");
  Serial.println (row);
  Serial.print ("列: ");
  Serial.println (col);
  Serial.println ("=======");
  Serial.println ();
}

void loop() {
  col_prev = col;      //记录球的位置,列
  row_prev = row;      //记录球的位置,行
  row = row + updown;
  col = col + leftright;

  checkVectors ();

  lc.setLed (0, col_prev, row_prev, false); // 清除前一个球的位置
  lc.setLed (0, col, row, true);            // 点亮新球的位置
  delay (ball_timer);
  debug(); // 运行调试模块
  delay(1000);
}
// ============ 子程序 ===========================================
void smile() {
  for (int i = 0; i < 8; i++)
  {
    lc.setRow (0, i, smiley[i]);
  }
}

void checkVectors () {
  if ((row > 7) && (updown = 1)) {
    updown = -1;
    row = 6;
  }

  if ((row < 0) && (updown = -1)) {
    updown = 1;
    row = 1;
  }

  if ((col > 7) && (leftright = 1)) {
    leftright = -1;
    col = 6;
  }

  if ((col < 0) && (leftright = -1)) {
    leftright = 1;
    col = 1;
  }
}

void debug() {
  Serial.print ("列: " );
  Serial.println (col);
  Serial.print ("行: " );
  Serial.println (row);
}

实验串口返回情况

在这里插入图片描述
在这里插入图片描述
程序十三:漫屏随机闪烁星星
Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十三:漫屏随机闪烁星星
  引脚定义
  DIN = D11
  CLK = D13
  CS  = D10
*/

#include "LedControl.h"//导入驱动库
LedControl lc = LedControl (11, 13, 10, 1); //定义引脚

void setup() {
  lc.shutdown(0, false); // 关闭省电模式
  lc.setIntensity(0, 15); // 设定亮度为 15 (介于0~15之间)
  lc.clearDisplay(0);    // 清除屏幕
}

void loop() {
  int randNumber_col = random(8);
  int randNumber_row = random(8);
  lc.setLed(0, randNumber_col, randNumber_row, 1); //将Led的行列点,設定为亮
  delay(5);
  lc.setLed(0, randNumber_col, randNumber_row, 0); //将Led的行列点,設定为暗
}

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
项目:Arduino 矩阵显示代码
Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  项目之四十一:Arduino 矩阵显示代码
*/

//We always have to include the library
#include "LedControl.h"

/*
 Now we need a LedControl to work with.
 ***** These pin numbers will probably not work with your hardware *****
 pin 12 is connected to the DataIn 
 pin 11 is connected to the CLK 
 pin 10 is connected to LOAD 
 We have only a single MAX72XX.
 */
LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */
unsigned long delaytime=100;

void setup() {
  /*
   The MAX72XX is in power-saving mode on startup,
   we have to do a wakeup call
   */
  lc.shutdown(0,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(0,8);
  /* and clear the display */
  lc.clearDisplay(0);
}

/*
 This method will display the characters for the
 word "Arduino" one after the other on the matrix. 
 (you need at least 5x7 leds to see the whole chars)
 */
void writeArduinoOnMatrix() {
  /* here is the data for the characters */
  byte a[5]={B01111110,B10001000,B10001000,B10001000,B01111110};
  byte r[5]={B00111110,B00010000,B00100000,B00100000,B00010000};
  byte d[5]={B00011100,B00100010,B00100010,B00010010,B11111110};
  byte u[5]={B00111100,B00000010,B00000010,B00000100,B00111110};
  byte i[5]={B00000000,B00100010,B10111110,B00000010,B00000000};
  byte n[5]={B00111110,B00010000,B00100000,B00100000,B00011110};
  byte o[5]={B00011100,B00100010,B00100010,B00100010,B00011100};

  /* now display them one by one with a small delay */
  lc.setRow(0,0,a[0]);
  lc.setRow(0,1,a[1]);
  lc.setRow(0,2,a[2]);
  lc.setRow(0,3,a[3]);
  lc.setRow(0,4,a[4]);
  delay(delaytime);
  lc.setRow(0,0,r[0]);
  lc.setRow(0,1,r[1]);
  lc.setRow(0,2,r[2]);
  lc.setRow(0,3,r[3]);
  lc.setRow(0,4,r[4]);
  delay(delaytime);
  lc.setRow(0,0,d[0]);
  lc.setRow(0,1,d[1]);
  lc.setRow(0,2,d[2]);
  lc.setRow(0,3,d[3]);
  lc.setRow(0,4,d[4]);
  delay(delaytime);
  lc.setRow(0,0,u[0]);
  lc.setRow(0,1,u[1]);
  lc.setRow(0,2,u[2]);
  lc.setRow(0,3,u[3]);
  lc.setRow(0,4,u[4]);
  delay(delaytime);
  lc.setRow(0,0,i[0]);
  lc.setRow(0,1,i[1]);
  lc.setRow(0,2,i[2]);
  lc.setRow(0,3,i[3]);
  lc.setRow(0,4,i[4]);
  delay(delaytime);
  lc.setRow(0,0,n[0]);
  lc.setRow(0,1,n[1]);
  lc.setRow(0,2,n[2]);
  lc.setRow(0,3,n[3]);
  lc.setRow(0,4,n[4]);
  delay(delaytime);
  lc.setRow(0,0,o[0]);
  lc.setRow(0,1,o[1]);
  lc.setRow(0,2,o[2]);
  lc.setRow(0,3,o[3]);
  lc.setRow(0,4,o[4]);
  delay(delaytime);
  lc.setRow(0,0,0);
  lc.setRow(0,1,0);
  lc.setRow(0,2,0);
  lc.setRow(0,3,0);
  lc.setRow(0,4,0);
  delay(delaytime);
}

/*
  This function lights up a some Leds in a row.
 The pattern will be repeated on every row.
 The pattern will blink along with the row-number.
 row number 4 (index==3) will blink 4 times etc.
 */
void rows() {
  for(int row=0;row<8;row++) {
    delay(delaytime);
    lc.setRow(0,row,B10100000);
    delay(delaytime);
    lc.setRow(0,row,(byte)0);
    for(int i=0;i<row;i++) {
      delay(delaytime);
      lc.setRow(0,row,B10100000);
      delay(delaytime);
      lc.setRow(0,row,(byte)0);
    }
  }
}

/*
  This function lights up a some Leds in a column.
 The pattern will be repeated on every column.
 The pattern will blink along with the column-number.
 column number 4 (index==3) will blink 4 times etc.
 */
void columns() {
  for(int col=0;col<8;col++) {
    delay(delaytime);
    lc.setColumn(0,col,B10100000);
    delay(delaytime);
    lc.setColumn(0,col,(byte)0);
    for(int i=0;i<col;i++) {
      delay(delaytime);
      lc.setColumn(0,col,B10100000);
      delay(delaytime);
      lc.setColumn(0,col,(byte)0);
    }
  }
}

/* 
 This function will light up every Led on the matrix.
 The led will blink along with the row-number.
 row number 4 (index==3) will blink 4 times etc.
 */
void single() {
  for(int row=0;row<8;row++) {
    for(int col=0;col<8;col++) {
      delay(delaytime);
      lc.setLed(0,row,col,true);
      delay(delaytime);
      for(int i=0;i<col;i++) {
        lc.setLed(0,row,col,false);
        delay(delaytime);
        lc.setLed(0,row,col,true);
        delay(delaytime);
      }
    }
  }
}

void loop() { 
  writeArduinoOnMatrix();
  rows();
  columns();
  single();
}

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
项目:冬天来了,是时候考虑一些温暖的想法和LED矩阵上的壁炉了
Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
  项目之四十:冬天来了,是时候考虑一些温暖的想法和LED矩阵上的壁炉了
*/

#include "LedControl.h"
LedControl lc = LedControl(12, 11, 10, 1);

int theHeightTarget[8];
int theHeightCurrent[8];

int fireHeight = 0;
int sparkX = 0;

void setup() {
  lc.shutdown(0, false);
  lc.setIntensity(0, 8);
  lc.clearDisplay(0);
  Serial.begin(115200);
}

void loop() {  
  //lc.clearDisplay(0);
  // set Heights
  if (int(random(1)) == 0) {
    for (int x = 0; x < 8; x++) {
      theHeightTarget[x] = int(random(5)) + 1;
    }
  }

  // update
  for (int x = 0; x < 8; x++) {
    if (theHeightTarget[x] > theHeightCurrent[x])theHeightCurrent[x]++;
    if (theHeightTarget[x] < theHeightCurrent[x])theHeightCurrent[x]--;
  }

  // show display 
  for (int x = 0; x < 8; x++) {
    for (int y = 0; y < theHeightCurrent[x]; y++) {
      lc.setLed(0, x, y, 1);
    }
    for (int y = theHeightCurrent[x]; y < 8; y++) {
      lc.setLed(0, x, y, 0);
    }
  }

  // spark – Funkenflug
  sparkX = int(random(8));
  if (int(random(40)) == 0) {
    for (int y = 4; y < 8; y++) {
      if (y == 4) {
        lc.setLed(0, sparkX, y, 1);
      } else {
        lc.setLed(0, sparkX, y, 1);
        lc.setLed(0, sparkX, y - 1, 0);
      }
      delay(25);
    }
  } else {
    delay(100);
  }
}

在这里插入图片描述

确定各行的照明高度。

if (int(random(1)) == 0) {
  for (int x = 0; x < 8; x++) {
    theHeightTarget[x] = int(random(5)) + 1;
  }
}

尝试调整当前的光高。

// update
for (int x = 0; x < 8; x++) {
  if (theHeightTarget[x] > theHeightCurrent[x])theHeightCurrent[x]++;
  if (theHeightTarget[x] < theHeightCurrent[x])theHeightCurrent[x]--;
}

然后显示在矩阵上:

// show display
for (int x = 0; x < 8; x++) {
  for (int y = 0; y < theHeightCurrent[x]; y++) {
    lc.setLed(0, x, y, 1);
  }
  for (int y = theHeightCurrent[x]; y < 8; y++) {
    lc.setLed(0, x, y, 0);
  }
}

时不时地,火花溶解并向上飞扬。

// spark – Funkenflug
sparkX = int(random(8));
if (int(random(40)) == 0) {
  for (int y = 4; y < 8; y++) {
    if (y == 4) {
      lc.setLed(0, sparkX, y, 1);
    } else {
      lc.setLed(0, sparkX, y, 1);
      lc.setLed(0, sparkX, y - 1, 0);
    }
  delay(25);
  }
} else {
  delay(100);
}

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

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

相关文章

Failed to initialize NVML: Driver/library version mismatch (解决)

问题描述 运行nvidia-smi报错&#xff1a; Failed to initialize NVML: Driver/library version mismatch解决方法 只需一步&#xff1a;下载一个安装包&#xff0c;运行一个命令来重新安装cuda driver和cuda toolkit&#xff08;在一个包里&#xff09;。 到这里&#xff1…

JVS开源基础框架:用户管理介绍(支持同步钉钉、企微、微信等)

在企业内部系统中&#xff0c;用户管理是指对系统内的用户进行管理、授权和权限管理的过程&#xff0c;这里主要介绍用户的创建与基本信息的管理&#xff0c;权限、登录等详细介绍请参考相关章节。 用户管理界面 点击平台管理-用户管理&#xff0c;界面上展示了组织管理与组织…

磁盘分区形式MBR与GPT介绍

磁盘分区形式MBR与GPT介绍 磁盘分区形式有两种&#xff1a; 1、MBR&#xff08;主启动记录&#xff09;形式&#xff0c;它是存在于磁盘驱动器开始部分的一个特殊的启动扇区&#xff1b; 2、GPT&#xff08;GUID分区表&#xff09;形式&#xff0c;它是一种使用UEFI启动的磁盘…

网络操作系统详解

网络操作系统的概念 操作系统是计算机系统中用来管理各种软硬件资源&#xff0c;提供人机交互使用的软件。网络操作系统可实现操作系统的所有功能&#xff0c;并且能够对网络中的资源进行管理和共享。网络操作系统(Network Operation System&#xff0c;NOS)是使网络上各种计算…

ai绘画怎么弄?这份ai绘画教程你必须知道

我有一个关系非常好的女性朋友&#xff0c;她的闺蜜即将过生日&#xff0c;她想给她闺蜜准备一份特别的礼物。但是&#xff0c;她对绘画毫无天赋。因此&#xff0c;我给她推荐了几款好用的ai绘画工具&#xff0c;这些神奇的ai绘画工具能帮助她创作出栩栩如生、美丽动人的女生形…

从零开始基于go-zero的go web项目实战-01项目初始化

从零开始基于go-zero搭建go web项目实战-01项目初始化 简介 导语 Go 是 Google 开发的一种静态强类型、编译型、并发型&#xff0c;并具有垃圾回收功能的编程语言&#xff0c;go语言的特点&#xff1a; 语法简洁Go语言简单易学&#xff0c;学习曲线平缓代码风格统一执行性能…

Spring Boot进阶(56):使用 ECharts 绘制各种花哨的统计图 | 超级详细,建议收藏

1. 前言&#x1f525; 在前几期&#xff0c;我们重点学习了如何在Spring Boot中使用模板引擎Thymeleaf开发Web应用的基础。接下来&#xff0c;我们介绍一下后端开发经常会遇到的一个场景&#xff1a;可视化图表。比如如下&#xff1a; 通常啊&#xff0c;这类业务在客户端应用中…

Meta与微软联手推出开源大型语言模型Llama 2;程序员如何优雅地做副业

&#x1f989; AI新闻 &#x1f680; Meta与微软联手推出开源大型语言模型Llama 2 摘要&#xff1a;Meta和微软近期合作发布了名为Llama 2的开源大型语言模型。该模型旨在帮助开发者和组织构建生成式人工智能工具和体验。Azure客户可以更轻松、安全地在Azure平台上微调和部署…

6、Java入门教程【数组】

数组是用于存储同种类型的多个数据的容器。 一、声明 //语法 dataType[] arrayRefVar; // 首选的方法 或 dataType arrayRefVar[]; // 效果相同&#xff0c;但不是首选方法//示例 double[] myList; // 首选的方法 或 double myList[]; // 效果相同&…

7.6Java EE——Bean的生命周期

Bean在不同作用域内的生命周期 Bean的生命周期是指Bean实例被创建、初始化和销毁的过程。在Bean的两种作用域singleton和prototype中&#xff0c;Spring容器对Bean的生命周期的管理是不同的。在singleton作用域中&#xff0c;Spring容器可以管理Bean的生命周期&#xff0c;控制…

2023 年最全的 5 款免费 PDF 编辑器

这里&#xff0c;我们回顾并比较了一些最好的开源 PDF 编辑器&#xff0c;以及每个编辑器的主要功能和优缺点&#xff1a; 寻找免费的 PDF 编辑器很困难&#xff0c;特别是如果您正在寻找开源 PDF 编辑器。但您不必担心在线搜索 PDF 编辑器的研究和分析&#xff0c;因为我们已…

Apikit 自学日记:测试模板

在 APIKIT 中&#xff0c;你可以将重复的测试步骤添加到测试模板库中&#xff0c;并且在测试用例中引用测试模板来实现复用测试步骤的目的。如将用户登录、清理数据库等操作作为测试模板&#xff0c;并将该用例引入到多个测试用例中&#xff0c;减少不必要的工作。 添加测试模板…

通达信组合副图指标公式-通达信公式

A:REF((C>O),2); A1:REF((C>O),1); A2:C>O OR CO; A3:REF(O,1)<REF(C,2); A4:O<REF(C,1); A5:REF((C-O),1)<REF((C-O),2); A6:(C-O)<REF((C-O),1); A7:REF(C,2)>REF(O,7)*1.05; 节奏1:A AND A1 AND A2 AND A3 AND A4 AND A5 AND A6 AND A7; 节奏2:A AN…

FTP与HTTP: 哪种协议更适合大文件传输?

随着互联网技术的发展&#xff0c;网络传输已成为了现代社会中不可或缺的一部分。无论是文本、图像、音频、视频等各种类型的数据&#xff0c;相应的传输协议也在不断地发展和更新。FTP&#xff08;File Transfer Protocol&#xff09;和HTTP&#xff08;Hyper Text Transfer P…

手写IOC

IOC原理(手写IOC) Spring框架的IOC是基于反射机制实现的。 反射回顾 Java反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff0c;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息…

开放式蓝牙耳机推荐哪款?开放式蓝牙耳机排行榜推荐

​说到开放式耳机&#xff0c;想必很多人听着还是陌生&#xff0c;普通耳机久戴&#xff0c;会出现耳朵疼痛问题&#xff0c;而开放式蓝牙耳机没有&#xff0c;不入耳的设计更加的干净&#xff0c;不会对耳道造成的伤害&#xff0c;下面我给大家推荐几款很不错的开放式耳机&…

C++学习——类和对象(二)

紧接着我们上一部分类和对象的讲解之后&#xff0c;我们再来学习一下类当中的几大特点&#xff0c;以及使用方法。 一&#xff1a;实例化对象赋初值 首先我们需要学习的就是该如何为我们实例化出的对象赋初值。 1.外部赋值 对于对象赋初值我们有很多的形式&#xff0c;我们甚至…

【lesson1】Linux发展史

文章目录 推动技术进步的基本模式为什么科技一直在进步&#xff1f;科技进步动力是什么&#xff1f; 理解操作系统的发展计算机的发明操作系统的发展Linux的发展 开源为什么有人愿意参加开源项目呢&#xff1f;开源的好处 Linux的应用为什么Windows更好用&#xff1f;OS(操作系…

CGT Asia嘉年华|2023第四届亚洲细胞与基因治疗 创新峰会(广州站)10月升级启航

近年来&#xff0c;全球CGT发展突飞猛进&#xff0c;为遗传罕见病、难治性慢性病和肿瘤患者带来了新的希望&#xff0c;也成为整个国际领域科技竞争的未来焦点。国家发改委发布的《“十四五”生物经济发展规划》明确指出要重点发展基因诊疗、干细胞治疗、免疫细胞治疗等新技术&…

ROS学习——通信机制(常用命令)

2.4 常用命令 Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程088常用命令简介_Chapter2-ROS通信机制_哔哩哔哩_bilibili 机器人系统中启动的节点少则几个&#xff0c;多则十几个、几十个&#xff0c;不同的节点名称各异&#xff0c;通信时使用话题、服务、消息、参…