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

发布时间:2026/10/19 7:43:17
【项目复现】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); }项目启发夹持 步进电机闭合 力敏传感器判断复位 反向运动 限位开关判断停止 达到压力 / 限位后停止

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询