ትምህርት 14/31-5፡ አርዱኖ ኮዲንግ map() ምሳሌ 2
ይህ መማሪያ የ Arduino map() ተግባርን በመጠቀም የ LED ብሩህነትን በመቶኛ እሴት (0–100%) እንዴት መቆጣጠር እንደሚቻል ያሳያል፣ ይህም በanalogWrite() የሚፈለገውን ጥሬ 0–255 ክልል ሳይጠቀሙ ነው። ይህ ኮድዎን የሚያቃልል እና የበለጠ ሊታወቅ የሚችል የሚያደርግ መሰረታዊ ቴክኒክ ነው፣ ምክንያቱም በዘፈቀደ ባይት እሴቶች ሳይሆን በመቶኛ አስተሳሰብ መስራት ይችላሉ።
ይህ ክህሎት የሴንሰር ንባቦችን ወይም የቁጥጥር ምልክቶችን መጠን መቀየር ለሚፈልጉ ለማንኛውም ፕሮጀክት አስፈላጊ ነው። ለምሳሌ፣ እሱን ለሚከተሉት መጠቀም ይችላሉ፡
- የ LED ብሩህነትን ወይም የሞተርን ፍጥነት በፖቴንሺዮሜትር ንባብ ላይ በመመስረት መቆጣጠር።
- የሙቀት ሴንሰር ውጤትን (ለምሳሌ፣ 0–1023) ወደ ሴልሺየስ ወይም ፋራናይት ክልል መቀየር።
- የጆይስቲክ አናሎግ ግብዓትን የሰርቮ ሞተርን አቀማመጥ ለመቆጣጠር ካርታ ማድረግ።
- የመሳሪያውን የኃይል ደረጃ ለማዘጋጀት የመቶኛ እሴት የሚጠቀም ቀላል የተጠቃሚ በይነገጽ መፍጠር።
በዚህ ትምህርት መጨረሻ፣ ለማንበብ እና ለማስተካከል ቀላል የሆነ ንጹህ እና ቀላል ጥገና የሚቻል ኮድ መጻፍ ይችላሉ።
ሃርድዌር/ክፍሎች
ይህ ፕሮጀክት አነስተኛ የክፍሎች ስብስብ ይጠቀማል፣ ይህም ለጀማሪዎች ፍጹም ያደርገዋል። የሚከተሉትን ያስፈልግዎታል፡
- የ Arduino ቦርድ (ለምሳሌ፣ Uno)።
- አንድ LED።
- 220-ohm ተቃዋሚ።
- ጃምፐር ሽቦዎች።
- ብሬድቦርድ (አማራጭ ነገር ግን ይመከራል)።
የሽቦ አገናኝ መመሪያ
የዚህ ፕሮጀክት ሽቦ አገናኝ በጣም ቀላል ነው፣ በቪዲዮው ላይ እንደሚታየው (በቪዲዮ 20:47)። LED በ220-ohm የአሁኑን ገዳቢ ተቃዋሚ በኩል ከ Arduino ፒን 3 ጋር ተገናኝቷል።
የ LED አኖድ (ረዥሙ እግር) በተቃዋሚው በኩል ከፒን 3 ጋር ያገናኙ። የ LED ካቶድ (አጭሩ እግር) በ Arduino ላይ ከመሬት (GND) ፒን ጋር ያገናኙ።
የኮድ ማብራሪያ
ይህ ምሳሌ የ LED ብሩህነትን መቆጣጠርን የሚያቃልል በተጠቃሚ የተገለጸ ተግባር ላይ ያተኩራል። ኮዱ የተገነባው pwmValue() በሚባል ብጁ ተግባር ዙሪያ ነው፣ ይህም ኮዱን ሊታወቅ የሚችል የሚያደርገው ቁልፍ ነው።
የኮዱን ሊዋቀሩ የሚችሉ ክፍሎች እንከፋፍል፡
int LEDpin = 3; //ለ LED ፒን ይገልጻል
ይህ መስመር LED የተገናኘበትን የ Arduino ፒን ይገልጻል። ቁጥሩን 3 በ Arduino ቦርድዎ ላይ ወዳለ ሌላ የ PWM አቅም ያለው ፒን መቀየር ይችላሉ።
የፕሮጀክቱ ዋና ክፍል ብጁ ተግባር pwmValue() ነው። ይህ ተግባር የመቶኛ እሴትን እንደ ግብዓት ይወስዳል እና በanalogWrite() ወደሚጠቀመው 0–255 ክልል ይቀይረዋል። የmap() ተግባር አስማቱን የሚሰራው እዚህ ነው።
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
}
ይህን ተግባር ለመጠቀም፣ በቀላሉ በሚፈለገው የብሩህነት መቶኛ ይደውሉት። ተግባሩ ለanalogWrite() ትክክለኛውን እሴት ይመልሳል። ለምሳሌ፣ pwmValue(60) 153 ይመልሳል፣ ይህም ከ255 60% ጋር ይዛመዳል። ተግባሩ የግብዓት መቶኛ በ0 እና 100 መካከል መሆኑን የሚያረጋግጥ የደህንነት ቼክም ያካትታል፣ ከዚህ ክልል ውጭ ከሆነ 0 ይመልሳል።
በsetup() ተግባር ውስጥ፣ ይህ እንዴት ጥቅም ላይ እንደሚውል ማየት ይችላሉ፡
int b=5;//60% ብሩህነት
Serial.println( pwmValue(b) );//በሴሪያል ሞኒተር ላይ ያትሙት
analogWrite(LEDpin, pwmValue(b));// LED ን በ60% ብሩህነት ያብሩ
እዚህ፣ ተለዋዋጭ b ወደሚፈለገው የብሩህነት መቶኛ ተዘጋጅቷል። ተግባሩ pwmValue(b) የተቀረጸውን እሴት በሴሪያል ሞኒተር ላይ ለማተም እና የ LED ብሩህነትን ለማዘጋጀት ይጠቅማል። የ LED ብሩህነትን ለመቀየር፣ የb እሴትን ብቻ መቀየር ያስፈልግዎታል። የmap() ተግባር ሁሉንም አስፈላጊ ስሌቶች ለእርስዎ ይሰራል።
የቀጥታ ፕሮጀክት/ማሳያ
በቪዲዮው ውስጥ፣ አቅራቢው የb ተለዋዋጭ እሴትን በመቀየር እና ኮዱን ወደ Arduino በመጫን ፕሮጀክቱን ያሳያል። b ወደ 60 ሲዋቀር፣ ኮዱ ወደ 153 ይቀርጸዋል እና LED በ60% ብሩህነት ያበራል። bን ወደ 90 መቀየር ወደ 229 ይቀርጻል፣ ይህም LED ን በግልጽ የበለጠ ብሩህ ያደርገዋል። ወደ 100 ማዋቀር ወደ 255 ይቀርጻል፣ ይህም ከፍተኛው ብሩህነት ነው። ማሳያው የmap() ተግባር ሊታወቅ የሚችል የመቶኛ እሴት በመጠቀም LED ን እንዲቆጣጠሩ እንዴት እንደሚፈቅድ በግልጽ ያሳያል፣ ሴሪያል ሞኒተር ደግሞ ወደ ፒን የሚላከውን ትክክለኛ 0–255 እሴት ያረጋግጣል (በቪዲዮ 21:29)።
ከዚህ ቪዲዮ ጋር የተያያዙ ፕሮጀክቶች
- ትምህርት 14/31-1፡ Arduino Millis (ያለ መዘግየት) እና map ተግባራት | SunFounder Robojax
- ትምህርት 14/31-2፡ Arduino coding millis() ምሳሌ 2 ከክስተት ጋር
- ትምህርት 14/31-3፡ Arduino coding millis() ምሳሌ 3 ከገፋፊ ቁልፍ ጋር
- ትምህርት 14/31-4፡ Arduino coding map() ምሳሌ 1
ምዕራፎች
- [00:00] ወደ Millis እና map ተግባራት መግቢያ
- [01:19] Millis ምንድን ነው እና ለምን መጠቀም አለብን
- [05:46] እርምጃ ለመውሰድ Millis ን ከክስተት ጋር መጠቀም
- [08:35] Millis ምሳሌ 2 ከገፋፊ ቁልፍ ጋር
- [12:14] Millis ምሳሌ 3 ሁለት የቁልፍ ጭመቆችን መፈተሽ
- [17:20] ወደ map() ተግባር መግቢያ
- [19:47] መቶኛን ወደ LED ብሩህነት ለመቀረጽ የኮድ ምሳሌ
- [20:47] የ map() ተግባር የቀጥታ ማሳያ
- [22:41] ካርታ ማድረግን የሚያስተናግድ ብጁ ተግባር መፍጠር
/*
Lesson 14/31-5: Arduino coding map( ) example-2
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);//initialzie serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=5;//60% brightness
Serial.println( pwmValue(b) );//print it on serial monitor
analogWrite(LEDpin, pwmValue(b));// turn the LED on with 60% brightness
}
void loop() {
}
/*
* pwmValue(int percent)
* @param precent is value between 0 to 100
* @return it returns the mapped value from 0 to 255
* written by Ahmad Shamshiri on Dec 9, 2022
*
*/
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
} //pwmValue end
እንደሚያስፈልግዎት ይችላል
-
አማዞንSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.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