Čia yra sena dokumento versija!
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:
Grandinės schema:
Surinkimo šablonas, Surinkimo filmukas
Kodas File > Examples > 3.Analog > AnalogInput (Pavyzdys iš arduino.cc, ten rasite ir kitų šaunių idėjų)
/* Analoginė įvestis Parodo analoginį įėjimą skaitant analoginį daviklį iš analoginio pin 0 ir įjungiant ir išjungiant šviesą spinduliuojantį šviesos diodą (LED), prijungtą prie skaitmeninės pin 13. Kiek laiko LED bus įjungtas ir išjungtas priklauso nuo jo vertės, gautos iš analogRead () Potenciometras pridedamas prie analoginio įėjimo 0 * Ašis į analoginį pin potenciometrą * Viena pusė pin (arba vienas) su korpusu * Kitos pusės pin 5 V * LED anodus (ilgom kojom), pritvirtinam prie skaitmeninės produkcijos 13 * LED katodus (trumpom kojom), pritvirtintam prie žemės * Pastaba: kadangi dauguma Arduinų yra įterpti LED pridėtam pin 13 ant lentos, LED neprivaloma. 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() { // parankame ledipin’ui galia: 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(potPin) > threshold){ digitalWrite(ledPin, HIGH);} else{ digitalWrite(ledPin, LOW);} }
Su šia komanda LEDas į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 LEDo šviesumą reguliuoti tiesiogiai nuo potenciometro. Tam reikia pakeisti LEDo prijungimo vietą - perjunkime iš kontakto 13 į kontaktą 9. Pakeiskime kodo eilutę:
int ledPin = 13;
į
int ledPin = 9;
pakeiskime ir loop() kodą:
void loop() { int value = analogRead(potPin) / 4; analogWrite(ledPin, value); }
Upload the code and watch as your LED fades in relation to your potentiometer spinning. (Note: the reason we divide the value by 4 is the analogRead() function returns a value from 0 to 1024 (10 bits), and analogWrite() takes a value from 0 to 255 (8 bits) )
Controlling a Servo: This is a really neat example and brings a couple of circuits together. Wire up the servo like you did in CIRC-04, then open the example program Knob (File > Examples > Library-Servo > Knob ), then change one line of code.
int potpin = 0; ----> int potpin = 2;
Upload to your Arduino and then watch as the servo shaft turns as you turn the potentiometer.
Kitas projektas. Spalvotos šviesos gavimas naudojant RGB šviesos diodą.