Č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:
Principinė schema
Surinkimo šablonas
Surinkta grandinė
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 skaitmeninio išvedimo nr. 13 * LED katodus (trumpom kojom), pritvirtintam prie žemės * Pastaba: kadangi daugumoje 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;
Nauja eilutė turi būti tokia:
int ledPin = 9;
pakeiskime ir loop() kodą:
void loop() { int value = analogRead(potPin) / 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ą.