Arduino 为什么这个代码赢了';我的无刷直流电动机不能运转吗?
我需要运行我的无刷直流电机。我偶然发现这个代码,它使我能够通过按键盘上的数字来移动我的BLDC电机。这个代码使我能够按键盘上的数字并将电机设置为所需的转速。但我的马达似乎根本不运转。请告诉我这个问题,也许还有一个建议,为什么我的无刷直流电机不能运行 代码如下:Arduino 为什么这个代码赢了';我的无刷直流电动机不能运转吗?,arduino,Arduino,我需要运行我的无刷直流电机。我偶然发现这个代码,它使我能够通过按键盘上的数字来移动我的BLDC电机。这个代码使我能够按键盘上的数字并将电机设置为所需的转速。但我的马达似乎根本不运转。请告诉我这个问题,也许还有一个建议,为什么我的无刷直流电机不能运行 代码如下: // include the library code: #include <LiquidCrystal.h> #include <EEPROM.h> #include <Keypad.h> cons
// include the library code:
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <Keypad.h>
const byte ROWS = 5; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8, 9};
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
char key_value='0';
char key_value1='0';
int RPM_Pin = 10; // LED connected to digital pin 9
char key_start_stop='#';
char RPM_Timer='A';
String timer="00";
String timer1="00";
String timer2="00";
int toggle=1;
int toggle1=0;
int T=10;
long v_time=0;
String RPM="0000";
String RPM1="0000";
String RPM2="0000";
int toggle_RPM=0;
int settings=0;
boolean settings_bit=false;
void setup()
{
pinMode(RPM_Pin, OUTPUT);
digitalWrite(RPM_Pin, LOW);
analogWrite(RPM_Pin, 0);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
lcd.setCursor(10, 0);// lcd cursor set to row1 & col1
lcd.print("00; T1");
lcd.setCursor(12, 2);// lcd cursor set to row1 & col1
lcd.print("0000");
Serial.begin(9600);
}
void loop()
{
char customKey = customKeypad.getKey();
if (customKey)
{
Serial.println(customKey);
if (customKey=='*' || customKey=='#' || customKey=='A' || customKey=='B' || customKey=='C')
{
if (customKey=='*')
{
key_start_stop = customKey;
T=timer.toInt();
key_value=RPM[2];
key_value1=RPM[3];
toggle_RPM=0;
if (settings==1)
{
settings_bit=true;
}
else
{
settings_bit=false;
}
}
else if (customKey=='#')
{
key_start_stop = customKey;
toggle1=1;
settings=0;
T=0;
}
else if (customKey=='A')
{
RPM_Timer=customKey;
lcd.setCursor(12, 0);// lcd cursor set to row1 & col12
lcd.print("; T");
}
else if (customKey=='B')
{
RPM_Timer=customKey;
lcd.setCursor(12, 0);
lcd.print("; R");
}
else if (customKey=='C')
{
RPM_Timer='A';
settings++;
if (settings>=3)
{
settings=0;
}
if (settings==1)
{
lcd.setCursor(10, 0);
lcd.print(timer1);
lcd.setCursor(12, 0);
lcd.print("; T2");
lcd.setCursor(12, 1);
lcd.print(RPM1[3]);
lcd.print(RPM1[2]);
lcd.print(RPM1[1]);
lcd.print(RPM1[0]);
}
else if (settings==2)
{
lcd.setCursor(10, 0);
lcd.print(timer2);
lcd.setCursor(12, 0);
lcd.print("; T3");
lcd.setCursor(12, 1);
lcd.print(RPM2[3]);
lcd.print(RPM2[2]);
lcd.print(RPM2[1]);
lcd.print(RPM2[0]);
}
else if (settings==0)
{
lcd.setCursor(10, 0);
lcd.print(timer);
lcd.setCursor(12, 0);
lcd.print("; T1");
lcd.setCursor(12, 1);
lcd.print(RPM[3]);
lcd.print(RPM[2]);
lcd.print(RPM[1]);
lcd.print(RPM[0]);
}
}
}
else if(RPM_Timer=='A' && key_start_stop=='#' && customKey!='C')
{
if (settings==0)
{
lcd.setCursor(12, 0);
lcd.print("; T1");
toggle_RPM=0;
if (toggle==0 )
{
timer[1]=customKey;
toggle=1;
lcd.setCursor(10, 0);
lcd.print(timer);
}
else
{
timer[0]=customKey;
toggle=0;
lcd.setCursor(10, 0);
lcd.print(timer);
}
}
else if (settings==1)
{
lcd.setCursor(12, 0);
lcd.print("; T2");
toggle_RPM=0;
if (toggle==0 )
{
timer1[1]=customKey;
toggle=1;
lcd.setCursor(10, 0);
lcd.print(timer1);
}
else
{
timer1[0]=customKey;
toggle=0;
lcd.setCursor(10, 0);
lcd.print(timer1);
}
}
else
{
settings=2;
lcd.setCursor(12, 0);
lcd.print("; T3");
toggle_RPM=0;
if (toggle==0 )
{
timer2[1]=customKey;
toggle=1;
lcd.setCursor(10, 0);
lcd.print(timer2);
}
else
{
timer2[0]=customKey;
toggle=0;
lcd.setCursor(10, 0);
lcd.print(timer2);
}
}
}
else if(RPM_Timer=='B' && key_start_stop=='#')
{
// Serial.println(RPM);
if (settings==0)
{
lcd.setCursor(12, 0);
lcd.print("; R1");
if (toggle_RPM>=4)
toggle_RPM=0;
if (toggle_RPM==0 )
{
RPM[3]=customKey;
lcd.setCursor(12, 1);
lcd.print(RPM[3]);
}
else if (toggle_RPM==1 )
{
RPM[2]=customKey;
lcd.setCursor(13, 1);
lcd.print(RPM[2]);
}
else if (toggle_RPM==2 )
{
RPM[1]=customKey;
lcd.setCursor(14, 1);
lcd.print(RPM[1]);
}
else
{
RPM[0]=customKey;
lcd.setCursor(15, 1);
lcd.print(RPM[0]);
}
toggle_RPM++;
}
else if (settings==1)
{
lcd.setCursor(12, 0);
lcd.print("; R2");
if (toggle_RPM>=4)
toggle_RPM=0;
if (toggle_RPM==0 )
{
RPM1[3]=customKey;
lcd.setCursor(12, 1);
lcd.print(RPM1[3]);
}
else if (toggle_RPM==1 )
{
RPM1[2]=customKey;
lcd.setCursor(13, 1);
lcd.print(RPM1[2]);
}
else if (toggle_RPM==2 )
{
RPM1[1]=customKey;
lcd.setCursor(14, 1);
lcd.print(RPM1[1]);
}
else
{
RPM1[0]=customKey;
lcd.setCursor(15, 1);
lcd.print(RPM1[0]);
}
toggle_RPM++;
}
else
{
settings=2;
lcd.setCursor(12, 0);
lcd.print("; R3");
if (toggle_RPM>=4)
toggle_RPM=0;
if (toggle_RPM==0 )
{
RPM2[3]=customKey;
lcd.setCursor(12, 1);
lcd.print(RPM2[3]);
}
else if (toggle_RPM==1 )
{
RPM2[2]=customKey;
lcd.setCursor(13, 1);
lcd.print(RPM2[2]);
}
else if (toggle_RPM==2 )
{
RPM2[1]=customKey;
lcd.setCursor(14, 1);
lcd.print(RPM2[1]);
}
else
{
RPM2[0]=customKey;
lcd.setCursor(15, 1);
lcd.print(RPM2[0]);
}
toggle_RPM++;
}
}
}
lcd.setCursor(0, 2);
lcd.print("FAN RPM IS :");
if(key_start_stop=='*' && T>0)
{
lcd.setCursor(0, 0);
lcd.print("FAN IS ON...T:");
if (T>9)
{
lcd.print(T);
}
else
{
lcd.print("0");
lcd.print(T);
}
lcd.setCursor(12, 2);
if(key_value1!='1')
{
switch (key_value)
{
case '2':
analogWrite(RPM_Pin, 51);
lcd.print("0200");
break;
case '3':
analogWrite(RPM_Pin, 77);
lcd.print("0300");
break;
case '4':
analogWrite(RPM_Pin, 102);
lcd.print("0400");
break;
case '5':
analogWrite(RPM_Pin, 128);
lcd.print("0500");
break;
case '6':
analogWrite(RPM_Pin, 153);
lcd.print("0600");
break;
case '7':
analogWrite(RPM_Pin, 179);
lcd.print("0700");
break;
case '8':
analogWrite(RPM_Pin, 204);
lcd.print("0800");
break;
case '9':
analogWrite(RPM_Pin, 230);
lcd.print("0900");
break;
default:
analogWrite(RPM_Pin, 35);
lcd.print("0100");
break;
}
}
else
{
analogWrite(RPM_Pin, 255);
lcd.print("1000");
}
}
else
{
lcd.setCursor(0, 0);// lcd cursor set to row1 & col1
lcd.print("FAN OFF.T:");
if (toggle1==1)
{
lcd.setCursor(10, 0);// lcd cursor set to row1 & col15
lcd.print(timer);
toggle1=0;
// settings=0;
if(RPM_Timer=='A')
{
lcd.setCursor(12, 0);// lcd cursor set to row1 & col15
lcd.print("; T0");
}
else
{
lcd.setCursor(12, 0);// lcd cursor set to row1 & col15
lcd.print("; R0");
}
}
analogWrite(RPM_Pin, 0);
digitalWrite(RPM_Pin, LOW);
}
if (v_time>=80)
{
v_time=0;
timer_virtual();
}
else
{
v_time++;
}
}
//================================================================================//
//
//================================================================================//
void timer_virtual()
{
if (key_start_stop=='*' && T>0)
{
T--;
}
else if (key_start_stop=='*')
{
//key_start_stop='#';
settings--;
// Serial.println(settings);
if (settings==1 || settings_bit==true)
{
// timer="00";
key_start_stop=='*';
T=timer1.toInt();
key_value=RPM1[2];
key_value1=RPM1[3];
settings_bit=false;
}
else if (settings==0)
{
// timer1="00";
key_start_stop=='*';
T=timer2.toInt();
key_value=RPM2[2];
key_value1=RPM2[3];
// Serial.println(settings);
}
else
{
key_start_stop='#';
settings=0;
toggle1=1;
}
}
}
//包括库代码:
#包括
#包括
#包括
常量字节行=5//四排
常量字节COLS=4//四列
//定义键盘按钮上的cymbols
字符六键[行][COLS]={
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*'、'0'、'#'、'D'},
{'*'、'0'、'#'、'D'}
};
字节rowPins[行]={2,3,4,5};
字节colPins[COLS]={6,7,8,9};
//初始化NewKeypad类的实例
Keypad customKeypad=键盘(makeyMap(六键)、行PIN、列PIN、行、列);
//使用接口引脚的编号初始化库
液晶显示器(A0、A1、A2、A3、A4、A5);
char key_value='0';
字符键_值1='0';
int RPM_Pin=10;//LED连接到数字引脚9
字符键_开始_停止='#';
字符RPM_定时器='A';
字符串计时器=“00”;
字符串timer1=“00”;
字符串timer2=“00”;
int-toggle=1;
int-toggle1=0;
int T=10;
长v_时间=0;
字符串RPM=“0000”;
字符串RPM1=“0000”;
字符串RPM2=“0000”;
int-toggle_RPM=0;
int设置=0;
布尔设置\u位=false;
无效设置()
{
引脚模式(RPM_引脚,输出);
数字写入(RPM_引脚,低);
模拟写入(RPM_引脚,0);
//设置LCD的列数和行数:
lcd.begin(16,2);
setCursor(10,0);//lcd cursor设置为row1&col1
lcd.打印(“00;T1”);
setCursor(12,2);//将lcd光标设置为第1行和第1列
lcd.打印(“0000”);
Serial.begin(9600);
}
void循环()
{
char customKey=customKeypad.getKey();
如果(自定义键)
{
Serial.println(customKey);
如果(customKey='*'| | customKey='#'| | customKey=='A'| | customKey=='B'| | customKey=='C')
{
如果(customKey=='*')
{
按键\开始\停止=自定义按键;
T=timer.toInt();
键_值=RPM[2];
键_值1=每分钟转速[3];
切换_RPM=0;
如果(设置==1)
{
设置\u位=真;
}
其他的
{
设置\u位=假;
}
}
else if(customKey=='#')
{
按键\开始\停止=自定义按键;
切换1=1;
设置=0;
T=0;
}
else if(customKey=='A')
{
RPM_定时器=自定义键;
lcd.setCursor(12,0);//lcd cursor设置为第1行和第12列
液晶显示打印(“T”);
}
else if(customKey=='B')
{
RPM_定时器=自定义键;
lcd.setCursor(12,0);
lcd.打印(“R”);
}
else if(customKey=='C')
{
RPM_Timer='A';
设置++;
如果(设置>=3)
{
设置=0;
}
如果(设置==1)
{
lcd.setCursor(10,0);
lcd.打印(计时器1);
lcd.setCursor(12,0);
液晶显示打印(“T2”);
lcd.setCursor(12,1);
lcd.print(RPM1[3]);
lcd.print(RPM1[2]);
lcd.print(RPM1[1]);
lcd.print(RPM1[0]);
}
else if(设置==2)
{
lcd.setCursor(10,0);
lcd.打印(timer2);
lcd.setCursor(12,0);
液晶显示打印(“T3”);
lcd.setCursor(12,1);
lcd.print(RPM2[3]);
lcd.print(RPM2[2]);
lcd.打印(RPM2[1]);
lcd.print(RPM2[0]);
}
else if(设置==0)
{
lcd.setCursor(10,0);
打印(定时器);
lcd.setCursor(12,0);
液晶显示打印(“T1”);
lcd.setCursor(12,1);
lcd.打印(RPM[3]);
lcd.打印(RPM[2]);
lcd.打印(RPM[1]);
lcd.打印(RPM[0]);
}
}
}
else if(RPM_Timer='A'和&key_start\u stop='C'&&customKey!='C')
{
如果(设置==0)
{
lcd.setCursor(12,0);
液晶显示打印(“T1”);
切换_RPM=0;
如果(切换==0)
{
计时器[1]=自定义键;
切换=1;
lcd.setCursor(10,0);
打印(定时器);
}
其他的
{
计时器[0]=自定义键;
切换=0;
lcd.setCursor(10,0);
打印(定时器);
}
}
else if(设置==1)
{
lcd.setCursor(12,0);
液晶显示打印(“T2”);
切换_RPM=0;
如果(切换==0)
{
timer1[1]=自定义键;
切换=1;
lcd.setCursor(10,0);
lcd.打印(计时器1);
}
其他的
{
timer1[0]=自定义键;
切换=0;
lcd.setCursor(10,0);
lcd.打印(计时器1);
}
}
其他的
{
设置=2;
lcd.setCursor(12,0);
液晶显示打印(“T3”);
切换_RPM=0;
如果(切换==0)
{
timer2[1]=自定义密钥;
切换=1;
lcd.setCursor(10,0);
lcd.打印(timer2);
}
其他的
{
timer2[0]=自定义键;
切换=0;
lcd.setCursor(10,0);
lcd.打印(timer2);
}
}
}
else if(RPM_Timer='B'和&key_start_stop=='''
{
//串行打印LN(RPM);
#include <Servo.h>
Servo myservo; // create servo object to control a servo
pos = 50;
void setup()
{
myservo.attach(9); // attaches the servo on D9 to the servo object
}
void loop()
{
// The min and max value is 0 and 180
//Change pos variable according to your requirement
myservo.write(pos);
delay(40);
}