Bincika Lambar

Darasi 14/31-5: Misalin coding map() na Arduino 2

Darasi 14/31-5: Misalin coding map() na Arduino 2

Wannan koyawa tana nuna yadda ake amfani da aikin map() na Arduino don sarrafa hasken LED ta amfani da ƙimar kashi (0–100%) maimakon ƙimar 0–255 da analogWrite() ke buƙata. Wannan dabara ce ta asali wadda ke sauƙaƙa lambar ku kuma ta sa ta zama mai fahimta sosai, domin kuna iya tunani cikin kashi maimakon ƙimar byte na sabani.

Motar Sunfounder da aka haɗa

Wannan fasaha tana da muhimmanci ga kowane aiki inda kuke buƙatar daidaita ƙimar karatu daga na'urori ko sarrafa sigina. Misali, kuna iya amfani da ita don:

  • Sarrafa hasken LED ko gudun mota bisa ƙimar karatun potentiometer.
  • Canza fitar firikwensin zafin jiki (misali, 0–1023) zuwa ma'aunin Celsius ko Fahrenheit.
  • Daidaita shigar analog na joystick don sarrafa matsayin motar servo.
  • Ƙirƙirar mu'amalar mai amfani mai sauƙi inda ake amfani da ƙimar kashi don saita matakin ƙarfin na'ura.

A ƙarshen wannan darasi, za ku iya rubuta lamba mai tsabta, mai sauƙin kiyayewa wadda ke da sauƙin karantawa da daidaitawa.

Kayan aiki/Abubuwan haɗi

Wannan aikin yana amfani da ƙaramin adadin abubuwa, wanda ya sa ya dace da masu farawa. Kuna buƙatar:

  • Kwamfutar Arduino (misali, Uno).
  • LED.
  • Resistor na 220-ohm.
  • Wayoyin haɗi.
  • Breadboard (na zaɓi amma ana ba da shawarar).

Jagorar Haɗin Waya

Haɗin waya na wannan aikin yana da sauƙi sosai, kamar yadda aka nuna a bidiyon (a bidiyo a 20:47). An haɗa LED zuwa pin 3 na Arduino ta hanyar resistor na 220-ohm mai iyakance wutar lantarki.

Haɗa anode (ƙafar da ta fi tsayi) na LED zuwa pin 3 ta hanyar resistor. Haɗa cathode (ƙafar da ta fi guntu) na LED zuwa filin ƙasa (GND) akan Arduino.

Bayanin Lambar

Wannan misalin yana mai da hankali kan aikin da mai amfani ya ƙirƙira wanda ke sauƙaƙa sarrafa hasken LED. Lambar an gina ta ne a kusa da aikin al'ada da ake kira pwmValue(), wanda shine mabuɗin sa lambar ta zama mai fahimta.

Bari mu raba sassan lambar da za a iya daidaitawa:

int LEDpin = 3; //defind pin for LED

Wannan layin yana bayyana pin ɗin Arduino wanda aka haɗa LED ɗin. Kuna iya canza lambar 3 zuwa kowane pin mai iya PWM akan kwamfutar Arduino ɗinku.

Jigon aikin shine aikin al'ada pwmValue(). Wannan aikin yana ɗaukar ƙimar kashi a matsayin shigarwa kuma yana canza shi zuwa kewayon 0–255 da analogWrite() ke amfani da shi. Anan ne aikin map() ke yin sihirinsa.

int pwmValue(int percent)
{
  if(percent >=0 && percent <=100)
  {
    return map(percent, 0,100,  0,255);
  }else
  {
    return 0;
  }
}

Don amfani da wannan aikin, kawai kuna kiransa da ƙimar hasken da kuke so. Aikin zai dawo da ƙimar da ta dace don analogWrite(). Misali, pwmValue(60) zai dawo da 153, wanda yayi daidai da 60% na 255. Aikin kuma ya haɗa da duba tsaro don tabbatar da ƙimar kashi tsakanin 0 da 100, yana dawo da 0 idan ya wuce wannan kewayon.

A cikin aikin setup(), kuna iya ganin yadda ake amfani da wannan:

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

Anan, an saita maɓallin b zuwa ƙimar hasken da kuke so. Ana amfani da aikin pwmValue(b) don buga ƙimar da aka canza zuwa Serial Monitor da kuma saita hasken LED. Don canza hasken LED, kawai kuna buƙatar canza ƙimar b. Aikin map() yana sarrafa duk lissafin da ake buƙata a gare ku.

Aiki/Nunin Kai tsaye

A cikin bidiyon, mai gabatarwa yana nuna aikin ta hanyar canza ƙimar maɓallin b da loda lambar zuwa Arduino. Lokacin da aka saita b zuwa 60, lambar tana canza shi zuwa 153 kuma LED ɗin yana haskakawa a 60% na ƙarfinsa. Canza b zuwa 90 yana canza zuwa 229, yana sa LED ɗin ya fi haske sosai. Saita shi zuwa 100 yana canza zuwa 255, wanda shine matsakaicin haske. Nunin yana nuna a sarari yadda aikin map() ke ba ku damar sarrafa LED ta amfani da ƙimar kashi mai fahimta, yayin da Serial Monitor ke tabbatar da ainihin ƙimar 0–255 da ake aikawa zuwa pin (a bidiyo a 21:29).

Ayyukan da suka shafi wannan bidiyo

Babuka

  • [00:00] Gabatarwa ga ayyukan Millis da map
  • [01:19] Menene Millis kuma me yasa ake amfani da shi
  • [05:46] Amfani da Millis tare da taron don ɗaukar mataki
  • [08:35] Misalin Millis 2 tare da maɓallin turawa
  • [12:14] Misalin Millis 3 don duba latsawa biyu na maɓalli
  • [17:20] Gabatarwa ga aikin map()
  • [19:47] Misalin lamba don canza kashi zuwa hasken LED
  • [20:47] Nunin kai tsaye na aikin map()
  • [22:41] Ƙirƙirar aikin al'ada don sarrafa map

Hotuna

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
920-Lesson 14/31-5: Arduino coding map() example 2
Harshe: C++
/*
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
 

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Jagoran Mai Amfani