舵机的使用
NodeMCU原理图
NodeMCU需要注意的是: D0~D8并不是对应GPIO0~8,而在Arduino中需要使用的PIN是GPIO的编号.
对应关系是:
| NodeMCU Dx | GPIOx |
|---|---|
| D0 | GPIO16 |
| D1 | GPIO5 |
| D2 | GPIO4 |
| D3 | GPIO0 |
| D4 | GPIO2 |
| D5 | GPIO14 |
| D6 | GPIO12 |
| D7 | GPIO13 |
| D8 | GPIO15 |
| RX | GPIO3 |
| TX | GPIO1 |
| CLK | GPIO6 |
| SDO | GPIO7 |
| CMD | GPIO11 |
| SD1 | GPIO8 |
| SD2 | GPIO9 |
| SD3 | GPIO10 |
使用NodeMCU Arduino驱动步进电机板ULN2003
原文链接: ESP8266 NodeMCU – Controling Stepper Motor with ULN2003 Driver
最主要是2个:
- 使用了AccelStepper库,而不是常见的Stepper库.
- 电机要单独供电. 文章使用9V+LM7805稳压到5V, 我就直接用直流电源了. 5.3V下电流大约0.17A.
程序如下:
#include <AccelStepper.h> // Load the AccelStepper library
#define motorPin1 5 // IN1 pin on the ULN2003A driver to pin D1 on NodeMCU board
#define motorPin2 4 // IN2 pin on the ULN2003A driver to pin D2 on NodeMCU board
#define motorPin3 0 // IN3 pin on the ULN2003A driver to pin D3 on NodeMCU board
#define motorPin4 2 // IN4 pin on the ULN2003A driver to pin D4 on NodeMCU board
int stepsPerRevolution = 64; // steps per revolution
int degreePerRevolution = 5.625; // degree per revolution
/*
* AccelStepper::FULL2WIRE (2) means: 2 wire stepper (2 pins needed).
* AccelStepper::FULL3WIRE (3) means: 3 wire stepper, like a harddisk motor (3 pins needed).
* AccelStepper::FULL4WIRE (4) means: 4 wire stepper (4 pins needed).
* AccelStepper::HALF3WIRE (6) means: 3 wire half stepper, like a harddisk motor (3 pins needed)
* AccelStepper::HALF4WIRE (8) means: 4 wire half stepper (4 pins needed)
*
* AccelStepper uses AccelStepper::FULL4WIRE (4 pins needed) by default.
*/
AccelStepper stepper(AccelStepper::HALF4WIRE, motorPin1, motorPin3, motorPin2, motorPin4);
void setup() {
Serial.begin(9600); // initialise the serial monitor
stepper.setMaxSpeed(1000.0); // set the max motor speed
stepper.setAcceleration(100.0); // set the acceleration
stepper.setSpeed(200); // set the current speed
}
// Degrees of the momevement. So first to 90 degrees, then to -90 graden then to 180 degrees etc.
int steps[] = { 90, -90, 180, -180, 0 };
// The total entries in steps[]
int stepsCount = 5;
// Keeps track of the position in steps[] we are about to run
int stepsIndex = 0;
void loop() {
// If the stepper isn't moving and doesn't have to go any distance
if (!stepper.isRunning() && stepper.distanceToGo() == 0) {
// Move the stepper to the degrees on the position of stepIndex in steps[]
stepper.moveTo(degToSteps(steps[stepsIndex]));
// Increase the index when each movement has finished
stepsIndex++;
// If we have executed all positions of steps[]
if (stepsIndex > stepsCount) {
// Set the index to 0 to restart the process
stepsIndex = 0;
}
}
stepper.run();
}
/*
* Converts degrees to steps
*
* 28BYJ-48 motor has 5.625 degrees per step
* 360 degrees / 5.625 = 64 steps per revolution
*
* Example with degToSteps(45):
* (64 / 5.625) * 45 = 512 steps
*/
float degToSteps(float deg) {
return (stepsPerRevolution / degreePerRevolution) * deg;
}
这个程序有个问题是, 断电后重新上电, 是以当前位置为0位的, 不能记忆上次断电的位置.
空调中的导风口使用的也是步进电机, 这儿有一篇维修文章
参考文章:
AccelStepper官方文档
28BYJ-48 Stepper Motor with ULN2003 Driver and Arduino Tutorial
ULN2003-Datasheet.pdf
ULN2003-Stepper-Motor-Driver-PCB.pdf
28byj48-Stepper-Motor-Datasheet.pdf
Maroon 5 << One More Night >> 重译
网易云音乐上的翻译完全失去了原词的性感, 这儿我对比重新翻译一下。
作词 : Adam Levine/Shellback/Savan Kotecha/Max Martin
作曲 : Adam Levine/Shellback/Savan Kotecha/Max Martin
| 我的重译 | 英文原词 | 网易云音乐翻译 |
|---|---|---|
| 你和我,关系恶化 | You and I go hard, | 我们的关系不断僵化 |
| 彼此看来,就快干架 | at each other like we're going to war | 在彼此看来都是紧张到一触即发 |
| 你和我,日益暴躁 | You and I go rough, | 生活变得艰难 |
| 东西互砸,把门摔爆 | we keep throwing things and slamming the doors | 我们唯一的交流变成了摔打东西和大力的关门隔绝彼此 |
| 你和我,两人有病 | You and I get sore, | 我们变得易怒、歇斯底里 |
| 功能失调,整天较劲 | then dysfunctional we stuck keeping score | 以互踩痛处而相互较量 |
| 你和我,已经烦透 | You and I get sick, | 我们的所作所为编的越来越超出常规 |
| 谁都知道,我们不能在这样! | they all know that we can't do this no more | 连旁人都看不下去了 |
| 但是宝贝,你又要走 | But baby there you go again, | 但是亲爱的你 |
| 你又要走,又让我爱上你啦 | there you go again making me love you | 又再一次让我爱上了你 |
| 我,不用大脑 | Yeah I stopped using my head, | 是的,我已经停止思考 |
| 不用大脑,一切放手 | using my head let it all go | 思考该怎么放手 |
| 你,贴我身上 | Got you stuck on my body, | 你紧紧贴着我的身体 |
| 贴我身上,像个刺青 | on my body like a tattoo | 就像一枚带着疼痛的印记 |
| 我,像个傻逼 | And now i'm feeling stupid, | 现在的我感觉自己很愚蠢 |
| 像个傻逼,爬到你背后 | feeling stupid crawling back to you | 悄悄溜回你身边的决定是如此的失策 |
| 所以,我胸前画个十字,不如死了算了 | So I cross my heart, and I hope to die, | 所以我以我的生命起誓 |
| 只要让我陪你再多一夜 | that i'll only stay with you one more night | 我只会跟你再待最后一晚 |
| 我知道我说过千百万次 | And I know i've said it a million times | 我知道我已经说了千万遍 |
| 但我真的只要陪你再多一夜 | But i'll only stay with you one more night | 但这真的是我们相处的最后一夜 |
| 想和你说不 | Trying to tell you no, | 我试图拒绝你 |
| 但我的身体却一直说好 | but my body keeps on telling you yes | 可我的身体却自行接受 |
| 想和你说停 | Trying to tell you stop, | 我试图停下 |
| 但你的口红让我喘不过气 | but your lipstick got me so out of breath | 但你口红的颜色都快让我无法呼吸 |
| 我明早醒来 | I'd be waking up, | 我必将在清晨醒来时 |
| 大概会厌恶自己 | in the morning probably hating myself | 无比厌恶这样的自己 |
| 我明早醒来 | And i'd be waking up, | 我必将在清晨醒来时 |
| 无比满足却又负罪如坠地狱 | feeling satisfied but guilty as hell | 心中满是满足和如临地狱般的罪恶感 |
| 但是宝贝,你又要走 | But baby there you go again, | 但是亲爱的 |
| 你又要走,又让我爱上你啦 | there you go again making me love you | 你又再一次让我爱上了你 |
| 我,不用大脑 | Yeah I stopped using my head, | 是的,我已经放弃了思考权衡, |
| 不用大脑,一切放手 | using my head let it all go | 我不会再放手 |
| 你,贴我身上 | Got you stuck on my body, | 让你紧紧的缠绕着我的身体 |
| 贴我身上,像个刺青 | on my body like a tattoo | 就像枚带着疼痛的印记 |
| 我,像个傻逼 | And now i'm feeling stupid, | 我现在感觉自己如此愚蠢 |
| 像个傻逼,爬到你背后 | feeling stupid crawling back to you | 我真后悔悄悄溜回你的身旁 |
| 所以,我胸前画个十字,不如死了算了 | So I cross my heart, and I hope to die, | 所以我以死起誓 |
| 只要让我陪你再多一夜 | that i'll only stay with you one more night | 只再和你共度一晚 |
| 我知道我说过千百万次 | And I know i've said it a million times | 我知道我已经说了千万遍 |
| 但我真的只要陪你再多一夜 | But i'll only stay with you one more night | 但这真的是最后一晚 |
| 耶宝贝再给我一夜 | Yeah baby give me one more night | 亲爱的再让我和你多待一晚 |
| 耶宝贝再给我一夜 | Yeah baby give me one more night | 再给我一夜回忆 |
| 耶宝贝再给我一夜 | Yeah baby give me one more night | 最后一夜 |
| 但是宝贝,你又要走 | But baby there you go again, | 但亲爱的你 |
| 你又要走,又让我爱上你啦 | there you go again making me love you | 又让我再次的爱上了你 |
| 我,不用大脑 | Yeah I stopped using my head, | 我已经不能再维持理性 |
| 不用大脑,一切放手 | using my head let it all go | 不能再对你放手 |
| 你,贴我身上 | Got you stuck on my body, | 想让你始终呆在我的身旁 |
| 贴我身上,像个刺青 | on my body like a tattoo | 就像枚滴血的刺青 |
| 耶耶耶耶 | Yeah, yeah, yeah, yeah | 耶~ |
| 所以,我胸前画个十字 | So I cross my heart, | 我双手交叉 |
| 死了算了 | and I hope to die, | 以我的生命起誓 |
| 只要让我陪你再多一夜 | that i'll only stay with you one more night | 这将会是你我共处的最后一夜 |
| 我知道我说过千百万次 | And I know i've said it a million times | 我知道这句话我已经说了千万遍 |
| 但我真的只要陪你再多一夜 | But i'll only stay with you one more night | 但我只想与你多待这最后一夜 |
| 耶宝贝再给我一夜 | (yeah baby give me one more night) | 最后一夜 |
| 所以,我胸前画个十字,不如死了算了 | So I cross my heart, and I hope to die, | 所以我用我的生命起誓 |
| 只要让我陪你再多一夜 | that i'll only stay with you one more night | 这真的将是最后一夜 |
| 我知道我说过千百万次 | And I know i've said it a million times | 我知道这句话我已经说了千万遍 |
| 但我真的只要陪你再多一夜 | But i'll only stay with you one more night | 但我此刻只想与你共度今夜时光 |
typecho居然上不去了~这儿是找到的用户权限表说明
官方的说明上不去了 http://docs.typecho.org/develop/acl, 这儿转载官方说明如下:
在Typecho中分别设置了5个等级的权限供多个用户共用一个博客。他们的权限从高到低分别是:管理员(administrator), 编辑(editor), 贡献者(contributor), 关注者(subscriber), 访问者(visitor).其权限设置与wordpress有一些相同之处,但是扩展方法不尽相同。
| 权限名称 | 管理员 | 编辑 | 贡献者 | 关注者 | 访问者 |
|---|---|---|---|---|---|
| 代号 | administrator | editor | contributor | subscriber | visitor |
| 等级1) | 0 | 1 | 2 | 3 | 4 |
| 阅读 | √ | √ | √ | √ | √ |
| 进入控制台 | √ | √ | √ | √ | × |
| 修改自己的档案信息 | √ | √ | √ | √ | × |
| 撰写文章 | √ | √ | √2) | × | × |
| 管理文章 | √ | √ | √3) | × | × |
| 撰写页面 | √ | √ | × | × | × |
| 管理页面 | √ | √ | × | × | × |
| 上传文件 | √ | √ | √4) | × | × |
| 管理文件 | √ | √ | √5) | × | × |
| 管理评论 | √ | √ | × | × | × |
| 管理分类和标签 | √ | √ | × | × | × |
| 管理链接 | √ | × | × | × | × |
| 管理用户 | √ | × | × | × | × |
| 管理插件 | √ | × | × | × | × |
| 调整外观 | √ | × | × | × | × |
| 基本设置 | √ | × | × | × | × |
| 评论设置 | √ | × | × | × | × |
| 阅读设置 | √ | × | × | × | × |
| 撰写习惯设置 | √ | √ | √ | × | × |
开发人员接口
对用户的权限操作以及用户信息获取,我们都封装在了Widget_User组件中。开发人员可以通过调用此组件获取相关信息。
| 方法名称 | 描述 | 参数 |
|---|---|---|
| login | 登录用户 | * $uid(int) - 用户ID |
- 数字越小权限越高
- 审核后发布
- , 5) 仅限于自己
- 受限
看鸿星尔克有感
只知非黑即白的年轻人喜欢说话,他们觉得世界和自己一样单纯;只知流量为王的自媒体喜欢说话,他们觉得世界处处都能把流量变现;剩下的我们知道世界善恶相杂、并不易分开对错,所以不爱说话,所以,我们是沉默的大多数。😷
收纳APP总结
| 名称 | 平台 | 离线使用 | 收纳物品 | 生产日期、保质期 | 搭配硬件 | 备注 |
|---|---|---|---|---|---|---|
| 电子收纳专家 | Android | - | - | - | - | 可以盒子套盒子。Android10以后不能使用 |
| 收哪儿 | - | - | - | - | - | - |
| 唯物主艺 | - | - | - | - | - | - |
| 小鱼收纳 | - | - | - | - | 二维码标签、收纳盒 | - |
| 桃桃收纳(收纳·家) | - | - | - | - | 二维码标签、收纳盒 | - |
| 晒书房 | iOS、Android | - | 书籍 | - | - | 豆瓣导入 |
| 我的衣橱 | iOS | - | - | - | - | 可拍照,淘宝购买记录导入 |
| 美容护肤品管理器 | iOS | - | - | 批代码导入 | - | - |
| 过期日 | - | - | 食品 | 有 | - | - |
| 云收纳 | 微信小程序 | - | - | - | - | - |
| 我的物品 | iOS | - | - | - | - | - |
| 家里有什么 | 微信小程序 | - | - | 有 | - | - |
| 存存 | - | - | - | - | - | - |
| 西瓜冰箱 | - | - | - | - | - | - |
| 收纳盒子 | iOS | - | - | - | - | - |
| Sortly | iOS | - | - | - | - | 物品数量多要收费 |
风险
- 法律风险: @晒书房 在2021-7-23发布微博称将于2021-7-30停止服务,出于个人兴趣至今已经服务9年多,微博粉丝40167,看起来似乎是监管所致。物品、书籍拥有即有合法非法之分
- 展示风险: 物品近乎于个人隐私。可以从物品的拥有判断出此人的兴趣爱好等。故不宜将所有物品直接展示。
- 交易风险: 如果有人借助此平台进行非法交易,如贩卖毒品该怎么办?交易中涉及钱财交换,如何相互信任?所以不宜通过此平台直接交易,而宜导流至其他成熟平台如闲鱼。但这样做会大大增加用户交易付出的精力和时间成本,导致交易流动性减弱。
自媒体竟然毫无责任堂而皇之的污蔑造谣啊
昨天东京奥运开幕式,下班后看到CCTV1直播,断断续续看了些。今天就在B站和微信上发现大量自媒体说东京奥运如何阴间,标题都是这样的:
网易首页 > 网易号 > 正文 日本鬼片?开幕式画面太惊悚,贞子既视感,网友:家长陪同观看 2021-07-23 20:14:38 来源: 梦与体育
B站 黛玮爸爸:东京奥运会开幕式为何像恐怖片一般,如此阴间—你是不是也看得一头雾水?
配了下面这些截图
大量自媒体用了这个图

另外的图来自于东京奥运宣传舞台剧《Wassai》
Python库 PyAutoGUI/PyWinAuto, 能做多少RPA的工作?
PyAutoGUI
Python自动操作GUI神器PyAutoGUI
PyAutoGUI官方文档
PyAutoGUI可以做到的包括:
- 鼠标: 点击/移动/拖动
- 键盘: 输入字符/组合键
- 截图
- 消息框交互
- 操作取消
特别重要的一项操作: 识别目标程序/目标程序中的元素似乎并没有做到.
PyWinAuto
整流罩曲面
rhinoceros7 入门
陈老师的教学鼠标中键工具列 提取码: ukkc
视图
平移 右键(3D视图为Shift+右键), 上下左右键
缩放 中键|Ctrl+右键
旋转 shift+ctrl+右键(3D视图为右键)
放大/还原视图 双击视图名,如Top
切换视图 放大后点击下方视图标签
控制点
平移 Alt+上下左右
按钮编辑
移动/删除按钮 Shift+左键拖动
复制按钮 Ctrl+左键拖动
编辑按钮 Shift+右键点击
工具列(按钮列)
工具列可以很灵活的编辑/保存为文件/从文件导入
操作轴
需要把状态栏的操作轴点击加黑打开
平移/旋转/缩放: 鼠标左键可以直接做按轴平移(箭头轴)/按面平移(田字)/旋转(旋转弧)/缩放(缩放杆), 按住shift+左键缩放,可以同时在3轴缩放
线挤出面: 拉伸箭头轴上的原点, 或Ctrl拉伸箭头;
复制: 按住Alt拉伸箭头,或拉伸旋转弧
调节缩放杆长度: 按住ctrl拉伸调节.
操作轴右键菜单(白点菜单)
- 定位操作轴: 可以将操作轴中心重新定位到其他位置
- 重置操作轴: 将操作轴重置到默认位置;
- 自动重置操作轴: 每次操作后自动将操作轴回正.
- 拖拽强度: 减小拖拽强度可以更精细的拖拽
显示模式
右键视图模式切换, 一般用着色模式. 着色模式可以修改所有物体的显示方式.
常用快捷键
切换显示网格 F7
框选放大 Ctrl+W
物体充满窗口 Ctrl+Shift+E
复制物体 鼠标左键拖动物体时, 点一下Alt就变成复制了
多选物体 Shift+左键增加, Ctrl+左键减少
空格=回车=右键
锁定当前画线的方向 Tab
打开或关闭控制点 F10/F11
选取方式
左向右框选: 需全部框中
右向左框选: 只需部分框中
Alt+左向右框选: 不会点中鼠标开始位置的物体(强制由点选变为框选)
使用选取Tab页选择, 实现很多特殊选择, 如选取所有点/曲线/曲面等
超级移动: 选择体中的一个点/线/面(穿透选择, 即穿透体选择面) Ctrl+Shift+左键,并能单独控制其位置形态
图层
图层移动 选中对象后, 在下方状态栏点选切换图层即可
贝塞尔曲线
控制点数=阶数+1
1阶贝塞尔: 直线
2阶贝塞尔: 抛物线
放样
loft
记录建构历史
建构体中使用的点线面,在建构完成后还能通过修改其位置来改变建构后的体的形态
在工作平面为xy时候画垂直线
按住ctrl点击一个点
显卡区别
参数化曲面nurbs建模与多边形polygon建模与细分Subdivision建模
Nurbs: 非均匀有理B样条, 曲面, 曲线, 参数化
Polygon: 多边形, 网格
Subdivision: 细分, SubD
参数化建模软件: Rhino3D \ UG \ ProE \ SolidWorks \ FreeCAD, 文件格式: IGES \ STEP, 建筑模型文件格式: IFC
多边形建模: Blender , 文件: OBJ \ STL \ ABC \ DAE
Rhino7以Nurbs起家,现在是完整支持Nurbs/Polygon/Subdivision. 这三者什么区别? 这儿有一篇2012年的文章讲述了区别.
我来理解,Nurbs完美的描述了曲面, 实现了类似于矢量图无限放大不会变形的效果, Polygon的所有面都是以平面多边形组成, 像位图一样放大后就失去了细节, 然而却可以描述非常复杂的外形. SubD则是将网格边缘在实时显示时圆角(平滑)化而不需要去画对应的曲线,以较少的网格实现曲面平滑的效果.
工业设计资源
大学生工业设计大赛官网
湖南大学设计艺术学院
工业/产品设计考研-龚老师
深圳工业设计相关大学系别
深圳大学艺术学院工业设计系, 负责人: 罗 菁,致艺楼941
深圳技术大学, 本质是深圳大学分出来的.
湖南大学罗切斯特设计学院, 似乎还没办起来.