news 2026/7/9 9:21:28

【项目复现】norkator/nano-l298n-gripper-driver

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【项目复现】norkator/nano-l298n-gripper-driver

Arduino Nano 控制夹爪的仓库,包含 L298N 步进驱动、力敏电阻、限位开关和启动回零逻辑

仓库:https://github.com/norkator/nano-l298n-gripper-driver.git

硬件复现清单

Arduino Nano L298N 电机驱动模块 小型两相步进电机 薄膜压力传感器 FSR 限位开关 普通按键 电阻,建议先用 10 kΩ 外部电机电源 杜邦线

程序整体运行流程

1. 上电 2. 执行 homing:夹爪完全闭合直到碰到限位,然后完全打开 3. 等待按钮按下,控制夹爪开/合

完整程序

/* * L298N stepper driver gripper tester (Nano) ATmega328p * nano, gripper, film pressure sensor, homing switch, open close gipper push button */ // ## Libraries ## #include <Stepper.h> // ######################## // ## PIN CONFIGURATIONS ## // ######################## int motorA1 = 2; // stepper A1 int motorA2 = 3; // stepper A2 int motorB1 = 4; // stepper B1 int motorB2 = 5; // stepper B2 int endStopPin = 7; // 回零限位开关 int toggleBtnPin = 12; // 开合切换按钮 int firmPressurePin = A0; // FSR压力传感器模拟输入 // Variables const int stepsPerRevolution = 200; // 电机一圈 200 步 Stepper myStepper(stepsPerRevolution, motorA1, motorA2, motorB1, motorB2); // 直接用 Arduino 四个 IO 控制 L298N 的四个输入 const int stepperMotorSpeed = 150; // 电机转速 rpm const int gripperStepsFullyOpen = -1700; // 回零后全开需要反向1700步 boolean homingDone = false; // 开机回零完成标志 boolean gripperOpen = true; // 夹爪逻辑状态:默认打开 boolean gripperClosed = false; int gripPressureValue = 0; // FSR实时压力读数 int currentStepPosition = 0; // 当前夹爪相对全开位置的步数偏移 int gripPressureLimit = 800; // 夹持压力上限,超过停止夹紧 // SETUP void setup() { // Init serial Serial.begin(9600); //开启串口 9600 波特 // Init stepper myStepper.setSpeed(stepperMotorSpeed); // Pin modes 打印回零、调试信息 pinMode(endStopPin, INPUT_PULLUP); pinMode(toggleBtnPin, INPUT_PULLUP); } // LOOP void loop() { if (!homingDone) { homing(); } readGripperPressure(); // 按键按下翻转目标状态 int tInputVal = digitalRead(toggleBtnPin); if (tInputVal == LOW) { gripperOpen = !gripperOpen; delay(1000); // wait so that toggle is not read again multiple times } // Gripper control 只有目标状态和当前实际状态不一致时,才执行运动 if (gripperOpen) { if (gripperClosed == true) { openGripper(); } } else { if (gripperClosed == false) { closeGripper(); } } turnOffStepper(); } /** * Homing procedure * 1. close gripper more till hit estop * 2. open gripper fully * 3. set homing done */ void homing() { Serial.println("Homing gripper..."); int steps = 0; int eStopVal = HIGH; while (eStopVal == HIGH) { eStopVal = digitalRead(endStopPin); myStepper.step(1); steps++; } Serial.print("Gripper endstop hit at "); Serial.print(steps); Serial.println(" steps.. gripper is fully closed"); myStepper.step(gripperStepsFullyOpen); // open fully currentStepPosition = gripperStepsFullyOpen; Serial.println("Gripper fully open, saving current position"); homingDone = true; } /** * */ void closeGripper() { int steps = 0; int eStopVal = HIGH; while (eStopVal == HIGH && gripPressureValue < gripPressureLimit) { readGripperPressure(); eStopVal = digitalRead(endStopPin); myStepper.step(1); steps++; } currentStepPosition = steps; gripperClosed = true; } /** * */ void openGripper() { myStepper.step(-currentStepPosition); gripperClosed = false; } /** * Turn off stepper driver * solves stepper driver overheating problem */ void turnOffStepper() { digitalWrite(motorA1, LOW); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, LOW); } /** * */ void readGripperPressure() { // Read firm pressure sensor (force sensing resistor?) gripPressureValue = analogRead(firmPressurePin); }

项目启发

夹持 = 步进电机闭合 + 力敏传感器判断
复位 = 反向运动 + 限位开关判断
停止 = 达到压力 / 限位后停止

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 9:17:26

springboot+ffmpeg实现大视频文件的分片上传合并

Spring Boot FFmpeg 实现「大视频文件分片上传 → 服务端合并 → FFmpeg 校验/转码」&#xff0c;这是视频平台&#xff08;点播、网课、安防回放&#xff09;的标准做法。一、整体设计思路&#xff08;先看这个&#xff09;✅ 核心流程前端├─ 1. 申请上传&#xff08;获取 …

作者头像 李华
网站建设 2026/7/9 9:13:33

ClickHouse MergeTree 引擎:排序键设计决定查询天花板

ClickHouse MergeTree 引擎&#xff1a;排序键设计决定查询天花板公司上了 ClickHouse 之后&#xff0c;一张 20 亿行的用户行为表&#xff0c;同样的数据量&#xff0c;有人查出结果只要 0.2 秒&#xff0c;有人等了 30 秒没出来。差距全在排序键上。今天聊聊排序键这个"…

作者头像 李华
网站建设 2026/7/9 9:11:24

LightRAG+Ollama实战:比GraphRAG更快

在RAG这个领域过去半年最大的变化不是 embedding 或检索算法&#xff0c;而是从向量 RAG 进化到了知识图谱 RAG&#xff08;GraphRAG&#xff09;。微软 2024 年发了 GraphRAG&#xff0c;能解决传统向量 RAG 解决不了的"全局问答"和"跨文档推理"问题&…

作者头像 李华
网站建设 2026/7/9 9:11:11

计算机毕业设计之连锁花店管理平台

快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;然后线上管理系统也就相继涌现。与此同时&#xff0c;人们开始接受方便的生活方式…

作者头像 李华
网站建设 2026/7/9 9:10:33

新世代已至:GPT-5.6与Claude 5系列全面解读

新世代已至&#xff1a;GPT-5.6与Claude 5系列全面解读 过去半个月&#xff0c;AI大模型领域迎来了一场堪称“密集轰炸”的发布潮。从Claude Fable 5的首次亮相&#xff0c;到被紧急叫停又恢复&#xff0c;再到GPT-5.6的“精准截胡”——这一轮更新的意义&#xff0c;已经超出了…

作者头像 李华
网站建设 2026/7/9 9:08:38

实战分享:用Python搭建一个简单的Web应用

当你敲下 python app.py&#xff0c;终端里跳出一行“Running on http://127.0.0.1:5000”&#xff0c;意味着你刚刚亲手造出了一个能响应HTTP请求的东西——哪怕它只是返回一串“Hello World”。把一个想法变成可访问的URL&#xff0c;这种从0到1的掌控感&#xff0c;是学习We…

作者头像 李华