Arduino STM32F103如何让pa11输出高电平?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino STM32F103如何让pa11输出高电平?相关的知识,希望对你有一定的参考价值。

想要让他输出高电平的话,这个应该去买一个别人的情人后,将纸的电压然后变得高一点,然后应该就可以了。 参考技术A 如何让输出高电平的高电平比较简单,可以直接设置为数字。 参考技术B 具体想问啥说清楚,说明白说详细的帮你想想办法。 参考技术C 那如何输出的话,我建议你还是找一个专业人士,专业人士的话,他对这种的了解的更多的更清楚。

在按下 Arduino 上的特定键盘按钮之前,如何让步进电机运行?

【中文标题】在按下 Arduino 上的特定键盘按钮之前,如何让步进电机运行?【英文标题】:How can I make a stepper motor run until I press a specific keypad button on Arduino? 【发布时间】:2017-03-26 08:48:49 【问题描述】:

这是我的代码:

#include <LiquidCrystal.h>
#include <Stepper.h>
#include <Key.h>
#include <Keypad.h>

const int stepsPerRevolution = 200;
const byte ROWS = 4; //four rows
const byte COLS = 1; //one column
char keys[ROWS][COLS] = 
  '-',
  '+',
  'I',
  '0';
 byte rowPins[ROWS] = 6,7,8,9;
 byte colPins[COLS] = 10;

int count = 0;
LiquidCrystal lcd(A5,A4,A3,A2,A1,A0);
Stepper myStepper(stepsPerRevolution, 2,4,3,5);
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int plannedSpeed = 50;

void setup() 
  lcd.begin(16,2);
  Stepper.setSpeed(plannedSpeed);
  Serial.begin(9600);


void loop() 
  // put your main code here, to run repeatedly:
  char key = keypad.getKey();
  Serial.println(plannedSpeed);
  if (key == '-') 
    plannedSpeed = plannedSpeed - 1;
    Serial.println(plannedSpeed);
    delay(10);
  
  if (key == '+') 
    plannedSpeed = plannedSpeed +1;
    Serial.println(plannedSpeed);
    delay(10);
      
  if (key == 'I') 
    myStepper.step(stepsPerRevolution);
    Serial.print("Running at " );
    Serial.println(plannedSpeed);
    delay(10);
  

我正在尝试对其进行编码,以便我可以使用键盘选择速度,当我按下“I”按钮时电机启动,当我按下“O”按钮时停止。我怎样才能做到这一点?谢谢!

【问题讨论】:

【参考方案1】:

我已更正您的代码并在必要时发表了评论。你也解决了一些小问题:

    您正在递减plannedSpeed,但并未阻止它低于最小值,即0。 您在增加 plannedSpeed 时没有阻止它超过最大值,即 stepsPerRevolution。 您没有在启动步进电机时更改 plannedSpeed 的值。
#include <LiquidCrystal.h>
#include <Stepper.h>
#include <Key.h>
#include <Keypad.h>

const int stepsPerRevolution = 200;
const byte ROWS = 4; //four rows
const byte COLS = 1; //one column
char keys[ROWS][COLS] = 
  '-',
  '+',
  'I',
  '0'
;
byte rowPins[ROWS] = 6, 7, 8, 9;
byte colPins[COLS] = 10;

int count = 0;
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0);
Stepper myStepper(stepsPerRevolution, 2, 4, 3, 5);
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

int plannedSpeed = 50;
void setup() 
  // put your setup code here, to run once:
  lcd.begin(16, 2);
  Stepper.setSpeed(plannedSpeed);
  Serial.begin(9600);


void loop() 
  // put your main code here, to run repeatedly:
  char key = keypad.getKey();
  Serial.println(plannedSpeed);
  if (key == '-') 
    if (--plannedSpeed < 0) // Decrease plannedSpeed 
      plannedSpeed = 0; // Make sure it does not go below 0
    Serial.println(plannedSpeed);
    delay(10);
  
  else if (key == '+') 
    if (++plannedSpeed > stepsPerRevolution) // Increase plannedSpeed 
      plannedSpeed = stepsPerRevolution; // Make sure it does not go above stepsPerRevolution
    Serial.println(plannedSpeed);
    delay(10);
  
  else if (key == 'I') 
    plannedSpeed = stepsPerRevolution; // Set plannedSpeed to maximum
    myStepper.step(plannedSpeed); // Set stepper to plannedSpeed
    Serial.print("Running at " );
    Serial.println(plannedSpeed);
    delay(10);
  
  else if (key == '0') 
    plannedSpeed = 0; // Set plannedSpeed to 0
    myStepper.step(plannedSpeed); // Set stepper to plannedSpeed
    Serial.print("Stopping at " );
    Serial.println(plannedSpeed);
    delay(10);
  

【讨论】:

以上是关于Arduino STM32F103如何让pa11输出高电平?的主要内容,如果未能解决你的问题,请参考以下文章

STM32F103VET6基于Arduino开发框架下串口和软串口通讯示例

STM32F401RCT6基于Arduino框架点灯程序

STM32F103C8T6基于Arduino框架下利用定时器跑RBG灯闪烁

STM32F103VET6基于Arduino开发框架下FreeRTOS串口1不能正常工作解决方案

STM32F103C8T6在Arduino框架下驱动SH1106 1.3“ IIC OLED显示

STM32F103C8T6在Arduino框架下驱动ssd1306 0.96“ IIC OLED显示