Arduino Tutorial Bundle.: Arduino experimenterande Kit:. (ARDX) (10 / 13 steg)
Steg 10:.: vrida:. (Potentiometrar) - CIRC08
Vad vi gör:
Tillsammans med digitala stiften Arduino har har också 6 pins som kan användas för analog ingång. Dessa ingångar ta en spänning (från 0 till 5 volt) och konvertera den till en digital tal mellan 0 (0 volt) och 1024 (5 volt) (10 bitar av resolution). En mycket användbar apparat som utnyttjar dessa ingångar är en potentiometer (kallas även ett variabelt motstånd). När den är ansluten med 5 volt över dess yttre stift mitten stiftet läser vissa värde mellan 0 och 5 volt beroende på vinkeln som visade det (dvs. 2,5 volt i mitten). Vi kan sedan använda returnerade värden som en variabel i vårt program.
(du kan också hämta bladet bakbord layout från botten av detta steg)
Delarna:
- CIRC-08 bakbord blad
- 2 stift huvud (x4)
- Potentiometer (10 k ohm) (x 1)
- 5mm grön LED (x1)
- 560 ohm Resistor (grön-blå-brun) (x1)
- Wire
Kretsen och ansluta allt:
En liten Video av allt att vara inkopplad
Koden: - Fil > Sketchbook > exempel > Analog > AnalogInput
/ * * AnalogInput * av DojoDave < http://www.0j0.org> ** slår på och av en ljusavgivande diode(LED) ansluten till digital * stift 13. Beroende av mängden tid LED kommer att vara till och från * värdet erhålls genom analogRead(). I det enklaste fallet vi ansluta * en potentiometer till analoga stift 2. ** http://www.arduino.cc/en/Tutorial/AnalogInput * / int potPin = 2; Välj input PIN-koden för potentiometerint ledPin = 13. Välj den PIN-kod för den LEDint val = 0; variabel för att lagra värdet kommer från sensorvoid setup() {pinMode (ledPin, produktionen); / / förklara ledPin som en utgång} void loop() {val = analogRead(potPin); / / läsa värdet från sensor digitalWrite (ledPin, hög); / / slå ledPin på delay(val); / / stoppa programmet för vissa tid digitalWrite (ledPin, låg); / / slå ledPin off delay(val); / / stoppa programmet en tid}
Inte fungerar?
- Sporadiskt arbetar -detta är troligen på grund av en något skumma anslutning med den potentiometern stift. Detta kan oftast erövras genom att tejpa potentiometern ner.
- The Control är bakåt - det finns två sätt att fixa detta, antingen växla röda och svarta kablarna anslutna till potentiometern, eller vända potentiometern. (ledsen ibland den fabriksfartyg oss en bakåt potentiometer)
- Fortfarande bakåt - du kan prova verksamma banan upp och ner. Ibland hjälper detta.
Att göra det bättre:
Tröskel växling:
Ibland kommer du att växla en utgång när ett värde överstiger ett visst tröskelvärde. Att göra detta med en potentiometer förändring loop() koden till.
void loop() {int tröskel = 512; if(analogRead(potPin) > tröskel) {digitalWrite (ledPin, hög);} annat {digitalWrite (ledPin, låg) ;}}
Detta kommer att orsaka LED att sätta på när värdet är över 512 (ungefär halvvägs), kan du justera känsligheten genom att ändra tröskelvärdet.
Blekning:
Kan styra ljusstyrkan av en LED direkt från potentiometern. För att göra detta måste vi ändra pin-första LED är ansluten till. Flyttar tråden från stift 13 till pin 9 och ändra en rad i koden.
int ledPin = 13. ---> int ledPin = 9;
Sedan ändra loop koden till.
void loop() {int värde = analogRead(potPin) / 4; analogWrite (ledPin, värde);}
Ladda upp koden och titta på när din LED bleknar i förhållande till din potentiometer spinning. (Obs: anledningen till att vi delar värdet med 4 är funktionen analogRead() returnerar ett värde från 0 till 1024 (10 bitar), och analogWrite() tar ett värde från 0 till 255 (8 bitar))
Styra en Servo:
Detta är ett riktigt snyggt exempel och ger ett par kretsar tillsammans. Tråd upp servo som du gjorde i CIRC-04 och sedan öppna exempelprogrammet knopp (Fil > Sketchbook > exempel > bibliotek-Servo > knopp ), sedan ändra en kodrad.
int potpin = 0; ---> int potpin = 2;
Ladda upp till din Arduino och sedan titta på som de servo axel vänder sig när du vrider potentiometern.