- మెటీరియల్ అవసరం
- జాయ్ స్టిక్ మాడ్యూల్ అర్థం చేసుకోవడం:
- సర్క్యూట్ రేఖాచిత్రం:
- జాయ్ స్టిక్ ఇంటర్ఫేసింగ్ కోసం ప్రోగ్రామింగ్:
- అనుకరణ వీక్షణ:
- హార్డ్వేర్ మరియు పని:
ఏదైనా ఎలక్ట్రానిక్స్ ప్రాజెక్టులలో ఇన్పుట్ పరికరాలు కీలక పాత్ర పోషిస్తాయి. ఈ ఇన్పుట్ పరికరం వినియోగదారుడు డిజిటల్ ప్రపంచంతో సంభాషించడానికి సహాయపడుతుంది. ఇన్పుట్ పరికరం పుష్ బటన్ వలె సరళంగా ఉంటుంది లేదా టచ్ స్క్రీన్ వలె క్లిష్టంగా ఉంటుంది; ఇది ప్రాజెక్ట్ యొక్క అవసరాన్ని బట్టి మారుతుంది. ఈ ట్యుటోరియల్లో మన పిఐసి మైక్రోకంట్రోలర్తో జాయ్స్టిక్ను ఎలా ఇంటర్ఫేస్ చేయాలో నేర్చుకోబోతున్నాం, జాయ్స్టిక్ అనేది డిజిటల్ ప్రపంచంతో సంభాషించడానికి ఒక చక్కని మార్గం మరియు దాదాపు ప్రతి ఒక్కరూ తమ కౌమారదశలో వీడియో గేమ్స్ ఆడటానికి ఒకదాన్ని ఉపయోగించారు.
జాయ్ స్టిక్ ఒక అధునాతన పరికరం అనిపించవచ్చు, కాని ఇది వాస్తవానికి రెండు పొటెన్షియోమీటర్లు మరియు పుష్ బటన్ కలయిక. అందువల్ల ఆ MCU యొక్క ADC లక్షణాన్ని ఎలా ఉపయోగించాలో మాకు తెలిస్తే ఏదైనా MCU తో ఇంటర్ఫేస్ చేయడం కూడా చాలా సులభం. పిఐసితో ఎడిసిని ఎలా ఉపయోగించాలో మేము ఇప్పటికే నేర్చుకున్నాము, అందువల్ల ఇది జాయ్స్టిక్ను ఇంటర్ఫేస్ చేయడానికి ఒక పని మాత్రమే అవుతుంది. పికెట్కు కొత్తగా ఉన్నవారికి ప్రాజెక్ట్ను సులభంగా అర్థం చేసుకోవడానికి పై ADC ప్రాజెక్ట్తో పాటు LED బ్లింకింగ్ సీక్వెన్స్ ప్రాజెక్ట్ను నేర్చుకోవాలని సిఫార్సు చేయబడింది.
మెటీరియల్ అవసరం
- ప్రోగ్రామింగ్ కోసం పిక్కిట్ 3
- జాయ్ స్టిక్ మాడ్యూల్
- PIC16F877A IC
- 40 - పిన్ ఐసి హోల్డర్
- పెర్ఫ్ బోర్డు
- 20 MHz క్రిస్టల్ OSC
- బెర్గ్ స్టిక్ పిన్స్
- 220ohm రెసిస్టర్
- ఏదైనా రంగు యొక్క 5-LED లు
- 1 టంకం కిట్
- ఐసి 7805
- 12 వి అడాప్టర్
- వైర్లను కనెక్ట్ చేస్తోంది
- బ్రెడ్బోర్డ్
జాయ్ స్టిక్ మాడ్యూల్ అర్థం చేసుకోవడం:
జాయ్స్టిక్లు వేర్వేరు ఆకారాలు మరియు పరిమాణాలలో లభిస్తాయి. ఒక సాధారణ జాయ్ స్టిక్ మాడ్యూల్ క్రింద ఉన్న చిత్రంలో చూపబడింది. జాయ్ స్టిక్ అనేది స్మార్ట్ మెకానికల్ అమరికపై అమర్చిన పొటెన్షియోమీటర్లు మరియు పుష్ బటన్ కంటే ఎక్కువ కాదు. జాయ్ స్టిక్ యొక్క X మరియు Y కదలికలను ట్రాక్ చేయడానికి పొటెన్టోమీటర్ ఉపయోగించబడుతుంది మరియు జాయ్ స్టిక్ నొక్కితే గ్రహించడానికి బటన్ ఉపయోగించబడుతుంది. పొటెన్టోమీటర్లు రెండూ అనలాగ్ వోల్టేజ్ను అవుట్పుట్ చేస్తాయి, ఇది జాయ్ స్టిక్ యొక్క స్థానం మీద ఆధారపడి ఉంటుంది. కొన్ని వోల్టేజ్ మార్పులను కొన్ని మైక్రోకంట్రోలర్ ఉపయోగించి అర్థం చేసుకోవడం ద్వారా మనం కదలిక దిశను పొందవచ్చు. ఇంతకుముందు మేము జాయ్ స్టిక్ ను AVR తో, జాయ్ స్టిక్ విత్ ఆర్డునో మరియు రాస్ప్బెర్రీ పైతో ఇంటర్ఫేస్ చేసాము.
ఏదైనా సెన్సార్ లేదా మాడ్యూల్ను మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేసే ముందు అది ఎలా పనిచేస్తుందో తెలుసుకోవడం ముఖ్యం. ఇక్కడ మా జాయ్స్టిక్లో 5 అవుట్పుట్ పిన్లు ఉన్నాయి, వాటిలో రెండు శక్తి కోసం మరియు మూడు డేటా కోసం. మాడ్యూల్ + 5 వితో శక్తినివ్వాలి. డేటా పిన్లకు VRX, VRY మరియు SW అని పేరు పెట్టారు.
“VRX” అనే పదం X- అక్షం మీద వేరియబుల్ వోల్టేజ్ మరియు “VRY” అనే పదం Y- అక్షంలో వేరియబుల్ వోల్టేజ్ మరియు “SW” అంటే స్విచ్.
కాబట్టి మేము జాయ్స్టిక్ను ఎడమ లేదా కుడి వైపుకు తరలించినప్పుడు VRX లోని వోల్టేజ్ విలువ మారుతూ ఉంటుంది మరియు మనం దానిని పైకి లేదా క్రిందికి మార్చినప్పుడు VRY మారుతుంది. అదేవిధంగా మేము దానిని వికర్ణంగా తరలించినప్పుడు మేము VRX మరియు VRY రెండూ మారుతూ ఉంటాయి. మేము స్విచ్ నొక్కినప్పుడు SW పిన్ భూమికి అనుసంధానించబడుతుంది. అవుట్పుట్ విలువలను బాగా అర్థం చేసుకోవడానికి ఈ క్రింది బొమ్మ మీకు సహాయం చేస్తుంది
సర్క్యూట్ రేఖాచిత్రం:
జాయ్ స్టిక్ ఎలా పనిచేస్తుందో ఇప్పుడు మనకు తెలుసు, జాయ్ స్టిక్ మాడ్యూల్ యొక్క మూడు డేటా పిన్స్ చదవడానికి మాకు రెండు ADC పిన్స్ మరియు ఒక డిజిటల్ ఇన్పుట్ పిన్ అవసరమవుతాయని ఒక నిర్ణయానికి రావచ్చు. పూర్తి సర్క్యూట్ రేఖాచిత్రం క్రింది చిత్రంలో చూపబడింది
సర్క్యూట్ రేఖాచిత్రంలో మీరు చూడగలిగినట్లుగా, జాయ్స్టిక్కు బదులుగా మేము రెండు పొటెన్షియోమీటర్ RV1 మరియు RV3 లను అనలాగ్ వోల్టేజ్ ఇన్పుట్లుగా మరియు స్విచ్ కోసం లాజిక్ ఇన్పుట్గా ఉపయోగించాము. పిన్స్ పేర్లతో సరిపోలడానికి మీరు వైలెట్ రంగులో వ్రాసిన లేబుళ్ళను అనుసరించవచ్చు మరియు తదనుగుణంగా మీ కనెక్షన్లను చేయవచ్చు.
అనలాగ్ పిన్స్ A0 మరియు A1 ఛానెల్లకు అనుసంధానించబడి ఉన్నాయని మరియు డిజిటల్ స్విచ్ RB0 కి అనుసంధానించబడిందని గమనించండి. మనకు 5 ఎల్ఈడీ లైట్లు అవుట్పుట్గా అనుసంధానించబడి ఉంటాయి, తద్వారా జాయ్స్టిక్ కదిలిన దిశ ఆధారంగా మనం ఒకదాన్ని మెరుస్తాము. కాబట్టి ఈ అవుట్పుట్ పిన్స్ RC0 నుండి RC4 కు PORT C కి అనుసంధానించబడి ఉన్నాయి. మేము మా సర్క్యూట్ రేఖాచిత్రాన్ని ప్యాన్ చేసిన తర్వాత, ప్రోగ్రామింగ్తో కొనసాగవచ్చు, ఆపై ఈ సర్క్యూట్లోని ప్రోగ్రామ్ను అనుకరించండి, ఆపై బ్రెడ్బోర్డ్లో సర్క్యూట్ను నిర్మించి, ఆపై ప్రోగ్రామ్ను హార్డ్వేర్కు అప్లోడ్ చేయండి. పై కనెక్షన్లు చేసిన తర్వాత నా హార్డ్వేర్ మీకు ఒక ఆలోచన ఇవ్వడానికి క్రింద చూపబడింది
జాయ్ స్టిక్ ఇంటర్ఫేసింగ్ కోసం ప్రోగ్రామింగ్:
PIC తో జాయ్స్టిక్ ఇంటర్ఫేస్ కార్యక్రమం సాధారణ మరియు సూటిగా ఉంటుంది. జాయ్ స్టిక్ ఏ పిన్స్తో అనుసంధానించబడిందో మరియు వాటి పనితీరు ఏమిటో మనకు ఇప్పటికే తెలుసు, కాబట్టి మనం పిన్ల నుండి అనలాగ్ వోల్టేజ్ను చదవాలి మరియు తదనుగుణంగా అవుట్పుట్ LED ని నియంత్రించాలి.
దీన్ని చేయటానికి పూర్తి ప్రోగ్రామ్ ఈ పత్రం చివరలో ఇవ్వబడింది, కాని విషయాలను వివరించడానికి నేను దిగువ చిన్న అర్ధవంతమైన స్నిప్పెట్లకు కోడ్ను విచ్ఛిన్నం చేస్తున్నాను.
కాన్ఫిగరేషన్ బిట్లను సెట్ చేయడం ద్వారా ప్రోగ్రామ్ ఎప్పటిలాగే ప్రారంభించబడుతోంది, కాన్ఫిగరేషన్ బిట్లను సెట్ చేయడం గురించి మేము పెద్దగా చర్చించబోతున్నాం ఎందుకంటే ఎల్ఈడీ బ్లింకింగ్ ప్రాజెక్ట్లో మేము ఇప్పటికే నేర్చుకున్నాము మరియు ఈ ప్రాజెక్ట్కు కూడా ఇది ఒకటే. కాన్ఫిగరేషన్ బిట్స్ సెట్ చేయబడిన తర్వాత మన పిఐసిలో ఎడిసి మాడ్యూల్ ఉపయోగించడం కోసం ఎడిసి ఫంక్షన్లను నిర్వచించాలి. పిఐసి ట్యుటోరియల్తో ఎడిసిని ఎలా ఉపయోగించాలో కూడా ఈ ఫంక్షన్ నేర్చుకున్నారు. ఆ తరువాత, ఏ పిన్స్ ఇన్పుట్స్ మరియు అవుట్పుట్ పిన్స్ అని మేము ప్రకటించాలి. ఇక్కడ LED PORTC కి అనుసంధానించబడి ఉంది కాబట్టి అవి అవుట్పుట్ పిన్స్ మరియు జాయ్ స్టిక్ యొక్క స్విచ్ పిన్ డిజిటల్ ఇన్పుట్ పిన్. కాబట్టి మేము ఈ క్రింది పంక్తులను అదే విధంగా ప్రకటించడానికి ఉపయోగిస్తాము:
// ***** I / O కాన్ఫిగరేషన్ **** // TRISC = 0X00; // PORT C ను అవుట్పుట్ పోర్టులుగా ఉపయోగిస్తారు PORTC = 0X00; // అన్ని పిన్లను తక్కువ TRISB0 = 1 చేయండి; // RB0 ను ఇన్పుట్గా ఉపయోగిస్తారు // *** I / O కాన్ఫిగరేషన్ ముగింపు ** ///
ADC సూదులు ఇన్పుట్ వంటి నిర్వచించవచ్చు అవసరం ADC ఫంక్షన్ ఇన్పుట్ పిన్ కేటాయించబడుతుంది ఉపయోగిస్తున్నప్పుడు వారు ఎందుకంటే పిన్స్. పిన్స్ నిర్వచించబడిన తర్వాత, మేము ఇంతకుముందు నిర్వచించిన ADC_initialize ఫంక్షన్ను పిలుస్తాము . ఈ ఫంక్షన్ అవసరమైన ADC రిజిస్టర్లను సెట్ చేస్తుంది మరియు ADC మాడ్యూల్ను సిద్ధం చేస్తుంది.
ADC_ ప్రారంభించు (); // ADC మాడ్యూల్ను కాన్ఫిగర్ చేయండి
ఇప్పుడు, మేము మా అనంతం లోకి అడుగు అయితే లూప్. ఈ లూప్ లోపల మనం VRX, VRY మరియు SW విలువలను పర్యవేక్షించాలి మరియు విలువల ఆధారంగా మనం లెడ్ యొక్క అవుట్పుట్ను నియంత్రించాలి. ఈ క్రింది పంక్తులను ఉపయోగించి VRX మరియు VRY యొక్క అనలాగ్ వోల్టేజ్ చదవడం ద్వారా మేము పర్యవేక్షణ ప్రక్రియను ప్రారంభించవచ్చు
int joy_X = (ADC_Read (0%); // జాయ్ స్టిక్ యొక్క ఎక్స్-యాక్సిస్ చదవండి int joy_Y = (ADC_Read (1)); // జాయ్ స్టిక్ యొక్క వై-యాక్సిస్ చదవండి
ఈ పంక్తి వరుసగా VRX మరియు VRY విలువను వేరియబుల్ జాయ్_ఎక్స్ మరియు జాయ్_వైలో సేవ్ చేస్తుంది. ADC_Read (0) ఫంక్షన్ అంటే మనం ఛానల్ 0 నుండి ADC విలువను చదువుతున్నాము అంటే ఇది పిన్ A0. మేము A0 మరియు A1 ను పిన్ చేయడానికి VRX మరియు VRY ని కనెక్ట్ చేసాము మరియు మేము 0 మరియు 1 నుండి చదువుతాము.
మీరు మా ADC ట్యుటోరియల్ నుండి గుర్తుకు తెచ్చుకోగలిగితే, మేము అనలాగ్ వోల్టేజ్ PIC ను డిజిటల్ పరికరం అని చదివినట్లు 0 నుండి 1023 వరకు చదువుతుందని మాకు తెలుసు. ఈ విలువ జాయ్ స్టిక్ మాడ్యూల్ యొక్క స్థానం మీద ఆధారపడి ఉంటుంది. జాయ్ స్టిక్ యొక్క ప్రతి స్థానానికి మీరు ఏ విలువను ఆశించవచ్చో తెలుసుకోవడానికి మీరు పై లేబుల్ రేఖాచిత్రాన్ని ఉపయోగించవచ్చు.
ఇక్కడ నేను పరిమితి విలువ 200 ను తక్కువ పరిమితిగా మరియు 800 విలువను ఎగువ పరిమితిగా ఉపయోగించాను. మీకు కావలసినదాన్ని మీరు ఉపయోగించవచ్చు. కాబట్టి ఈ విలువలను ఉపయోగించుకుందాం మరియు తదనుగుణంగా LED లను మెరుస్తూ ప్రారంభిద్దాం. ఇది చేయుటకు మనం ఆనందం_ఎక్స్ విలువను ముందుగా నిర్వచించిన విలువలతో IF లూప్ ఉపయోగించి పోల్చాలి మరియు క్రింద చూపిన విధంగా LED పిన్నులను ఎక్కువ లేదా తక్కువగా చేయాలి. బాగా అర్థం చేసుకోవడానికి వ్యాఖ్య పంక్తులు మీకు సహాయపడతాయి
if (joy_X <200) // ఆనందం పైకి కదిలింది {RC0 = 0; RC1 = 1;} // లేకపోతే ఎగువ LED ని మెరుస్తే (joy_X> 800) // ఆనందం క్రిందికి కదిలితే {RC0 = 1; RC1 = 0;} // గ్లో దిగువ LED వేరే // తరలించకపోతే {RC0 = 0; RC1 = 0;} // దారితీసిన రెండింటినీ ఆపివేయండి
Y- అక్షం యొక్క విలువకు కూడా మేము అదే విధంగా చేయవచ్చు. మేము వేరియబుల్ జాయ్_ఎక్స్ ను జాయ్_వైతో భర్తీ చేయాలి మరియు క్రింద చూపిన విధంగా తదుపరి రెండు ఎల్ఈడి పిన్నులను కూడా నియంత్రించాలి. జాయ్ స్టిక్ తరలించబడనప్పుడు మేము రెండు LED లైట్లను ఆపివేస్తాము.
if (joy_Y <200) // ఆనందం ఎడమ వైపుకు కదిలింది {RC2 = 0; RC3 = 1;} // లేకపోతే ఎడమవైపు LED ని మెరుస్తే (ఆనందం_వై> 800) // ఆనందం కుడి వైపుకు కదిలితే {RC2 = 1; RC3 = 0;} // గ్లో కుడి LED వేరే // తరలించకపోతే {RC2 = 0; RC3 = 0;} // LED రెండింటినీ ఆపివేయండి
ఇప్పుడు మనకు ఇంకొక చివరి పని ఉంది, నొక్కినట్లయితే మేము స్విచ్ని తనిఖీ చేయాలి. స్విచ్ పిన్ RB0 కి అనుసంధానించబడి ఉంది, కాబట్టి మనం మళ్ళీ లూప్ అయితే ఉపయోగించుకోవచ్చు మరియు అది ఆన్లో ఉందో లేదో తనిఖీ చేయవచ్చు. అది నొక్కినట్లయితే, మేము స్విచ్ నొక్కినట్లు సూచించడానికి LED ని ఆన్ చేస్తాము.
if (RB0 == 1) // ఆనందం నొక్కితే RC4 = 1; // గ్లో మిడిల్ LED లేకపోతే RC4 = 0; // OFF మధ్య LED
అనుకరణ వీక్షణ:
ప్రోటీస్ సాఫ్ట్వేర్ను ఉపయోగించి పూర్తి ప్రాజెక్టును అనుకరించవచ్చు. మీరు ప్రోగ్రామ్ వ్రాసిన తర్వాత కోడ్ను కంపైల్ చేసి, అనుకరణ యొక్క హెక్స్ కోడ్ను సర్క్యూట్కు లింక్ చేయండి. అప్పుడు మీరు పొటెన్షియోమీటర్ల స్థానం ప్రకారం LED లైట్లు మెరుస్తున్నట్లు గమనించాలి. అనుకరణ క్రింద చూపబడింది:
హార్డ్వేర్ మరియు పని:
అనుకరణను ఉపయోగించి కోడ్ను ధృవీకరించిన తరువాత, మేము బ్రెడ్ బోర్డులో సర్క్యూట్ను నిర్మించవచ్చు. మీరు పిఐసి ట్యుటోరియల్లను అనుసరిస్తుంటే, పిఐసి మరియు 7805 సర్క్యూట్ను కలిగి ఉన్న అదే పెర్ఫ్ బోర్డ్ను మేము ఉపయోగిస్తున్నట్లు మీరు గమనించవచ్చు. మీరు ఒకదాన్ని తయారు చేయడానికి కూడా ఆసక్తి కలిగి ఉంటే, మీరు దానిని మీ అన్ని పిఐసి ప్రాజెక్ట్లతో ఉపయోగించుకుంటారు, అప్పుడు సర్క్యూట్ను పెర్ఫ్ బోర్డులో టంకం చేయండి. లేదా మీరు బ్రెడ్బోర్డ్లో కూడా పూర్తి సర్క్యూట్ను నిర్మించవచ్చు. హార్డ్వేర్ పూర్తయిన తర్వాత ఇది క్రింద ఉన్నదే అవుతుంది.
ఇప్పుడు PICKit3 ను ఉపయోగించి PIC మైక్రోకంట్రోలర్కు కోడ్ను అప్లోడ్ చేయండి. మార్గదర్శకత్వం కోసం మీరు LED బ్లింక్ ప్రాజెక్ట్ను చూడవచ్చు. ప్రోగ్రామ్ అప్లోడ్ అయిన వెంటనే పసుపు కాంతి ఎక్కువగా ఉండడాన్ని మీరు గమనించాలి. ఇప్పుడు జాయ్స్టిక్ను ఉపయోగించుకోండి మరియు నాబ్ను మార్చండి, జాయ్స్టిక్ యొక్క ప్రతి దిశకు మీరు సంబంధిత ఎల్ఈడీ ఎత్తుకు వెళ్లడాన్ని గమనించవచ్చు. మధ్యలో ఉన్న స్విచ్ నొక్కినప్పుడు, అది మధ్యలో LED ని ఆపివేస్తుంది.
ఈ పని ఒక ఉదాహరణ మాత్రమే, మీరు దాని పైన చాలా ఆసక్తికరమైన ప్రాజెక్టులను నిర్మించవచ్చు. ప్రాజెక్ట్ యొక్క పూర్తి పనిని ఈ పేజీ చివరిలో ఇచ్చిన వీడియోలో కూడా చూడవచ్చు.
మీరు ప్రాజెక్ట్ను అర్థం చేసుకున్నారని మరియు దానిని నిర్మించడంలో ఆనందించారని ఆశిస్తున్నాము, మీకు ఏమైనా సమస్య ఉంటే, దిగువ వ్యాఖ్య విభాగంలో పోస్ట్ చేయడానికి సంకోచించకండి లేదా సహాయం పొందడానికి ఫోరమ్లలో వ్రాయండి.