Liunx 下直接操作GPIO来操作PWM

这个是一个关于Edgebroad的GPIO的操作来实现PWM的类。 这个板子主控其实是AMD的FPGA,所以操作方法其实和其他有GPIO的linux板子方法差不多吧(比如树莓派 操作更像是一种写入寄存器的操作,emmmm,写半天还是成了写单片机编程。 但是是在Liunx下面,所以其实都是对文件的操作和读写,所以读写文件的速度其实对代码执行的速度是有很大影响的,而python的sleep函数在这个地方因为使用cpu的主频来计数,所以时间延时并不是很准确,其他办法正在研究(比如用Ctos 暂时没有别的解释,等到暑假之后再写。 import os import time def wr(x): f = open('/sys/class/gpio/gpio423/value', 'w') f.write(str(x)) f.close() class edge_pwm(): def __init__(self,pin) ->…

C语言期末考试自查手册

前言 为了期末考试写的,纯自查。不会像百科全书一样事无巨细地罗列清楚,基本用法还是要写一些的。 Part 1 输入输出流C 标准库 – <stdio.h> 1.输入输出流 1.1 printf函数 传参的内容: printf("<格式化字符串>", <参量表>); 其中格式化字符串和参量表是什么捏? 格式化字符串传递打印的内容与用“%”来标识后面参量表中变量的数据类型 举个例子: int d = 114514; printf(“qwq%d”,d); format 标签属性是 %[flags][width][.precision][length]specifier 其中占位符已在下一章介绍 flags(标识)描述–…

人是一根能思想的苇草

作者:帕斯卡尔 高中课本上面的文章,当时读到被里面这种态度而感动,如今还是常常想起这篇文章,实在是很喜欢 Translation: Man is a Thinking Reed (Blaise Pascal) (assembled by: alexcwlin; reviewed by: Adam Lam) 思想形成人的伟大。 Thought constitutes the greatness of man. =============================================== 人 只不过是一根苇草,是自然界最脆弱的东西;但他是一根能思想的苇草。 Man is but a reed, the most feeble thing in nature, but he is a thinking reed. 用不着整个宇宙都拿起武器来才能毁灭;…

深度学习 原理性实践

前言 以前一直是调用,从来都是知其然而不知其所以然,不太好,正好最近一直在使用yolov5,又很想搓一个自然语言聊天机器人,就决定学一学: Part1 理论基础 1.1 正向传播 输入为矩阵,对矩阵进行仿射变换后加上激活函数,反复几层之后输入,经过Softmax输出结果。用交叉熵损失判断其模型好坏,并进行下一步操作 1.2 反向传播 首先明确反向传播即损失值对网络中仿射变换参数的改变 对于softmax层,反向传播softmax层输出预测与实际的差值 对于仿射变换层,引入正则化惩罚项:reg与学习率:epsilon来约束反向传播 这个时候对于一般仿射变换: H = W*X +B 与其反向传播的输入值dW,dB 有 dW = dW + reg * W 更新W与B有: W = W – epsilon * dW B = B – espsilon * dB 这样就能实现反向传播在仿射变换中的流动了…

DIY激光雷达

前言:用arduino 和舵机和激光测距搓的,具体实现明天再写,好困啊\ Part1 什么是激光雷达 雷达很好理解(这里不讨论相控阵那种怪物),想象成旋转的测距仪。用电磁波发射与返回的时间差测得距离,而波长变化的测量甚至可以使用开普勒效应来得知被测物体的速度。 而我们因为没有能够在实验室这么小范围内还能正常定向发射的电磁波原(有也买不起,买得起也会被抓去谈话)所以退而求其次使用了激光测距的方法,原理与电磁波一模一样,都是电磁波嘛(笑。但是测量速度的功能就给砍了。 Part2 搓一个 那么对于角度的感知本来想用步进电机的,但是考虑到丢步的问题,还得用霍尔或者别的啥方法来校准,实在不太优雅,所以选择了舵机作为旋转的底座。 理论存在,实践可行,返回的数据包括角度与距离,那么只需要可视化这两个数据就可以啦,显示我们使用了一块oled的小屏幕,基本所有的东西都是自己以前做过的,所以非常好写。 #include <Wire.h> #include <Servo.h> #include <SparkFun_…

基于opencv的自动标注yolov5数据集

前言: 具体使用请查看我的github仓库: https://github.com/qwqpap/auto_maker 再需要yolo识别物体之前,通常需要漫长的标注过程,而本程序主打一个自动化 把目标图片放进以目标名字命名的文件夹 把目标名字文件夹放在images文件夹下面 确保每个类别的图片数量是一致的 把背景图片放在back文件夹 Part 1 一点线性代数 我们可以发现在对图片进行仿射变换时,只需要对原图片的一组基向量进行变化即可 那么在进行透视变换的时候就需要对三个想来进行同时的变换即可 具体的数学计算看代码吧,太晚了我想睡一会了 这个:言って。好好听 下面有两个版本,分别是仿射变换和透视变换,效果都还行,目前GitHub上面是透视变换的版本qwq。 import pyautogui as gui import cv2 import numpy import os import time import glob import cv2 import num…

ROS自查手册

0.0 Readme 本文纯属我自己当笔记用,估计不会很有用吧(笑 1 ROS前置工作 通常各种教程这个时候就会要求用虚拟机或者双系统了,但是我一直觉得这是一个极其令人不解的行为,因为反正是学习,跑的都是仿真,装个双系统也没什么用,还要花掉很大一块硬盘空间,所以这里使用Docker在windows11下面部署ros的虚拟环境,那么图形化就使用vscode,ssh和xming来实现吧。 具体操作在之前的文章如何使用docker在windows上愉悦运行ROS/ROS2 – 天鹅绒房间 (qwqpap.xyz) 2 ROS文件结构 ROS的文件结构,在工作目录下/src中放置自己写的功能包(或者别的包),/build里面是编译项目所需文件,功能包中的/scripts则存放各种Python脚本(解释型语言存疑 WorkSpace --- 自定义的工作空间 |--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。 |--- devel…