ኮድ ይፈልጉ

ትምህርት 14/31-4፡ አርዱኖ ኮዲንግ map() ምሳሌ 1

ትምህርት 14/31-4፡ አርዱኖ ኮዲንግ map() ምሳሌ 1

ይህ መማሪያ በአርዱኢኖ ፕሮግራሚንግ ላይ ከሚገኙ ተከታታይ ትምህርቶች አንዱ ሲሆን በmap() ተግባር ተግባራዊ አጠቃቀም ላይ ያተኩራል። በዚህ ትምህርት ውስጥ፣ የLED ብሩህነትን ለመቆጣጠር የመቶኛ እሴትን (0–100) ወደ PWM (Pulse Width Modulation) እሴት (0–255) እንዴት እንደሚቀይሩ ይማራሉ። 60% ከ153 ጋር እኩል ነው ብለው በእጅ ከማስላት ይልቅ፣ የmap() ተግባር መስመራዊ ልወጣውን ለእርስዎ ያከናውናል፣ ይህም ኮድዎን የበለጠ ንጹህ እና ለመረዳት ቀላል ያደርገዋል።

ይህ ዘዴ የሴንሰር ንባቦችን ወይም የተጠቃሚ ግብዓቶችን ወደ ተለያዩ ክልሎች መቀየር በሚያስፈልግባቸው በብዙ ተግባራዊ አፕሊኬሽኖች ውስጥ አስፈላጊ ነው። ለምሳሌ፣ እሱን በመጠቀም የሚከተሉትን ማድረግ ይችላሉ፡

  • በፖቴንሺዮሜትር ንባብ ላይ በመመስረት የዲሲ ሞተርን ፍጥነት መቆጣጠር።
  • የሙቀት ዳሳሽ ጥሬ እሴትን በ0-100% ሚዛን ላይ ማሳየት።
  • የጆይስቲክ መጋጠሚያዎችን ወደ ሰርቮ ሞተር ማዕዘኖች መቀየር።
  • በአካባቢ ብርሃን ዳሳሽ ላይ በመመስረት የLED ብሩህነትን ማስተካከል።
  • የ0-5V አናሎግ ንባብን ወደ 0-1023 ዲጂታል እሴት ወይም በተቃራኒው መቀየር።

ሃርድዌር/ክፍሎች

ከዚህ ፕሮጀክት ጋር ለመከታተል፣ የሚከተሉትን ክፍሎች ያስፈልግዎታል፡

  • የአርዱኢኖ ቦርድ (Uno፣ Nano፣ ወዘተ)
  • አንድ LED
  • 220-ohm ተቃዋሚ
  • መዝለያ ሽቦዎች
  • ብሬድቦርድ (አማራጭ፣ ግን ይመከራል)

የሽቦ አገናኝ መመሪያ

በቪዲዮው ውስጥ፣ አስተማሪው ፕሮጀክቱን ከቀዳሚው ትምህርት በLED መደበዝዝ ላይ የተጠቀመውን የሽቦ አደረጃጀት በመጠቀም ያሳያል። ዑደቱ ቀላል ነው፡ የLEDውን አኖድ (ረጅሙ እግር) ከ220-ohm ተቃዋሚ ጋር ያገናኙ፣ እና የዚያን ተቃዋሚ ሌላኛውን ጫፍ በአርዱኢኖ ላይ ካለው ዲጂታል ፒን 3 ጋር ያገናኙ። የLEDውን ካቶድ (አጭሩ እግር) በቀጥታ በአርዱኢኖ ላይ ካለው የመሬት (GND) ፒን ጋር ያገናኙ።

የኮድ ማብራሪያ

ለዚህ ምሳሌ ያለው ኮድ በጣም አጭር ነው፣ ዋናው አመክንዮ በsetup() ተግባር ውስጥ ይገኛል። በተጠቃሚ ሊዋቀሩ የሚችሉትን ክፍሎች እንመርምር።

int LEDpin = 3; //defind pin for LED

ይህ መስመር የLEDዎ የተገናኘበትን የአርዱኢኖ ፒን ይገልጻል። በዚህ ምሳሌ ውስጥ፣ ወደ ፒን 3 ተዋቅሯል፣ ይህም PWM አቅም ያለው ፒን ነው፣ ለአናሎግ ውፅዓት አስፈላጊ ነው። LEDዎን ከተለየ PWM ፒን ጋር ካገናኙ ይህንን ቁጥር መቀየር ይችላሉ።

int b=8;//60% brightness

ይህ የተለያዩ የብሩህነት ደረጃዎችን ለመሞከር የሚቀይሩት ቁልፍ ተለዋዋጭ ነው። የሚፈለገውን ብሩህነት እንደ መቶኛ ይወክላል። በኮዱ ውስጥ ያለው አስተያየት "60%" ይላል፣ ነገር ግን እሴቱ በቪዲዮው ውስጥ ለማሳያ ዓላማ 8 ተዋቅሯል። ይህንን በ0 እና 100 መካከል ወዳለ ማንኛውም ኢንቲጀር መቀየር ይችላሉ። ለምሳሌ፣ b = 60 ማዋቀር የ60% ብሩህነት ደረጃን ይወክላል።

int brightness = map(b, 0, 100, 0,255);

ይህ የትምህርቱ እምብርት ነው። የmap() ተግባር የመቶኛ እሴትዎን (b) ወስዶ ከመጀመሪያው ክልል (0 እስከ 100) ወደ አዲስ ዒላማ ክልል (0 እስከ 255) ይቀይረዋል። ውጤቱ በbrightness ተለዋዋጭ ውስጥ ይከማቻል፣ ከዚያም ወደ LED ፒን አናሎግ እሴት ለመጻፍ ይጠቅማል።

analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness

በመጨረሻም፣ ይህ መስመር የተቀየረውን እሴት ወደ LED ፒን analogWrite() በመጠቀም ይልካል። ይህ የLEDውን የስራ ዑደት ያዘጋጃል፣ ውጤታማ በሆነ መንገድ ብሩህነቱን ይቆጣጠራል። የዚህ አካሄድ ውበት LEDውን ለመቆጣጠር b ተለዋዋጭን ብቻ መቀየር ስለሚያስፈልግዎት ነው፣ እና የmap() ተግባር ሁሉንም አስፈላጊ ስሌቶች ያከናውናል።

የቀጥታ ፕሮጀክት/ማሳያ

በቪዲዮው ውስጥ፣ አስተማሪው ኮዱን ይሰቅላል እና የb ተለዋዋጭን የመቀየርን ውጤት ያሳያል። b ወደ 8 ሲዋቀር፣ ተከታታይ መቆጣጠሪያው የተቀየረውን እሴት 20 ያትማል፣ እና LEDው በግልጽ ደብዛዛ ነው። bን ወደ 90 መቀየር ወደ 229 የተቀየረ እሴት ያስከትላል፣ ይህም LEDውን በጣም ደማቅ ያደርገዋል። bን ወደ 100 ማዋቀር ወደ 255 ይቀየራል፣ ይህም ሙሉ ብሩህነት ነው። ይህ ተግባራዊ ማሳያ የmap() ተግባር አናሎግ ውፅዓቶችን በተጠቃሚ ምቹ የመቶኛ እሴቶች የመቆጣጠር ሂደትን እንዴት እንደሚያቃልል በግልጽ ያሳያል።

ከዚህ ቪዲዮ ጋር የተያያዙ ፕሮጀክቶች

ምዕራፎች

  • [00:00] የአርዱኢኖ ኮርስ መግቢያ በRobojax
  • [01:19] millis() ምንድን ነው እና ለምን ጥቅም ላይ ይውላል
  • [05:46] ምሳሌ 1፡ millis()ን ለተወሰነ ጊዜ ክስተት መጠቀም
  • [08:29] ምሳሌ 2፡ millis()ን ከገፋ ቁልፍ ጋር መጠቀም
  • [12:14] ምሳሌ 3፡ ከመዘግየት በኋላ ሁለተኛ የቁልፍ ጭን መለየት
  • [17:20] የmap() ተግባር መግቢያ
  • [19:47] ለmap() ምሳሌ የኮድ ጉዞ
  • [20:41] የmap() ተግባር የቀጥታ ማሳያ

ምስሎች

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
ቋንቋ: C++
/*
Lesson 14/31: Arduino coding map( ) example-1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
int LEDpin = 3; //defind pin for LED
                   
 
 void setup() {
    Serial.begin(9600);//initialize serial monitor with 9600 baud
    pinMode(LEDpin, OUTPUT);//set pin as output
    int b=8;//60% brightness
    int brightness = map(b, 0, 100, 0,255);
    Serial.println(brightness);//print it on serial monitor
    analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness   
 }

 void loop() {

 
 }
 

እንደሚያስፈልግዎት ይችላል

ምንጮች እና ምንጮች

ፋይሎች📁

ተጠቃሚ መመሪያ