- 博客(42)
- 收藏
- 关注
原创 ProEasy机器人:快速上手使用机器人软件与编程(干货满满,好学不费脑)
需要注意,MovP/MovL都是XYCZ四个轴同时运动,在移动的过程中谨防撞到其他机构或障碍物,MovArchP/MovArchL指令移动之前,得需要设置拱形的最高位置,这个位置数据也就是机械手绝对位置,如图,以MovArchP为例。上图中-1000(单位um),也就是机械手在移动的时候,先Z轴抬高到-1000um的位置,然后弧形移动到目标点-1000um的上方,最后轴下降到目标点示教的高度,这个移动的轨迹和拱形一样,所以就叫拱形移动。连接好机械手之后,先建立一个新项目,如图。
2023-12-06 18:20:42 4302
原创 ProEasy机器人案例:电池边包胶
Relative_E = math.deg(math.atan2(Relative_Y, Relative_X))*1000 --工具坐标角度,反正切函数atan2(Y/X)。TLSet(Num, Relative_W, 0, Relative_E - data.c, 0) --将工具长度与工具角度填入TLSet生成Num工具坐标系,工具角度需要减去当前C轴的值。-----------------------使用方法如下----------------------------
2023-12-04 13:50:23 566
原创 U盘变成了.lnk,怎么处理
没曾想客户电脑是是不是有个病毒啥的,把我的U盘直接干成了只有一个.lnk的一个快捷方式,后面百度找了很多方法,最后找到了一个非常实用的方法,后整理了一下交给大家。4.这样就能看到你全部文件了,直接来一手全部复制,然后电脑桌面新建一个文件夹拷贝进去就大工完成了。2.搜索框中输入你之间文件名记得住的文件名(关键字都行)3.出来文件后再点击左上角的向上箭头。1.找到电脑U盘文件。
2023-11-15 12:12:09 3217 1
原创 Peoeasy机器人:原点无法重置问题
台达软件版本比较多,每个版本重置原点的模式和马达偏差角的默认值是有一定差异的。再重置原点之前尽可能先确认一下重置原点的模式和马达偏差角的默认值是否正常。机械手在伺服关闭的模式下,插入定位插销,进入机构设定重置原点,发现PUU值没有变化。
2023-11-14 11:13:36 410
原创 ProEasy机器人:运动+通讯相关说明
-TCP——Socket(无协议)通讯,相关指令:FreePort.ECM_OpenAsClient()、FreePort.ECM_Tx()、FreePort.ECM_Rx()、FreePort.ECM_CloseAll()、FreePort.ECM_ChkConnect()、FreePort.ECM_Clear()print("ReceivePC:" .. return_text_pc .."\n") ---------------打印接收到的消息。
2023-11-14 11:12:40 896
原创 ProEasy机器人:TCP无协议通讯(socket通讯)时打印log日志
open_result = FreePort.ECM_OpenAsClient(1,"192.168.1.55",8000,nil,nil) --链接服务器。c_status_pc,return_text_pc,text_l_pc = FreePort.ECM_Rx(1) ---接收PC发送过来的分BIN结果。Send_Out_Vision("ok") --发送内容给视觉。--------TCP无协议视觉通讯--------- 设置默认输出文件为 test.lua。
2023-09-12 09:55:01 655
原创 51单片机:电脑向串口发送数据并控制LED灯
电脑向串口发送数据后,控制LED灯,并返回发送的数据程序如下#include"regx52.h"#include"intrins.h"unsigned int num; //建立全局变量void Delay1000ms() //@11.0592MHz{ unsigned char i, j, k; _nop_(); i = 8; j = 1; k = 243; do { do ...
2022-05-31 14:56:41 4759 2
原创 51单片机:串口向电脑发送数据
单片机的串口配置可以使用SCT-ISP软件,方法如下,我的单片机晶振频率是11.0592Hz试验程序如下:#include"regx52.h"#include"intrins.h"unsigned int num; //建立全局变量void Delay1000ms() //@11.0592MHz{ unsigned char i, j, k; _nop_(); i = 8; j = 1; k = 243;...
2022-05-31 11:09:47 4372
原创 ProEasy机器人:三点成圆的指令教导做法
代码内容:MovP(2.. P.Z(-2000))MovP(2)MovCIRC(4,3, CM_BORDER_CIRC,300,10000,10000)2号点为圆的起点教导点3号点是过渡点4号点是圆的终点三点教导好之后,需要注意,4号点的C轴角度必须是2号点角度加上360°C的值,因为三点成圆只是获取三个点的X和Y坐标数据成一个平面圆,但是如果现在画圆的同时让C轴同时转360°C,4号终点C轴角度就必须是起点角度加...
2022-05-28 16:55:56 954
原创 ProEasy机器人:程序编写中出现多处function循环嵌套,导致内存溢出报警
这次在处理售后一个项目的时候,发现一个程序BUG,因为这个是客户自己写的,在运行过程中,机械手能够正常运行,但是在每隔三四十分钟后都会报028错误代码,输出框也会提示not enough memory 内存不足的提示,如图一开始以为是电脑运行内存的问题,排查后又没有问题,机械手控制器也换过,还是无法解决,这个时候就决定再好好去推敲一下代码,最后发现是一个最基础的问题,就是function循环嵌套,如图本来主程序就是一个死循环的一个动作,进入子...
2022-05-22 17:29:23 941
原创 51单片机:定时器与LCD1602的运用,做一个简易时钟
#include "regx52.h"#include "LCD1602.h"void Delay(int time){ while(time--) //while循环一次需要10us { }}void Timer0Init(void) //1毫秒@11.0592MHz{ TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0x66;...
2022-05-18 15:49:35 1623 2
原创 51单片机:定时器与中断系统的运用
#include "regx52.h"void Delay(int time){ while(time--) //while循环一次需要10us { }}void Timer0Init(void) //1毫秒@11.0592MHz{ TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0x66; //设置定时初值 ...
2022-05-18 15:42:27 327
原创 Proeasy机器人:控制器报警的处理方法
1.当机器人发生空间超出范围报警信号解决方法:首先手动移动到目标点,是否能够顺利一到?如果不行,检查目标点的x轴,y轴,z轴,c轴,是否有超范围的情况?这周不能为正数c轴,不能超过,正负360度,还有a轴和b轴,必须为您,因为他是六轴的机器人坐标轴,最后检查坐标系是否为MC S2.低电压、主回路电源异常解决办法:查看控制器磁环,是否有问题,进行更换或新增磁环,220V是否低电压3.顺向运动学转换错误解决方法:当这个报警出现时,应检...
2022-05-16 15:31:51 2439
原创 Proeasy机器人:三轴机械手螺丝机的与视觉搭配应用
此次项目是用三轴螺丝机和视觉搭配使用,视觉提供螺丝孔位置偏差,在机械手的模板点位上面进行偏移项目问题点:1.在不知道要搭配视觉使用的情况下,机械手出厂时没有做马达偏差角2.视觉固定在机械手二轴时,机械手无法做延伸臂,导致视觉标定出现问题3.三轴机械手无法生成工具坐标,导致螺丝机与视觉一直存在偏差角项目解决方案:第一步:建立机械手螺丝机上的马达偏差角,水平面固定两个中心点,用左手系和右手系记录当前点位的...
2022-05-08 14:36:02 1653
原创 51单片机:数码管显示
1. 静态数码管显示 点亮数码管需要用到P0端口和P2部分端口,P0端口负责显示要输出的数字,P2部分端口负责让哪个数码管点亮,具体的去看电路图,这次还包含了74HC245和74HC138芯片 现在让单片机数码管区域第三位的数码管显示数字5,程序如下#include"reg52.h"//定义P2端口sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;//用数组来表示数码管上每个数字输出对应的相关电平输入int st...
2022-04-21 15:18:28 8599 1
原创 51单片机:独立按键控制LED灯
1. 独立按键控制LED灯状态 亮灭实验完成后,就可以控制LED状态,首先我们知道由于机械结构的弹性作用,按键开关在闭合时不会一瞬间稳定的接通,在断开时,也不会一下子断开。所以就得需要程序消抖,也就是适当延时,程序如下#include"reg52.h"//定义LED灯sbit LED1 = P2^0;sbit LED2 = P2^1;sbit LED3 = P2^2;sbit LED4 = P2^3;sbit LED5 = P2^4;sbit LED6 = P2^5;...
2022-04-21 11:38:10 20006 6
原创 51单片机:LED灯流水灯
知道闪烁原理后,我们就可以将所有引脚依次输出0V、延时、输出5V,就能达到流水灯效果,但这样写太呆板,咱们利用C语言for循环,再进行位运算就可以简单达到效果,程序如下#include"reg52.h" //引用头文件void Delay(int time){ while(time--) //while循环一次需要10us { }}int main(){ int i = 0; while(1) { for(i=0;i<8...
2022-04-21 11:36:26 900
原创 51单片机,点亮LED灯和闪烁
1.关键字sfr与sbit的区别sfr是定义寄存器的字节地址,sbit是定义可位寻址的位地址例如:sfr P1 =0x90;sbit A = P1^0 sbit B = P1^1;2. 单片机引脚有:电源引脚、晶振引脚、复位引脚、下载引脚、GPIO引脚其中晶振引脚主要是用来提供外部时钟,驱动指令执行,GPIO引脚包含P0、P1、P2、P3 四个端口3.点亮一个LED灯从电路图可以得知,L...
2022-04-21 11:34:35 3179 1
原创 Proeasy机器人:建立动态用户坐标系取料
首先视觉固定在机器人的Z轴丝杆中心搭配取料,在这过程中我们遇到了以下几个问题:1.视觉与机械手标定后,发现视觉Y轴方向与机器人Y轴方向相反2.建立用户坐标系后,物料进行旋转10度左右,进行拍照抓取发现角度没有问题,X和Y的方向不对3.建立用户坐标系后,用相机中心和丝杆中心在用户坐标系的1号用户坐标,进行(0,0)原点移动,发现都不在视觉的mark中心,以镜像对称的方式移到了另外一边4.在机械手标定,物料模板标定,机械手取料点标定的正确下,发现Y轴偏移值不对针对上面的问题情况,提出的解
2022-04-21 11:23:21 1332
原创 利用51单片机做一个简易的计算器
#include"reg52.h"#include "LCD1602.h"//按键定义sbit KEY0=P1^0;sbit KEY1=P1^1;sbit KEY2=P1^2;sbit KEY3=P1^3;sbit KEY4=P1^4;sbit KEY5=P1^5;sbit KEY6=P1^6;sbit KEY7=P1^7; //函数定义:/** * @brief LCD1602延时函数,12MHz调用可延时1ms * @param 无 * @re...
2022-04-19 11:27:45 6620 2
原创 关于keil uvision4 注释中文出现乱码情况解决办法
在B站学习江科大自化协单片机课程的时候,有一节课需要导入老师LC1602的源代码,但发现导入的代码中文全部都是乱码,老师有节课程教过怎么设置解决问题,但老师是keil uvision5软件,我keil uvision4软件设置里面就没有这个选项,就在网上找寻答案,结果搜的都是一些根本我用不了的方法,都是千篇一律的答案,都是混经验的,常见比如这种:我这个软件压根就没有Encoding这个选项,这方法真就扯犊子,后面我就发现了一个非常好...
2022-04-04 11:15:56 6406 19
原创 Proeasy机器人:二轴增加延伸臂案例
机器人二轴需要增加延伸臂,首先就得需要建立工具坐标系,来绑定与机器人本体配合-- SCARA延伸臂:2點教導whe法-- 透過左右手同一卡氏座標點達成,僅教導w與thetaE,h為0,ABC角亦皆為0-- 如為CCD,則教導點為左右手姿態下,CCD內同一pixel點-- 僅能於SCARA類型且至少三軸之機種使用,且延伸座標系鎖定於第二桿件上(i.e. 如CCD等工具只能裝設於第二桿件上)-- 透過工具座標達成延伸臂應用-- 此腳本需自訂資訊:Line 21~24 之ACS教導點資訊、Line30
2022-03-29 17:06:56 380
原创 C语言:编写一个通讯录
#define _CRT_SECURE_NO_WARNINGS#define MAX 100#include<stdio.h>#include<string.h>#include<stdlib.h>enum MyEnum{ OUT, Incre, Delete, Lookup, Modify, Print, Sort,};void meun(){ printf("\n"); ...
2022-03-20 10:22:15 1577
原创 C语言:程序在内存分配区域
内存总共分为三大区域:1.栈区主要存储的是 局部变量 和 函数的形式参数2.堆区主要存储的是 动态内存分配(malloc、free、calloc、realloc)3.静态区主要存储的是 全局变量 和 静态变量(static)...
2022-03-17 17:05:41 1076
原创 C语言:用联合体数据结构来判断计算机内存存储的大小端方式
int Judge(){ //创建联合体数据结构 union s { char i; int a; }; //定义并赋值 union s u; u.a = 1; //利用char类型的一个字节,来访问判断首字节是否为1 return u.i;}int main(){ int ret = Judge(); if(ret==1) { printf...
2022-03-10 15:46:36 1402
原创 C语言:杨氏矩阵
有一个数字矩阵,矩阵的每行从左到右是递增的矩阵从上到下是递增的请编写程序在这样的矩阵中查找某个数字是否存在。要求:时间复杂度小于O(N)int Find_Number(int arr[4][4], int k,int* x, int* y){ int a = 0; int b = *y-1; while (a<*x && b>=0) //a的坐标值不能最大行数,b的坐标值不能小于0 { //先找右上角进行判断 ...
2022-03-08 17:07:21 798
原创 C语言:实现一个函数,可以左旋字符串中的k个字符,例如:a[]=“abcde“,k=2 ----->a[]=“cdeab“
void Flip(char a[], int k){ int len = strlen(a); for (int i = 0; i < k; i++) { //第一步:将要翻转的字符保存 char tmp = a[0]; //第二步:将剩下的字符串往前移 for (int j = 0; j < len-1; j++) { a[j] = a[j + 1];...
2022-03-08 15:13:24 957
原创 C语言:打印一个菱形图案
解题思路:分为上下两部分打印菱形 * *** ***** ******* ********************************* *********** ********* ******* ***** *** * int main(){ int line = 0; //接受外部打印的行数 scanf("%d", &...
2022-03-08 09:01:39 533
原创 C语言:喝汽水问题,一块钱能买一瓶汽水,两个空瓶能换一瓶汽水,问40元能喝多少瓶汽水
int main(){ int money = 0; int count = 0;//喝汽水计数 int empty = 0;//空瓶计数 scanf("%d", &money); count = money; empty = count; while (empty>=2) { count = count + empty / 2; empty = empty / 2 + empty % 2;...
2022-03-08 09:01:22 665
原创 C语言:将一个int数组的奇数偶数进行排序,奇数在前,偶数在后
int main(){ int arr[] = { 1,3,2,5,7,9,11 }; int sz = sizeof(arr) / sizeof(arr[0]); int left = 0; int right = sz - 1; while (left<right) {//从左往右找偶数 while (arr[left] % 2 == 1) { left++; }...
2022-03-08 09:01:12 519
原创 C语言:输入a、n两个int类型,求表达式的和s=a+aa+aaa+aaaa.......
int main(){ int a = 0; int n = 0; scanf("%d,%d", &a, &n); int sum = 0; int ret = 0; for (int i = 0; i < n; i++) { ret = ret * 10 + a; sum += ret; } printf("%d", sum); return 0;}...
2022-03-08 09:00:50 974
原创 C语言:封装一个函数,把一个字符串逆序排序
void revese(char aa[],int sz){ assert(aa); int left = 0; int right = sz - 1; while (left<right) { char tmp = 0; tmp = aa[left]; aa[left] = aa[right]; aa[right] = tmp; left++; right-...
2022-03-07 15:45:47 283
原创 C语言:用指针函数的数组来做计算器
void Add(int x, int y){ printf("%d\n", x + y);}void Sub(int x, int y){ printf("%d\n", x - y);}void Mul(int x, int y){ printf("%d\n", x * y);}void Div(int x, int y){ printf("%d\n", x / y);}void meun(){ printf("*************...
2022-03-07 15:43:54 182
原创 C语言:用断言assert和const修饰语句来重新编写计算字符串求长度函数
int my_strlen(const char* str){ int count=0; assert(*str != NULL); while (*str!='\0') { count++; str++; } return count;}int main(){ char arr[] = "asdvcnxhdnchdcd"; int len = my_strlen(arr); printf(...
2022-03-07 15:38:55 64
原创 C语言:用递归函数,求一个无符号整形类型每个个数相加之和
int Digitsum(int n){ if (n>9) { return Digitsum(n / 10) + n % 10; } else { return n; } }int main(){ unsigned int n = 0; scanf("%d", &n); int num = Digitsum(n); printf("%d", num); ...
2022-03-07 15:36:32 141
原创 C语言:打印乘法口诀表,输入数字,打印相对应的行数
void print_table(n){ for (int i = 1; i <= n; i++) { for (int j = 1;j <= i;j++) { printf("%d*%d=%-3d ", j, i, i * j); } printf("\n"); }}int main(){ int n = 0; scanf("%d", &n...
2022-03-07 15:35:10 363
原创 C语言:用指针类型去打印出一个整形数组的每一个元素
int main(){ int arr[] = { 1,2,3,45,6,7,8,10,9 }; int* p = arr; int sz = sizeof(arr) / sizeof(arr[0]);//利用*p的变化解引用 for (int i = 0; i < sz; i++) { printf("%d ", *(p + i)); } return 0;}...
2022-03-07 15:32:13 518
原创 C语言:输入一个int类型,打印它二进制中奇数位和偶数位
void print(int m){ printf("打印奇数位"); for (int i = 30; i >= 0; i-=2) { printf("%d ", (m >> i) & 1); } printf("\n"); printf("打印偶数位"); for (int i = 31; i >= 1; i -= 2) { printf("%d ", (m >>...
2022-03-07 15:23:39 1041
原创 C语言:求两个int类型M和N之间二进制不同bit的个数统计
//方法:首先让两个数异或,再统计其中的二进制中的1int Bin_count_number(int m, int n){ int count = 0; int a = m^n; while (n) { if (a%1==1) { count++; } a = a / 2; } return count;}int main(){ int m = 15;...
2022-03-07 15:18:43 139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人