Raadi Koodka

Casharka 14/31-5: Tusaale 2 ee map() ee Arduino coding

Casharka 14/31-5: Tusaale 2 ee map() ee Arduino coding

Tuskaashani waxay muujinaysaa sida loo isticmaalo shaqada map() ee Arduino si loo xakameeyo iftiinka LED-ga iyadoo la isticmaalayo qiime boqolkiiba (0–100%) halkii laga isticmaali lahaa kala duwanaanshaha cayiman ee 0–255 ee loo baahan yahay analogWrite(). Tani waa farsamo aasaasi ah oo fududaysa koodhkaaga oo ka dhigaysa mid aad u fudud, maadaama aad ka fikiri karto boqolleyda halkii aad ka fikiri lahayd qiimayaasha byte-ga aan cayimanka lahayn.

Baabuurka Sunfounder oo la isku daray

Xirfaddan ayaa lagama maarmaan u ah mashruuc kasta oo aad u baahan tahay inaad miisaan akhrinta dareemayaasha ama calaamadaha xakamaynta. Tusaale ahaan, waxaad u isticmaali kartaa si aad:

  • U xakamayso iftiinka LED-ga ama xawaaraha matoorka iyadoo lagu salaynayo akhrinta potentiometer-ka.
  • U beddesho wax soo saarka dareemaha heerkulka (tusaale, 0–1023) una beddesho kala duwanaanshaha Celsius ama Fahrenheit.
  • U sawirto gelinta analog-ga ee joystick-ka si aad u xakamayso booska matoorka servo.
  • U abuurto interface isticmaale fudud halkaas oo qiime boqolkiiba loo isticmaalo in lagu dejiyo heerka awooda qalabka.

Markaad dhammaystirto casharkan, waxaad awoodi doontaa inaad qorto koodh nadiifsan oo si fudud loo ilaalin karo oo fudud in la akhriyo oo la hagaajiyo.

Qalabka/Qaybaha

Mashruucani wuxuu isticmaalaa qaybo yar oo kala duwan, taasoo ka dhigaysa mid ku habboon bilowga. Waxaad u baahan doontaa:

  • Guddi Arduino ah (tusaale, Uno).
  • LED.
  • Resistor 220-ohm ah.
  • Fiilooyin jumper ah.
  • Breadboard (ikhtiyaar ah laakiin lagu taliyay).

Hagaha Xiriirinta

Xiriirinta mashruucan aad bay u fudud tahay, sida lagu muujiyay fiidiyowga (fiidiyowga 20:47). LED-ga waxaa lagu xiraa pin-ka 3 ee Arduino iyadoo loo marayo resistor-ka xaddidaya hadda ee 220-ohm.

Ku xir anode-ka (lugta dheer) ee LED-ga pin-ka 3 iyadoo loo marayo resistor-ka. Ku xir cathode-ka (lugta gaaban) ee LED-ga pin-ka dhulka (GND) ee Arduino-ga.

Sharaxaadda Koodhka

Tusaalahani wuxuu diiradda saarayaa shaqo uu isticmaaluhu qeexay oo fududaysa xakamaynta iftiinka LED-ga. Koodhku wuxuu ku dhisan yahay shaqo gaar ah oo la yiraahdo pwmValue(), taas oo ah furaha ka dhigaya koodhka mid fudud.

Aynu kala qaadno qaybaha la hagaajin karo ee koodhka:

int LEDpin = 3; //defind pin for LED

Sadarkan waxay qeexaysaa pin-ka Arduino ee LED-ga ku xiran. Waxaad beddeli kartaa lambarka 3 pin kasta oo kale oo awood u leh PWM ee guddigaaga Arduino.

Xudunta mashruucu waa shaqada gaarka ah ee pwmValue(). Shaqadani waxay qaadataa qiime boqolkiiba ah sida gelin waxayna u beddeshaa kala duwanaanshaha 0–255 ee uu isticmaalo analogWrite(). Halkan waxaa ku shaqeeya shaqada map() si sixir ah.

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

Si aad u isticmaasho shaqadan, waxaad si fudud ugu wacdaa boqolleyda iftiinka aad rabto. Shaqadu waxay soo celin doontaa qiimaha saxda ah ee analogWrite(). Tusaale ahaan, pwmValue(60) waxay soo celin doontaa 153, taasoo u dhiganta 60% ee 255. Shaqadu waxay sidoo kale ku dartaa hubin ammaan ah si loo hubiyo in boqolleyda gelinta ay tahay inta u dhaxaysa 0 iyo 100, iyadoo soo celinaysa 0 haddii ay ka baxdo kala duwanaanshahan.

Shaqada setup(), waxaad arki kartaa sida tan loo isticmaalo:

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

Halkan, doorsoome b waxaa loo dejiyay boqolleyda iftiinka aad rabto. Shaqada pwmValue(b) ayaa markaa loo isticmaalaa in lagu daabaco qiimaha la sawiray ee Serial Monitor-ka iyo sidoo kale in lagu dejiyo iftiinka LED-ga. Si aad u beddesho iftiinka LED-ga, waxaad u baahan tahay oo kaliya inaad beddesho qiimaha b. Shaqada map() waxay kuu xisaabinaysaa dhammaan xisaabaha lagama maarmaanka ah.

Mashruuca Tooska ah/Muujinta

Fiidiyowga, soo bandhiguhu wuxuu muujinayaa mashruuca isagoo beddelaya qiimaha doorsoome b oo uu ku shubayo koodhka Arduino-ga. Marka b lagu dejiyo 60, koodhku wuxuu u sawiraa 153 oo LED-ga wuxuu iftiimayaa 60% iftiin. Beddelka b ilaa 90 wuxuu u sawiraa 229, taasoo ka dhigaysa LED-ga mid si cad u iftiimaya. Dejinta 100 waxay u sawirtaa 255, taasoo ah iftiinka ugu sarreeya. Muujintu waxay si cad u tusinaysaa sida shaqada map() ay kuu oggolaanayso inaad xakamayso LED-ga iyadoo la isticmaalayo qiime boqolkiiba oo fudud, halka Serial Monitor-ka uu xaqiijinayo qiimaha saxda ah ee 0–255 ee loo dirayo pin-ka (fiidiyowga 21:29).

Mashruucyada la xiriira fiidiyowgan

Cutubyada

  • [00:00] Hordhac ku saabsan Millis iyo shaqooyinka map
  • [01:19] Waa maxay Millis iyo sababta loo isticmaalo
  • [05:46] Isticmaalka Millis ee dhacdo si tallaabo loo qaado
  • [08:35] Millis tusaale 2 oo leh badhan riix
  • [12:14] Millis tusaale 3 oo hubinaya laba riix oo badhan
  • [17:20] Hordhac ku saabsan shaqada map()
  • [19:47] Tusaale koodh oo ku saabsan sawirista boqolleyda iftiinka LED-ga
  • [20:47] Muujin toos ah oo ku saabsan shaqada map()
  • [22:41] Abuurista shaqo gaar ah si loo maareeyo sawirista

Sawirro

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

Kheyraadka & Tixraacyada

Faylasha📁

Buugga Isticmaalaha