ትምህርት 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() ተግባር አናሎግ ውፅዓቶችን በተጠቃሚ ምቹ የመቶኛ እሴቶች የመቆጣጠር ሂደትን እንዴት እንደሚያቃልል በግልጽ ያሳያል።
ከዚህ ቪዲዮ ጋር የተያያዙ ፕሮጀክቶች
- ትምህርት 14/31-1፡ አርዱኢኖ ሚሊስ (ያለ መዘግየት) እና map ተግባራት | SunFounder Robojax
- ትምህርት 14/31-2፡ አርዱኢኖ ኮዲንግ millis() ምሳሌ 2 ከክስተት ጋር
- ትምህርት 14/31-3፡ አርዱኢኖ ኮዲንግ millis() ምሳሌ 3 ከገፋ ቁልፍ ጋር
- ትምህርት 14/31-5፡ አርዱኢኖ ኮዲንግ map() ምሳሌ 2
ምዕራፎች
- [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() ተግባር የቀጥታ ማሳያ
/*
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() {
}
እንደሚያስፈልግዎት ይችላል
-
አማዞንSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
አማዞን
-
አማዞን
-
አማዞን
ምንጮች እና ምንጮች
-
ሰነዶችDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ውስጥPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
ፋይሎች📁
ተጠቃሚ መመሪያ
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB