【雕爷学编程】Arduino动手做(163)---大尺寸8x8LED方格屏模块7

news2024/10/6 18:23:22

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

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十:轮流显示数字 “1 - 9” 以及中文 “中”,“国”
实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
  项目三十:轮流显示数字 “1 - 9” 以及中文 “中”,“国”
  接脚连线:
  MAX7219       UNO
  VCC  →→→→→ 5V
  GND  →→→→→ GND
  DIN  →→→→→ D12(数据,数据接收引脚)
  CS   →→→→→ D11(负载,命令接收引脚)
  CLK  →→→→→ D10(时钟,时钟引脚)
*/

int clk = 10;
int cs = 11;
int din = 12;

unsigned char disp1[12][8] = {
  {0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C}, //0
  {0x08, 0x18, 0x28, 0x08, 0x08, 0x08, 0x08, 0x08}, //1
  {0x7E, 0x2, 0x2, 0x7E, 0x40, 0x40, 0x40, 0x7E}, //2
  {0x3E, 0x2, 0x2, 0x3E, 0x2, 0x2, 0x3E, 0x0}, //3
  {0x8, 0x18, 0x28, 0x48, 0xFE, 0x8, 0x8, 0x8}, //4
  {0x3C, 0x20, 0x20, 0x3C, 0x4, 0x4, 0x3C, 0x0}, //5
  {0x3C, 0x20, 0x20, 0x3C, 0x24, 0x24, 0x3C, 0x0}, //6
  {0x3E, 0x22, 0x4, 0x8, 0x8, 0x8, 0x8, 0x8}, //7
  {0x0, 0x3E, 0x22, 0x22, 0x3E, 0x22, 0x22, 0x3E}, //8
  {0x3E, 0x22, 0x22, 0x3E, 0x2, 0x2, 0x2, 0x3E}, //9
  {0x08, 0x7F, 0x49, 0x49, 0x7F, 0x08, 0x08, 0x08}, //中
  {0xFE, 0xFE, 0x92, 0xFE, 0x9A, 0xFE, 0x82, 0xFE}, //国
};

void setup() {
  //设置引脚为输出
  pinMode(cs, OUTPUT);
  pinMode(clk, OUTPUT);
  pinMode(din, OUTPUT);

  //初始化MAX7219
  Init_MAX7219();
}

void loop() {
  char i, j;

  //字体扫描显示
  for (j = 0; j < 12; j++)
  {
    for (i = 1; i < 9; i++)
    {
      Write_Max7219(i, disp1[j][i - 1]);
      delay(20);
    }
    delay(50);
  }

}

void Write_Max7219_byte(char DATA)
{
  char i;
  digitalWrite(cs, 0);
  for (i = 8; i >= 1; i--)
  {
    digitalWrite(clk, 0);
    if ((DATA & 0x80) > 0) {
      digitalWrite(din, 1);
    } else {
      digitalWrite(din, 0);
    }
    //提取最高位给DIN端口
    DATA = DATA << 1; //左移一位
    digitalWrite(clk, 1);
  }
}
void Write_Max7219(char address, char dat)
{
  digitalWrite(cs, 0);
  Write_Max7219_byte(address);           //写入地址,编号
  Write_Max7219_byte(dat);               //写入数据,即显示数字
  digitalWrite(cs, 1);
}
void Init_MAX7219(void)
{
  Write_Max7219(0x09, 0x00);        //译码方式:BCD码
  Write_Max7219(0x0a, 0x01);        //亮度
  Write_Max7219(0x0b, 0x07);        //扫描界限;显示
  Write_Max7219(0x0c, 0x01);        //掉电模式:0,普通模式:1
  Write_Max7219(0x0f, 0x00);
  delay(50);               //显示测试:1;测试结束,正常显示:0
}

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十:轮流显示数字 “1 - 9” 以及中文 “中”,“国”

实验场景图片

在这里插入图片描述

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十一:使用Matrix库的三色LED
实验开源代码

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

 项目三十一:使用Matrix库的三色LED

 接脚连线:

 MAX7219    UNO

 VCC →→→→→ 5V

 GND →→→→→ GND

 DIN →→→→→ D12(数据,数据接收引脚)

 CS  →→→→→ D11(负载,命令接收引脚)

 CLK →→→→→ D10(时钟,时钟引脚)

*/

#include <Sprite.h> // Sprite before Matrix

#include <Matrix.h>

//DIN, CLK, CS, #chips

Matrix myLeds = Matrix(12, 10, 11, 3);

Sprite letter_D = Sprite(6, 8,

             B111100,

             B111110,

             B110111,

             B110011,

             B110011,

             B110111,

             B111110,

             B111100

            );

Sprite letter_E = Sprite(5, 8,

             B11111,

             B11111,

             B11000,

             B11110,

             B11110,

             B11000,

             B11111,

             B11111

            );

Sprite letter_L = Sprite(5, 8,

             B11000,

             B11000,

             B11000,

             B11000,

             B11000,

             B11000,

             B11111,

             B11111

            );

void setup() {

 myLeds.setBrightness(0);

}

void loop() {

 myLeds.clear();

 delay(1000);

 myLeds.write(17, 0, letter_L);

 delay(1000);

 myLeds.write(9, 0, letter_E);

 delay(1000);

 myLeds.write(1, 0, letter_D);

 delay(1000);

}

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十一:使用Matrix库的三色LED

实验场景图片

在这里插入图片描述

Matrix库的几个函数

基本用法,仅限像素

Matrix myLeds = Matrix(DIN,CLK,LOAD,numChips);

使用您选择的名称创建Matrix对象的实例。DIN,CLK和LOAD是连接这些信号的引脚号。如果连接了多个单独连接的MAX7219芯片,则可以创建多个对象。

myLeds.clear();

清除整个显示屏。

myLeds.setBrightness(15;

设置显示亮度,从0到15(最亮)。

myLeds.write(x,y,value);

更改单个像素。对于关闭,值应为LOW,对于on,值应为HIGH。

基本用法,使用Sprite

Sprite myIcon = Sprite(宽度,高度,B11000,B11000,B11111,B11111);

创建一个精灵对象。您可以根据需要创建任意数量的精灵,每个精灵都有一个唯一的名称。宽度应与每个数据值中的位数匹配,高度应与数据值的数量匹配。

myLeds.write(x,y,myIcon);

在显示屏上绘制一个闪烁的精灵。

Sprite库允许创建与Matrix库一起使用的图像精灵

Sprite

启动LCD库。

width()

返回精灵的宽度(以像素为单位)。

height()

返回精灵的高度(以像素为单位)。

write()

将数据写入精灵的x,y位置。

read()

返回存储在sprite的x,y位置的数据。

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十二:建立字母库,横式滚动文本显示(三级联)
实验开源代码

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度

项目三十二:建立字母库,横式滚动文本显示(三级联)

接线接脚:

 MAX7219    UNO

 VCC →→→→→ 5V

 GND →→→→→ GND

 DIN →→→→→ D12(数据,数据接收引脚)

 CS  →→→→→ D11(负载,命令接收引脚)

 CLK →→→→→ D10(时钟,时钟引脚)

*/

#include <MaxMatrix.h>

#include <avr/pgmspace.h>

PROGMEM const unsigned char CH[] = {

 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space

 1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !

 3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "

 5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #

 4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $

 5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %

 5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &

 1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '

 3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (

 3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )

 5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *

 5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +

 2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,

 4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // -

 2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // .

 4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /

 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0

 3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1

 4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2

 4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3

 4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4

 4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5

 4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6

 4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7

 4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8

 4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9

 2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // :

 2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;

 3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <

 3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =

 3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // >

 4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?

 5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @

 4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A

 4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B

 4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C

 4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D

 4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E

 4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F

 4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G

 4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H

 3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I

 4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J

 4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K

 4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L

 5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M

 5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N

 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O

 4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P

 4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q

 4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R

 4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S

 5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T

 4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U

 5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V

 5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W

 5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X

 5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y

 4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z

 2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [

 4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash

 2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]

 3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat

 4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _

 2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `

 4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a

 4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b

 4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c

 4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d

 4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e

 3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f

 4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g

 4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h

 3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i

 4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j

 4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k

 3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l

 5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m

 4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n

 4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o

 4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p

 4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q

 4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r

 4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s

 3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t

 4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u

 5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v

 5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w

 5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x

 4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y

 3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z

 3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {

 1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |

 3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }

 4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~

};

int DIN = 12;  

int CLK = 10;  

int CS = 11;  

int maxInUse = 3;

MaxMatrix m(DIN, CS, CLK, maxInUse);

byte buffer[10];

char text[]= "Hello Eagler8 "; // 滚动文本

void setup() {

 m.init(); // 模块初始化

 m.setIntensity(8); // 点阵亮度 0-15

}

void loop() {

 printStringWithShift(text, 100); // (文字,滚动速度)

}

// 显示=滚动提取的字符

void printCharWithShift(char c, int shift_speed) {

 if (c < 32) return;

 c -= 32;

 memcpy_P(buffer, CH + 7 * c, 7);

 m.writeSprite(32, 0, buffer);

 m.setColumn(32 + buffer[0], 0);

 for (int i = 0; i < buffer[0] + 1; i++){

  delay(shift_speed);

  m.shiftLeft(false, false);

 }

}

// 从文本字符串中提取字符

void printStringWithShift(char* s, int shift_speed) {

 while (*s != 0) {

  printCharWithShift(*s, shift_speed);

  s++;

 }

}

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十二:建立字母库,横式滚动文本显示(三级联)

实验场景图片

在这里插入图片描述
大小点阵屏的对比

在这里插入图片描述

6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十三:动态音乐频谱仪

实验开源代码

/*

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
  项目三十三:动态音乐频谱仪
  接脚连线:
  MAX7219       UNO
  VCC  →→→→→ 5V
  GND  →→→→→ GND
  DIN  →→→→→ D12(数据,数据接收引脚)
  CS   →→→→→ D11(负载,命令接收引脚)
  CLK  →→→→→ D10(时钟,时钟引脚)
*/

#include "LedControl.h"

/* Led matrix - Max7219 Declared */
LedControl lc = LedControl(12, 11, 10, 1);

const int maxScale = 11;

/*  Sensor - Max9812 Declared */
const int sensorPin = A4;
const int sampleWindow = 50;  // 50ms = 20Hz
unsigned int sample;

unsigned long startMillis;
unsigned long timeCycle;

unsigned int signalMax = 0;
unsigned int signalMin = 1024;
unsigned char index = 0;

unsigned int peakToPeak[8];
unsigned int displayPeak[8];
unsigned int temp[8] = {0, 0, 0, 0, 0, 0, 0, 0};
unsigned int signalMaxBuff[8];
unsigned int signalMinBuff[8];


void setup() {
  // Led matrix
  lc.shutdown(0, false); // bật hiện thị
  lc.setIntensity(0, 1); // chỉnh độ sáng
  lc.clearDisplay(0); // tắt tất cả led

  Serial.begin(9600);
}

void loop() {
  startMillis = millis();
  //peakToPeak = 0;

  signalMax = 0;
  signalMin = 1024;

  // Get data in 50ms
  while (millis() - startMillis < sampleWindow) {
    sample = analogRead(sensorPin);

    if (sample < 1024) {
      if (sample > signalMax) {
        signalMax = sample;
      }
      if (sample < signalMin) {
        signalMin = sample;
      }
    }

    // 20Hz - 64Hz - 125Hz - 250Hz - 500Hz - 1kHz (timeCycle = 1/F)(ms)
    timeCycle = millis() - startMillis;
    if (timeCycle == 1 || timeCycle == 2 || timeCycle == 4 || timeCycle == 8
        || timeCycle == 16 || timeCycle == 32 || timeCycle == 40 || timeCycle == 50) {
      signalMaxBuff[index] = signalMax;
      signalMinBuff[index] = signalMin;
      index = (index + 1) % 8;
      delay(1);
      //Serial.println(timeCycle);
    }
  }

  // Delete pointer to array
  index = 0;

  // Calculation after get samples
  for (int i = 0; i < 8; i++) {  // i = row (led matrix)
    // sound level
    peakToPeak[i] = signalMaxBuff[i] - signalMinBuff[i];

    // Map 1v p-p level to the max scale of the display
    displayPeak[i] = map(peakToPeak[i], 0, 1023, 0, maxScale);

    // Show to led matrix
    displayLed(displayPeak[i], i);

    // Led drop down
    if (displayPeak[i] >= temp[i]) {
      temp[i] = displayPeak[i];
    }
    else {
      temp[i]--;
    }

    lc.setLed(0, i, temp[i], true);
    delayMicroseconds(250);
  }

}

void displayLed(int displayPeak, int row) {
  switch (displayPeak) {
    case 0 : lc.setRow(0, row, 0x80); break;
    case 1 : lc.setRow(0, row, 0xC0); break;
    case 2 : lc.setRow(0, row, 0xE0); break;
    case 3 : lc.setRow(0, row, 0xF0); break;
    case 4 : lc.setRow(0, row, 0xF8); break;
    case 5 : lc.setRow(0, row, 0xFC); break;
    case 6 : lc.setRow(0, row, 0xFE); break;
    case 7 : lc.setRow(0, row, 0xFF); break;
  }
}

实验场景图

在这里插入图片描述
6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十三:动态音乐频谱仪

实验视频剪辑
https://v.youku.com/v_show/id_XNTgxMDQ2OTc2MA==.html?spm=a2hcb.playlsit.page.1

在这里插入图片描述
项目:FFT算法的双点阵屏的动态频谱仪

实验视频剪辑

https://v.youku.com/v_show/id_XNTgyMjEwNjcwMA==.html?spm=a2hcb.playlsit.page.1

实验场景动态图

在这里插入图片描述

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

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

相关文章

Appium+python自动化(八)- 初识琵琶女Appium- 下(超详细)

​简介 通过上一篇给各位小伙伴们的引荐&#xff0c;大家移动对这位美女有了深刻的认识&#xff0c;而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里&#xff0c;是不是这样呢&#xff1f;&#xff1f;&#xff1f;不要害羞直接告诉说&#xff1a;是&#xff0c;就对了。…

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql

文章目录 问题描述我的使用场景描述结论本人其他相关文章链接 问题描述 开启慢SQL设置long_query_time0.1为啥会统计的sql却存在小于100毫秒的sql&#xff1f; 我的使用场景描述 我采用执行sql修改配置文件&#xff0c;也就是采用“临时生效操作步骤”开启慢SQL&#xff0c;比…

使用Mybatis-plus-join做多表查询

使用Mybatis-plus-join做多表查询 我们做多表查询都是要自己写sql的&#xff0c;还是比较麻烦的&#xff0c;下面介绍一种不用自己写sql的方式来完成多表查询。 这个第三方工具是一个大佬封装的一个jar包&#xff0c;即mybatis-plus-join架包&#xff0c;这个架包可以支持MyB…

实训平台场景一(培训)

过程&#xff1a;黑客通过内网攻击拿到了web服务器的权限&#xff0c;然后发现还有邮件服务器&#xff0c;通过双网卡一些漏洞攻击进来之后&#xff0c;业务双网卡通内网&#xff0c;通过他拿到了内网服务器。 #使用御剑目录扫描 现在流量传感器里面上传和流量表&#xff0c;…

python 抓取页面图片并保存到本地

1 直接上代码了 下面再做说明 今天就拿抓取这个页面的这块的图片为例 https://sc.chinaz.com/tupian/beijingtupian_2.html #分页下载所有的图片 完整例子 参考文档 https://blog.csdn.net/Monster_No17/article/details/106277822 import requests,lxml,re #发出…

Linux网络基础 — 网络层

目录 IP协议 IP协议报头格式 网段划分 特殊的IP地址 IP地址的数量限制 私有IP地址和公网IP地址 路由 补充 网络层 在复杂的环境中确定一个合适的路径。 IP协议 ip具有将数据从 主机A 跨网络送到 主机B 的能力。 主机: 配有IP地址&#xff0c;但是不进行路由控制的设备…

AI实时交互和实时动捕驱动数字人各有何优势?企业该怎么选择?

在元宇宙时代下 虚拟数字人作为虚拟偶像、虚拟代言人 数字员工、虚拟主播等身份 逐渐出现于大众视野 品牌通过虚拟数字人 实现跨领域、跨圈层营销 虚拟数字人 到底是什么&#xff1f; 是企业赋予品牌的一个可视化虚拟形象 是通过长时间的经营&#xff0c;可以形成品牌资…

6!Xshell全版本密码一键恢复工具

工具介绍 Xshell全版本凭证一键恢复工具&#xff0c;针对Xshell全版本在本地保存的密码进行解密&#xff0c;包括最新的7系列版本&#xff0c;可自动寻找或指定Sessions路径。 关注【Hack分享吧】公众号&#xff0c;回复关键字【230608】获取下载链接 .\SharpXDecrypt.exe .\S…

西安丨高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术应用

目录 ​第一章 预测平台讲解及安装 第二章 一体化预测工具详解与数据获取及制备 第三章 风资源预测自动化技术 第四章 太阳能资源自动化预测技术 第五章 水资源自动化预测技术 第六章 后处理自动化技术 更多推荐 能源是国民经济发展和人民生活必须的重要物质基础。在过去…

怎样监控员工电脑在做什么?

随着科技的不断发展&#xff0c;越来越多的企业开始关注员工的工作效率和安全问题。为了确保员工的工作质量和保护企业的利益&#xff0c;监控员工的电脑屏幕成为一种常见的管理手段。 监控员工的电脑屏幕是一种现在大部分企业常见的管理手段&#xff0c;可以通过使用洞察眼MIT…

行业追踪,2023-07-17,静待减速器macd反转

自动复盘 2023-07-17 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Ubuntu查找并安装指定版本包

命令如下: #查看指定包信息 apt-cache show kubeadm | grep 1.23.2 #安装指定版本 apt-get install kubeadm1.23.2-00

前端权限管理

一、概念 前端所谓的权限管理就是我们需要根据用户的角色不同来展示不同的内容&#xff0c;如下图所示&#xff1a; 超级管理员&#xff1a; vip会员&#xff1a; 游客&#xff1a; 像上面这样&#xff0c;根据用户的不同来展示不同的菜单栏。 二、实现思路 首先用户输入…

3GPP 中 规定V2X方案的性能要求

目录 1. 编队要求 2.高级驾驶性能要求 3.扩展传感器性能要求 4..远程驾驶性能要求 本文主要总结是将3GPP规定的V2X方案的性能要求&#xff0c;以做了解和参考。节选自5G核心网规划与应用 吴成林等编著&#xff0c;侵删。 1. 编队要求 &#xff08;1&#xff09;3GPP系统应…

【Linux】多线程(一)

文章目录 线程的概念线程优点线程缺点线程异常线程用途线程分离局部变量和全局变量互斥锁对锁的封装代码互斥量的接口互斥量实现原理探究可重入VS线程安全概念常见的线程不安全的情况 常见的线程安全的情况常见不可重入的情况常见可重入的情况可重入与线程安全联系可重入与线程…

「流失订单召回」AI功能上线,助力企业高效挽回潜客!

据QuestMobile《2020年第三季度中国移动互联网行业数据监测报告》统计&#xff0c;国内用户将商品放入购物车但最终未购买的情况占比高达69.8%&#xff0c;这无异是品牌业务的重大损失点。 用户将商品加入购物车代表着他们有一定的购买意向&#xff0c;但是被“遗弃”也意味着…

Jenkins极简体验

做研发运营一体化&#xff08;或者说运维&#xff09;的人员&#xff0c;对Jenkins一定不陌生。 这个工具在CI/CD链条中充当了大内总管的角色 很多时候&#xff0c;我们喜欢用抽象的概念描述一个东西。本来简简单单的一个工具或者一个软件甚至一个系统&#xff0c;往往被冠以各…

【Vue】day01-Vue基础入门

目录 day01 一、为什么要学习Vue 二、什么是Vue 1.什么是构建用户界面 2.什么是渐进式 Vue的两种开发方式&#xff1a; 3.什么是框架 总结&#xff1a;什么是Vue&#xff1f; 三、创建Vue实例 四、插值表达式 {{}} 1.作用&#xff1a;利用表达式进行插值&#xff0c…

python接口自动化(三十九)- logger 日志 - 上(超详解)

简介 Python的logging模块提供了通用的日志系统&#xff0c;可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别&#xff0c;并可以采用不同的方式记录日志&#xff0c;比如文件&#xff0c;HTTP GET/POST&#xff0c;SMTP&#xff0c;Socket等&#xff0c;甚至可以…

给自己工作的箴言

箴言 目录概述需求&#xff1a; 设计思路实现思路分析工作箴言 性能参数测试&#xff1a; Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive.…