360 ڈگری PWM روٹری انکوڈر بریکآؤٹ
360 ڈگری PWM روٹری انکوڈر بریکآؤٹ
تفصیل
اس قسم کا سوئچ ایک اضافی روٹری انکوڈر ہے۔ حقیقت یہ ہے کہ ، یہ تمام روٹری انکوڈروں میں سب سے زیادہ استعمال ہوتا ہے جس کی وجہ سے اس کی کم لاگت اور اشارے فراہم کرنے کی صلاحیت کی وجہ سے ہوتا ہے جس کی رفتار جیسی تحریک سے متعلق معلومات فراہم کرنے کے لئے آسانی سے تشریح کی جاسکتی ہے۔
گھومنے سے ، روٹری انکوڈر گردش کے دوران آؤٹ پٹ پلس کی فریکوئنسی کو مثبت اور الٹ سمت میں گن سکتا ہے ، بغیر کسی گنتی کے روٹری پوٹینومیٹر کاؤنٹر کے برعکس۔ روٹری انکوڈر کے بٹن کے ساتھ ، اسے صفر سے شروع ہونے والی ابتدائی حالت میں دوبارہ ترتیب دیا جاسکتا ہے۔
ٹیسٹنگ کوڈ
انٹ ریڈپین = 2 ؛
int یلپین = 3 ؛
INT GREANPIN = 4 ؛
int apin = 6 ؛
int bpin = 7 ؛
انٹ بٹنپین = 5 ؛
int state = 0 ؛
int longperiod = 5000 ؛ // وقت سبز یا سرخ پر
INT شارٹ پیریڈ = 700 ؛ // وقت کی مدت بدلتے وقت
INT ٹارگٹ اکاؤنٹ = شارٹ پیریڈ ؛
INT گنتی = 0 ؛
باطل سیٹ اپ ()
{
پنموڈ (اپین ، ان پٹ) ؛
پنموڈ (بیپن ، ان پٹ) ؛
پنموڈ (بٹن پن ، ان پٹ) ؛
پنموڈ (ریڈپن ، آؤٹ پٹ) ؛
پنموڈ (یلوپن ، آؤٹ پٹ) ؛
پنموڈ (گرینپین ، آؤٹ پٹ) ؛
}
باطل لوپ ()
{
گنتی ++ ؛
اگر (ڈیجیٹل ریڈ (بٹنپن))
{
سیٹ لائٹس (اونچی ، اونچی ، اونچی) ؛
}
ورنہ
{
int change = getencoderturn () ؛
int newperiod = longeriod + (تبدیل کریں * 1000) ؛
اگر (newperiod> = 1000 && newperiod <= 10000)
{
لانگ پیریڈ = نیو پیریڈ ؛
}
اگر (گنتی> ٹارگٹ کاؤنٹ)
{
سیٹ اسٹیٹ () ؛
گنتی = 0 ؛
}
}
تاخیر (1) ؛
}
int getencoderturn ()
{
// واپسی -1 ، 0 ، یا +1
جامد انٹ اولڈا = کم ؛
جامد انٹ اولڈ بی = کم ؛
INT نتیجہ = 0 ؛
int newa = ڈیجیٹل ریڈ (apin) ؛
int newb = ڈیجیٹل ریڈ (bpin) ؛
if (newa! = Olda || newb! = Oldb)
{
// کچھ بدل گیا ہے
اگر (اولڈا == کم && newa == اعلی)
{
نتیجہ = - (Oldb * 2 - 1) ؛
}
}
اولڈا = newa ؛
Oldb = newb ؛
واپسی کا نتیجہ ؛
}
INT SETSTATE ()
{
اگر (ریاست == 0)
{
سیٹ لائٹس (اونچی ، کم ، کم) ؛
ٹارگٹ اکاؤنٹ = لانگ اسپیڈ ؛
ریاست = 1 ؛
}
ورنہ (ریاست == 1)
{
سیٹ لائٹس (اونچی ، اونچی ، کم) ؛
ٹارگٹ اکاؤنٹ = شارٹ پیریڈ ؛
ریاست = 2 ؛
}
ورنہ (ریاست == 2)
{
سیٹ لائٹس (کم ، کم ، اونچی) ؛
ٹارگٹ اکاؤنٹ = لانگ اسپیڈ ؛
ریاست = 3 ؛
}
ورنہ (ریاست == 3)
{
سیٹ لائٹس (کم ، اونچی ، کم) ؛
ٹارگٹ اکاؤنٹ = شارٹ پیریڈ ؛
ریاست = 0 ؛
}
}
باطل سیٹ لائٹس (انٹ ریڈ ، انٹ پیلا ، انٹ گرین)
{
ڈیجیٹل رائٹ (ریڈپن ، سرخ) ؛
ڈیجیٹل رائٹ (یلوپن ، پیلا) ؛
ڈیجیٹل رائٹ (گرینپین ، گرین) ؛
}