User Tools

Site Tools


projektas_nr.5

Projektas Nr. 5. Spaudžiame mygtukus – Mygtukai

Ką darome Iki šio momento mes visiškai susitelkdavome į išvestis, laikas priversti „Arduino“ klausyti mūsų, žiūrėkite ir pajauskite. Pradėsime nuo paprasto mygtuko, kurio panaudojimas yra gana nesudėtingas. Jungiant mygtuką prie „Arduino“ reikės tik vieno papildomo komponeno - „pakeliamojo“ rezistoriaus (the pull up resistor), kuris gali atrodyti ne savo vietoje, tačiau yra kritiškai reikalingas. Jis pridedamas todėl, kad „Arduino“ „jaučia“ kitaip nei mes (pvz: mygtukas paspaustas, mygtukas nepaspaustas). „Arduino“ „jaučia“ kaiščio (pin), kurį mes naudojame kaip įvestį, įtampą ir nusprendžia ar ji aukšta(HIGH), ar žema(LOW). Mygtukas kontakto įtampą nustato kaip žemą (LOW) kada jis yra paspaustas, tačiau, kada mygtukas yra nepaspaustas, kaiščio(pin) įtampa „plūduriuos“ (sukeldama atsitiktinių problemų). Kad „Arduino“ patikimai nuskaitytų kaiščio(pin) įtampą kaip aukštą(HIGH) mygtukui esant nepaspaustam, mes pridedame pakeliamąjį rezistorių (the pull up resistor). (Pastaba: pirmajame pavyzdyje naudojamas tiktai vienas mygtukas iš dviejų)

Grandinės dalys

  • CIRC-07 maketo plokštės šablonas x1
  • Dviejų kontaktų kištukai x4
  • Mygtukai x2
  • Laidas x3
  • 10kΩ rezistorius (Rudas-juodas-oranžinis) x2
  • 560Ω rezistorius (Žalias-mėlynas-rudas) x1
  • Raudonas LED x1

Principinė schema

Surinkimo šablonas

Surinkta grandinė

Šaltiniai

Plokštės maketas Surinkimo video

Suprasti kodą nėra sudėtinga, galima būtų jį parašyti patiems, bet mes jį jau pateikėme jums žemiau. (jei norite paieškoti įvairių kūribingu grandinės pavyzdžių ar gerų įdėjų, eikite į arduino.cc internetinį puslapį)

Nuspaudus mygtukas, prijungtą prie 2 kaiščio (pin 2), išjungia šviesos diodą (LED), prijungtą prie 13 skaitmeninio kaiščio (pin 13), o mygtuką atleidus šviesos diodas vėl įsižiebs.

Grandinė:
LED prijungtas iš 13 kaiščio (pin 13) į neigiamą šaltinio polių (GND) per 560Ω rezistorių
Mygtukas – kurį spausime, prijungtas prie antrojo kaiščio (pin 2) iš (GND)
10K rezistorius pridėtas prie 2 kaiščio (pin 2) ir eina iš +5V

Pastaba: daugelyje „Arduino“ jau yra šviesos diodas (LED) pačioje plokštėje ir prijungtas prie 13 kaiščio (pin 13).

http://www.arduino.cc/en/Tutorial/Button

 //PRADEDAME KOPIJUOTI

// konstantos nekis, jos naudojamos pakeisti kaiščių „rodmenis“ :
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// kintamieji pasikeis:
int buttonState = 0;         // kintamasis mygtuko nuskaitymui ir būsenai.

void setup() {
  // Inicijuojame šviesos diodo(LED) kaištį(pin) kaip išeigą:
  pinMode(ledPin, OUTPUT);      
  // Inicijuojame mygtuko kaištį(pin) kaip įeigą:
  pinMode(buttonPin, INPUT);     
}

void loop(){
  // nuskaitome mygtuko būklę:
  buttonState = digitalRead(buttonPin);

  // patinkriname ar mygtukas yra paspaustas.
  // jeigu jis paspaustas, mygtuko būsena yra žema (LOW):
  if (buttonState == HIGH) {     
    // Įjungiame šviesos diodą(LED):    
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    // Kitais atvejais išjungiame šviesos diodą(LED):
    digitalWrite(ledPin, LOW); 
  }
} 

Neveikia? Du sprendimo būdai:

  • Šviesa neįsijungia - mygtukas yra keturkampis ir dėl šios priežasties yra lengva jį įstatyti ne ta puse. Perstatykite mygtuką 90 laipsnių kampu ir pažiūrėkite ar grandinė veikia.
  • Šviesa negęsta (nebluksta) - kvailoka klaida, kurią visi kartais padarome, kada pereinate nuo šviesos įjungimo iki jos blukimo, nepamirškite perdėti LED'o laidą iš 13 kaiščio (pin 13) į 9 kaištį(pin 9).

Kodėl gi nepadarius geresnės programos? Įjungimo mygtukas, išjungimo mygtukas: Sunkesnis, bet irgi įdomus pavyzdys, kai vienas mygtukas įjungs LED'ą, o kitas - išjungs. Pakeiskite kodą į:

int ledPin = 13; // pasirinkite kaištį (pin) ledui (LED)
int inputPin1 = 3; // mygtukas 1
int inputPin2 = 2; // mygtukas 2
  
void setup() { 
  pinMode(ledPin, OUTPUT); // declare LED as output 
  pinMode(inputPin1, INPUT); // make button 1 an input
  pinMode(inputPin2, INPUT); // make button 2 an input
} 
  
void loop(){ 
  if (digitalRead(inputPin1) == LOW) { 
  	digitalWrite(ledPin, LOW); // išjungiame ledą (LED) 
  } 
  else if (digitalRead(inputPin2) == LOW) { 
  	digitalWrite(ledPin, HIGH); // įjungiame ledą (LED) 
  } 
}
  

Įkelkite kodą į savo programos lauką ir pradėkite perjunginėti LED.

Blukimas stipryn ir silpnyn: Mygtukus galime panaudoti analoginio signalo valdymui. Tam reiks pakeisti LED'o laidą iš pin 13 į pin 9, taip pat pakeisti kodo eilutę:

 int ledPin = 13; 

Keisime šitaip:

 int ledPin = 9; 

Toliau keičiame - loop() procedūrą.

  
int value = 0; 
void loop(){ 
  if (digitalRead(inputPin1) == LOW) { value--; } 
  else if (digitalRead(inputPin2) == LOW) { value++; } 
  value = constrain(value, 0, 255); 
  analogWrite(ledPin, value); 
  delay(10); 
} 

Blukimo greičio keitimas: Jeigu norėtumėte pakeisti LED'o šviesos blukimo greitį iš didesnio į mažesnį arba atvirkščiai, yra viena eilutė kode, kurią keičiame:

   delay(10);

Įrašome savo norimą skaičių:

 delay(naujas #); 

Kad padarytumėte šviesos blukimą greitesniu, keiskite numerį į dar mažesnį, lėtumas reikalauja didesnio numerio.

Kitas projektas. Šviesa, fotorezistoriai.

Atgal į projektus

projektas_nr.5.txt · Keista: 2015/12/03 13:51 vartotojo valius.benas