聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 工业控制技术实验程序

工业控制技术实验程序

时间:2014-06-26 21:26:58    下载该word文档

试验程序

#define PWM 6

unsigned char led[6]={*, *,*,*,*,*};

void setup()

{

for(int i=0;i<6;i++)

pinMode(led[i],OUTPUT);

pinMode(PWM,OUTPUT);

}

void loop()

{

for(int i=0;i<6;i++) //正循环点亮

{

digitalWrite(led[i],HIGH);

delay(100);

digitalWrite(led[i],LOW);

}

for(int i=5;i>-1;i--) //反循环点亮

{

digitalWrite(led[i],HIGH);

delay(100);

digitalWrite(led[i],LOW);

}

for(int j=0;j<3;j++) //全部灯闪烁三次

{

for(int i=0;i<6;i++)

{

digitalWrite(led[i],LOW);

}

delay(500);

for(int i=0;i<6;i++)

{

digitalWrite(led[i],HIGH);

}

delay(500);

}

for(int k=0;k<256;k++) // 全部灯逐渐熄灭

{

analogWrite(PWM,k);

delay(20);

}

for(int k=255;k>-1;k--) //全部灯慢慢点亮

{

analogWrite(PWM,k);

delay(20);

}

for(int i=0;i<6;i++) // 全部灯熄灭

{

digitalWrite(led[i],LOW);

}

while(1);

}

样例2

#define PinA 2 //中断0

unsigned char led[8]={38,39,40,41,42,43,44,45};

volatile unsigned char j;

void setup()

{

for(int i=0;i<8;i++)

pinMode(led[i],OUTPUT);

pinMode(PinA,INPUT); //D2脚为输入

attachInterrupt(0,count,RISING);

}

void loop()

{

while(1)

{

digitalWrite(led[j],HIGH);

if(j>=8)

{

j=0;

for(int i=0;i<8;i++)

digitalWrite(led[i],LOW);

}

}

}

void count()

{

j++;

}

试验程序

const int encoderPinA = 3;

const int encoderPinB = 6;

olean encoderALast = LOW;  // remembers the previous pin state 

unsigned long time = 0;

long encoderPos=0;  // holds temp vals

int val;

int pinI1=42;//定义I1接口

int pinI2=44;//定义I2接口

int speedpin=46;//定义EA(PWM调速)接口 

int pinI3=31;//定义I1接口

int pinI4=33;//定义I2接口

int speedpin2=35;//定义EA(PWM调速)接口 // Initialize

void setup()

{

    pinMode(pinI1,OUTPUT);//定义该接口为输出接口

  pinMode(pinI2,OUTPUT);

  pinMode(speedpin,OUTPUT);

  pinMode(pinI3,OUTPUT);//定义该接口为输出接口

 pinMode(pinI4,OUTPUT);

   pinMode(speedpin2,OUTPUT);

   analogWrite(speedpin,100);//输入模拟值进行设定速度 

  digitalWrite(pinI2,LOW);//使直流电机顺时针转

  digitalWrite(pinI1,HIGH);  

analogWrite(speedpin2,130);//输入模拟值进行设定速度

  digitalWrite(pinI3,LOW);//使直流电机顺时针转

  digitalWrite(pinI4,HIGH); 

  pinMode(encoderPinA, INPUT);

 pinMode(encoderPinB, INPUT);

  digitalWrite(encoderPinA, HIGH);

  digitalWrite(encoderPinB, HIGH);

  Serial.begin (9600);

  time = millis(); //时间初值

void loop()

{

  if ((millis() - time) > 500)

  {

       Serial.println (encoderPos);

      time = millis();

  } 

  boolean encoderA = digitalRead(encoderPinA);

  if ((encoderALast == HIGH) && (encoderA == LOW))

  {

    if (digitalRead(encoderPinB) == LOW)

  {

    encoderPos--;

  }

    else

    {

      encoderPos++;

    }

    }

  encoderALast = encoderA;

}

试验三程序

#include

#include

LiquidCrystal lcd(36,37,30,31,32,33);

unsigned char keyvalue[4][4]={{0},{0},{0},{0}};

unsigned char key;

volatile unsigned long tt;

unsigned int aa;

unsigned char i,j,k,l;

unsigned int table[13]={51,68,85,102,119,136,153,170,187,204,221,238,255};//对应不同的占空比

#define PinA 2 //中断0

#define IN3 42

#define IN4 43

#define DUTY 6

void keyscan() // 扫描按键

{

for(int i=22;i<26;i++)

{

digitalWrite(i,LOW);

for(int j=26;j<30;j++)

keyvalue[i-22][j-26]=digitalRead(j);

digitalWrite(i,HIGH);

}

}

void keyprocess() // 键值处理

{

for(int m=0;m<4;m++)

{

for(int l=0;l<4;l++)

{

if(keyvalue[m][l]==0)

key=m*4+l+1;

}

}

}

void setup()

{

key=0;

pinMode(PinA,INPUT); //D2脚为输入

pinMode(IN3,OUTPUT);

pinMode(IN4,OUTPUT);

pinMode(DUTY,OUTPUT);

lcd.begin(16,2);

FlexiTimer2::set(500,flas);

for(int i=22;i<30;i++)

pinMode(i,OUTPUT);

for(int i=22;i<30;i++)

digitalWrite(i,HIGH);

for(int i=26;i<30;i++)

pinMode(i,INPUT);

attachInterrupt(0,count,RISING);

FlexiTimer2::start();

}

void loop()

{

while(1)

{

keyscan();

keyprocess();

lcd.setCursor(0,0);

switch(key) //通过按键改变占空比来调节速度

{

case 1: lcd.print(" forward ");

lcd.setCursor(2,1);

lcd.print(" ");

digitalWrite(IN4,HIGH); //正转

digitalWrite(IN3,LOW);break;

case 2: lcd.print(" reversion ");

lcd.setCursor(2,1);

lcd.print(" ");

digitalWrite(IN4,LOW); //反转

digitalWrite(IN3,HIGH);break;

case 3:analogWrite(DUTY,table[0]);

lcd.setCursor(8,0);

lcd.print(" 20.00");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 4:analogWrite(DUTY,table[1]);

lcd.setCursor(8,0);

lcd.print(" 26.67");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 5:analogWrite(DUTY,table[2]);

lcd.setCursor(8,0);

lcd.print(" 33.33");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 6: analogWrite(DUTY,table[3]);

lcd.setCursor(8,0);

lcd.print(" 40.00");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 7:analogWrite(DUTY,table[4]);

lcd.setCursor(8,0);

lcd.print(" 46.67");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 8:analogWrite(DUTY,table[5]);

lcd.setCursor(8,0);

lcd.print(" 53.33");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 9:analogWrite(DUTY,table[6]);

lcd.setCursor(8,0);

lcd.print(" 60.00");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 10:analogWrite(DUTY,table[7]);

lcd.setCursor(8,0);

lcd.print(" 66.67");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 11:analogWrite(DUTY,table[8]);

lcd.setCursor(8,0);

lcd.print(" 73.33");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 12:analogWrite(DUTY,table[9]);

lcd.setCursor(8,0);

lcd.print(" 80.00");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 13:analogWrite(DUTY,table[10]);

lcd.setCursor(8,0);

lcd.print(" 86.67");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 14:analogWrite(DUTY,table[11]);

lcd.setCursor(8,0);

lcd.print(" 93.33");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 15:analogWrite(DUTY,table[12]);

lcd.setCursor(8,0);

lcd.print(" 100");

lcd.setCursor(8,1);

lcd.print(i);

lcd.print(j);

lcd.print(k);

lcd.print(l);break;

case 16:analogWrite(DUTY,0);

lcd.print(" stop ");

lcd.setCursor(2,1);

lcd.print(" ");break;

}

if(key>2&&key<16)

{

lcd.setCursor(3,0);

lcd.print("DUTY:");

lcd.setCursor(14,0);

lcd.print("%");

lcd.setCursor(2,1);

lcd.print("SPEED:");

lcd.setCursor(12,1);

lcd.print("r/m");

}

}

}

void count()

{

tt++;

}

void flas() //每隔500ms读一次脉冲

{

//noInterrupts(); //关闭总中断

aa=(tt*120)/334;

tt=0;

i=aa/1000;

j=aa%1000/100;

k=aa%100/10;

l=aa%10;

//interrupts(); //打开总中断

}

试验四程序

#include

#define CP 6

#define DIR 48

#define EN 49

unsigned int i;

void setup()

{

pinMode(DIR,OUTPUT);

pinMode(EN,OUTPUT);

digitalWrite(EN,HIGH); //启动

InitTimersSafe();

}

void loop()

{

digitalWrite(DIR,LOW); //正转

for(i=100;i<=1000;i++) //逐渐加速

{

SetPinFrequencySafe(CP,i);

pwmWrite(CP, 127);

delay(50);

}

delay(5000);

for(i=1000;i>=100;i--) // 逐渐减速

{

SetPinFrequencySafe(CP,i);

pwmWrite(CP, 127);

delay(50);

}

digitalWrite(DIR,HIGH); //反转

for(i=100;i<=1000;i++) //逐渐加速

{

SetPinFrequencySafe(CP,i);

pwmWrite(CP, 127);

delay(50);

}

delay(5000);

for(i=1000;i>=100;i--) // 逐渐减速

{ SetPinFrequencySafe(CP,i);

pwmWrite(CP, 127);

delay(50); }

digitalWrite(EN,LOW); //停止

}

免费下载 Word文档免费下载: 工业控制技术实验程序

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服