arudino 知识整理

知识整理

Arduion

U8G2简要说明

u8g2显示分为全页显示与分页显示和U8X8的无ram显示

全页显示需要单片机提供1024字节的ram,分页显示分为需要256字节和125字节的ram

U8X8不需要ram,但不可画图,只能显示文字

全页使用 clearbuff senddbuff

分页使用 U8G2.fisrt Page  while(u8g2.next page)

         参考arduino u8g2示列

接口方式分为spi和IIC ,8080,8060控制方式

SPI 可以分为硬件SPI和软件SPI

IIC可以分为硬件IIC 和软件IIC

速度对比:8080 8060 >硬件SPI >l软件SPI>硬件IIC>软件IIC

IO口占用量  8080 8060 >SPI >IIC

U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

//U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 12, /* dc=*/ 4, /* reset=*/ 6); // Arduboy (Production, Kickstarter Edition)

//U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

//U8G2_SSD1306_128X64_ALT0_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);   //

4W 4WIRE 4线

NONAME 全页显示

HW HARDWARE 硬件 HW_SPI硬件SPI

SW SOFTWARE 软件 SW_SPI 软件SPI

u8g2

源代码地址: https://github.com/olikraus/u8g2

PNG转字库软件地址 https://github.com/olikraus/u8g2/tree/master/tools/font/png2bdf

字库制作 使用u8g2自带的工具,将图片转为字体文件,可以压缩图片的数据,减少空间占用

使用说明:

test\目录下 do_track.sh

rm track_font.png

../png2bdf -f track -o track.bdf -e 65 *.png

../../bdfconv/bdfconv -f 1 -b 0 -m '65-97' -v track.bdf -n track_font -o track_font.c -d ../../bdf/helvB24.bdf -g 4

convert bdf.tga track_font.png

rm bdf.tga

提供的字体类型  \u8g2-master\doc\u8g2fntlistall.pdf

帮助:https://github.com/olikraus/u8g2/wiki

玩转u8g2 OLED库,一篇就够——基于SMT32HAL

https://blog.csdn.net/qq_51096702/article/details/130257230

adafruit-gfx 显示器库,提供统一的对多种显示器的统一操作

字体显示 ,绘图

TFT-ESPI 设置显示模式

Arduion-STM32

stm32duino 让stm32 在arduino中使用

源代码:https://github.com/stm32duino/Arduino_Core_STM32

busybox文件位置   stm32duino 下有个stm32tool 项目,内含有busybox.exe

使用usb转TTL烧写

使用 PA9 PA10 端口

PA9接 RX ,PA10接 TX ,3.3接 STM32板子的3.3V(面包板上发现5V更稳定,有时3.3无法上传),GND接GND

usb 转ttl  TX->PA10 RX ->PA9 GND->GND 3.3V ->3.3V 

指定串口管脚用法示例
使用ST官方Arduino库,可在STM32全系列开发板上进行如下实验。

注意:实例化串口对象需要加数字编号(Serialx中的x是串口编号,取值是1,2……):

HardwareSerial Serialx(PA10, PA9);  //将Serialx(x=1-4)串口x的管脚,一定要带编号,如:Serial1
强调一下:不能实例化默认的串口:HardwareSerial Serial(PA10, PA9)
 

原文链接:https://blog.csdn.net/qcmyqcmy/article/details/128393652

ASRPRO语音识别模块

SOFT IIC 与PCA9685模块通信

pca9685 iic通信 地址位 ADDR<<1|0  左移一位 #define I2C_WRITE 0

#define I2C_READ  1

否则通信地址错误

asrpro

通过UART与电脑连接,可以进行简单的交互

将STM32作为接口扩展,通过SPI或IIC进行端口扩展

ASRPRO常见问题

烧写:请是否连接

换好一点的USB转TTL 或是用官方的下载器

VSCODE

添加库

移植U8G2

ESP32

开发板选择 ESP32 dev module 

arudino 知识整理_第1张图片

esp投屏 拔掉重插

spi uart iic usb can

差别

同步时钟,由主机控制通信频率

spi SCLK MOSI MISO SS

IIC SCL SDA

速度spi

IIC  SDA SCL 上拉4.7K电阻,

UART 异步,约定通讯频率

USB

CAN

差分通信,速度,稳定性

PYTHON

Serial 串口

官方文档 pySerial API — pySerial 3.4 documentation

安装

先卸载serial

python 安装 pip install pyserial

import serial

import time

sr = serial.Serial("COM5",9600,timeout = 0.1)

time.sleep(3) #重要的事说三遍 延时 延时 延时等待初始化完成

sr.set_buffer_size(2,2) #上面不延时,此处设置无效

python3.6 如果装了serial很可能会遇到 AttributeError: module 'serial' has no attribute 'Serial' 这时候你要先卸载serial,在安装pyserial。

增加等待函数,否则

Input函数

input 阻塞 sys.stdin.readline()

串口通信 pyserial

问题 卸载

delay sleep 否则错误

https://www.cnblogs.com/liuxuanhe/articles/9112185.html python遇到的坑

python3.6 如果装了serial很可能会遇到 AttributeError: module 'serial' has no attribute 'Serial' 这时候你要先卸载serial,在安装pyserial。

http://www.inspinia.net/a/14391.html?action=onClick  Python应用开发——串口通信

不要使用 try 错误找不到

serial 御载 serial 安装 pyserial

文件名不要叫serial

VSCODE

vscode

ARUDINO exe的目录,否则错误

ARDUINO NANO A4,A5脚问题

STM32默认HARDWARE问题

STM32使用Arduino时指定串口的方法_arduino stm32 多串口-CSDN博客

拖地僧_国产MCU,stm32,ardunio-CSDN博客

软件SPI IIC WIRE HARDWIRE

stm32 arduino 使用

Ardruino IDE 

下载程序 

配件 usb转ttl ,stm32f103xx 板

使用 PA9 PA10 端口

PA9接 RX ,PA10接 TX ,3.3接 STM32板子的3.3V(面包板上发现5V更稳定,有时3.3无法上传),GND接GND

usb 转ttl  TX->PA10 RX ->PA9 GND->GND 3.3V ->3.3V 

python print("%d %d", %(1,2))

arduino 串口 不要回车

arduino

analogWrite 使用PWM

analogRead 使用DAC 两者不同

ANALOGWRITE 3,6,9,11,5,10 可使用PWM 其它引脚使用ANALOGWRITE不输出内容

使用PA9 PA10 进行串口收发

使用ST官方Arduino库,可在STM32全系列开发板上进行如下实验。

注意:实例化串口对象需要加数字编号(Serialx中的x是串口编号,取值是1,2……):

HardwareSerial Serialx(PA10, PA9);  //将Serialx(x=1-4)串口x的管脚,一定要带编号,如:Serial1
强调一下:不能实例化默认的串口:HardwareSerial Serial(PA10, PA9)
————————————————
版权声明:本文为CSDN博主「笑春风oO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qcmyqcmy/article/details/128393652

修改delay函数,模拟多线程操作,可以随时中断程序操作

#include 

HardwareSerial Serial1(PA10,PA9);

void setup() {

  Serial1.begin(115200);

 pinMode(PC13, OUTPUT);

 Serial1.println("hello");

}

// the loop function runs over and over again forever

void loop() {

 Serial2.println("hello world");

 digitalWrite(PC13, HIGH);  // turn the LED on (HIGH is the voltage level)

 delay(100);       // wait for a second

 digitalWrite(PC13, LOW);  // turn the LED off by making the voltage LOW

 delay(100);       // wait for a second

 Serial1.println("hello world");

}

#include 



HardwareSerial Serial1(PA10,PA9);



typedef unsigned int time_count;

typedef unsigned int State;









void setup() {

  // put your setup code here, to run once:

  Serial1.begin(115200);



  pinMode(PA2,OUTPUT);

  pinMode(PB6,OUTPUT);

  Serial1.println("hello");

}



  time_count tc0 = 0;

  time_count tc1 = 0;

  time_count tc2 = 0;

  State state2 = 0;



  bool bl1 = 0;

  int data = 0;



void loop() {

  // put your main code here, to run repeatedly:

  tc0 = tc0 +1;

  delay(1);



  //fly delay(20)

  if(tc0 % 20 == 0)

  {

    tc1 = tc1+1;

  }



  if(tc1 > 50 )

  {

   

    bl1 = !bl1;

    digitalWrite(PA2,bl1);

    digitalWrite(PB6,!bl1);

    tc1 = 0;

  }



  //breath  0->10 -> 0 silm 50  delay(100);

  if( tc0 % 100 == 0)  //wait delay 50

  {

    tc2 = tc2 +1;



  if(tc2 <= 10)

  {

    state2 = 0;

    data = data +1;

  }

  else if(tc2 < 20 )

  {

    state2 = 1;

    data = data -1;

  }

  else if(tc2 < 70 )

  {

    state2 = 3;

    data = 0;

  }

  else

  {

    state2 = 0;
    tc2 = 0;

  }

  Serial1.println(data);
  analogWrite(PA3,data);

  }

}

你可能感兴趣的:(arduino)