User Tools

Site Tools


projektas_nr.2

Projektas Nr. 2. Sukiojame. Potenciometrai

Ką darome

Kartu su skaitmeniniais kontaktais, „Arduino“ taip pat turi 6 kontaktus, kurie gali būti panaudoti analoginei įvesčiai. Šios įvestys paima įtampą (nuo 0 iki 5 voltų) ir konvertuoja ja į skaitmeninį numerį nuo 0 (0 voltų) iki 1023 (5 voltų) (10 bitų gebos). Labai naudingas prietaisas, skirtas išnaudoti šias įvestis, yra potenciometras (dar vadinamas kintamo dydžio rezistoriumi). Kai jis prijungiamas prie 5 voltų per išorinius kontaktus, vidurinysis kontaktas nuskaito vertę nuo 0 iki 5 voltų, priklausomai nuo kampo, kuriuo jis yra pasuktas (pavyzdžiui, 2,5 voltų viduryje). Mes taipogi galime naudoti grąžinamąsias vertes kaip kintamąjį mūsų programoje.

Grandinės dalys:

  • CIRC-01 Grandinės šablonas x1
  • 2 kontaktų kištukas x4
  • Potenciometras 10 kΩ x1
  • Laidai x3
  • Green LED x1
  • 560 Ω rezistorius(žalias-mėlynas-rudas) x1

Principinė schema

Surinkimo šablonas

Surinkta grandinė

Šaltiniai

Surinkimo šablonas, Surinkimo filmukas

Kodas (File > Examples > Analog > AnalogInput) (Pavyzdys iš arduino.cc, ten rasite ir kitų šaunių idėjų).

/*
 Analoginė įvestis. 
 Analoginio jutiklio verės nuskaitymo pavyzdys, kur potenciometro vertę nuskaitome naudodami analoginį pin A0
 ir įjungiame bei išjungiame šviesos diodą (LED), prijungtą prie skaitmeninės išvesties pin 13. 
 Kiek laiko LED bus įjungtas ir išjungtas priklauso nuo potenciometro
 vertės, gautos naudojant funkciją analogRead()

 
 Potenciometras pridedamas prie analoginio įėjimo A0 taip
  * Vidurinė potenciometro kojelė sujungiama su analoginiu pin A0 
  * Viena iš kraštinių kojelių sujungiama su GND (0V) (GND - angl. ground - žemė, įžeminimas) 
  * Kita kraštinė kojelė sujungiama su 5V
  * LED anodą (ilgom kojom), pritvirtinam prie skaitmeninio išvedimo nr. 13 
  * LED katodą (trumpom kojom), pritvirtinam prie GND

  * Pastaba: kadangi daugumoje „Arduino“ prie pin 13 jau yra prijungtas LED pačioje „Arduino“ plokštėje, 
    papildomai jungti LED nėra būtina.

 
 
 http://arduino.cc/en/Tutorial/AnalogInput
 
 */

int sensorPin = 0;    //  pasirinkite įvesties pin potenciometrą
int ledPin = 13;      // pasirinkite pin  LED’ui
int sensorValue = 0;  //  kintamasis saugoti vertės ateina iš daviklio

void setup() {
  // parenkame led piną:
  pinMode(ledPin, OUTPUT);  
}

void loop() {
  // skaitykite vertę nuo jutiklio:
  sensorValue = analogRead(sensorPin);    
  // įjunkite ledPin  
  digitalWrite(ledPin, HIGH);  
  // sustabdykite programa kelioms milisekundėmis:
  delay(sensorValue);          
  // išjunkite ledPin :        
  digitalWrite(ledPin, LOW);   
  // sustabdykite programą kelioms milisikundėmis:
  delay(sensorValue);                  
}

Neveikia? (2 dalykai bandymui)

Įsitikinkite, kad potenciometro „slankiojantis“ kontaktas prijungtas prie „Arduino“ analoginio (ne skaitmeninio) kontakto nr.2 (A0-A5 jungtys po maitinimo jungtimis).

Vis dar neveikia? Pabandykite grandinę paleisti atvirkščiai. Kartais tas padeda.

Norite geriau?

Slenksčio jungimas: Kartais prireiks įjungti išėjimo signalą, kai vertė viršys tam tikrą slenkstį. Naudojant potenciometrą tą atliksite, tik reikės pakeisti loop() kodą:

  
void loop() { 
  int threshold = 512; 
  if(analogRead(sensorPin) > threshold){ digitalWrite(ledPin, HIGH);} 
  else{ digitalWrite(ledPin, LOW);} 
} 
  

Su šia komanda LED'as įsijungs, kai analoginiame kontakte bus vertė, didesnė už 512 (maždaug pusė potenciometro signalo). Šį jautrumą taip pat galima reguliuoti keičiant slenksčio (Threshold) vertę.

Gesimas: Galime LED'o šviesumą reguliuoti tiesiogiai nuo potenciometro. Tam reikia pakeisti LED'o prijungimo vietą - perjunkime iš kontakto 13 į kontaktą 9. Pakeiskime kodo eilutę:

  int ledPin = 13; 

Nauja eilutė turi būti tokia:

int ledPin = 9; 

pakeiskime ir loop() kodą:

void loop() { 
  int value = analogRead(sensorPin) / 4; 
  analogWrite(ledPin, value); 
} 

Atsiųskite kodą į plokštę ir stebėkite, kaip kinta LED šviesumas sukiojant potenciometrą. Svarbu: vertė dalijama iš 4 dėl to, kad analogRead() funkcija grąžina vertę nuo 0 iki 1024 (10 bitų), o analogWrite() nuskaito reikšmę nuo 0 iki 255 (8 bitai) )

Servo mechanizmo valdymas: Puikus pavyzdys, sujungiantis kelias grandines kartu. Prilituokite servo motorą (mokymo medžiaga šiame projekte). Atsidarykime pavyzdinę programą reguliatoriui (Knob) (File > Examples > Library-Servo > Knob). Pakeiskime kodo eilutę:

   int potpin = 0;

Keisime į šią eilutę:

int potpin = 2; 

Atsisiųskite į „Arduino“ plokštę ir stebėkite, kaip sukasi servas sukiojant potenciometrą.

Kitas projektas. Spalvotos šviesos gavimas naudojant RGB šviesos diodą.

Atgal į projektus

projektas_nr.2.txt · Keista: 2015/12/06 22:57 vartotojo 78.158.19.184