Arduino 为什么这个代码赢了';我的无刷直流电动机不能运转吗?

Arduino 为什么这个代码赢了';我的无刷直流电动机不能运转吗?,arduino,Arduino,我需要运行我的无刷直流电机。我偶然发现这个代码,它使我能够通过按键盘上的数字来移动我的BLDC电机。这个代码使我能够按键盘上的数字并将电机设置为所需的转速。但我的马达似乎根本不运转。请告诉我这个问题,也许还有一个建议,为什么我的无刷直流电机不能运行 代码如下: // include the library code: #include <LiquidCrystal.h> #include <EEPROM.h> #include <Keypad.h> cons

我需要运行我的无刷直流电机。我偶然发现这个代码,它使我能够通过按键盘上的数字来移动我的BLDC电机。这个代码使我能够按键盘上的数字并将电机设置为所需的转速。但我的马达似乎根本不运转。请告诉我这个问题,也许还有一个建议,为什么我的无刷直流电机不能运行

代码如下:

// 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); 
}