看网上大家都在求光电传感器计数的例子,小子不才,这里献丑了,图片发不起,只能发附件了
光电传感器+电机测试程序,计数满300,电机改变方向2015/9/9测试通过
int inAPin = 7; //定义7脚为传感器输入脚
int aPreStatus; //状态保持变量
int counta = 0; //计数器变量
void setup() {
pinMode(7, INPUT); //设定7脚为输入形态
pinMode(8, OUTPUT); //设定8脚为输出形态
pinMode(9, OUTPUT); //设定9脚为输出形态
digitalWrite(8, LOW); //设定8脚初始输出状态为低电平
digitalWrite(9, LOW); //设定9脚初始输出状态为低电平
aPreStatus = digitalRead(inAPin);
Serial.begin(9600);
}
void loop() {
if (digitalRead(inAPin) == 0) //传感器计数
{
if (aPreStatus == 1)
{
counta++;
Serial.println(counta);
}
aPreStatus = 0;
}
else
aPreStatus = 1;
digitalWrite(9, HIGH); //电机驱动PWM脉冲,更改数字200可改变电机转速
delayMicroseconds(200);
digitalWrite(9, LOW);
delayMicroseconds(200);
if (counta == 300) //如果计数器=300,8脚改变当前状态,如果高则变为低,如果低则变为高,然后计数器清零,并延时半秒
{
if (digitalRead(8) == LOW)
{
digitalWrite(8, HIGH);
}
else
{
digitalWrite(8, LOW);
}
counta = 0;
delay(500);
}
}
|