试验一程序
#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); //停止
}
¥29.8
¥9.9
¥59.8