Stap 10:.: draaien:. (Potentiometers) - CIRC08
Wat We doen:
Samen met de digitale pennen die de Arduino heeft heeft ook 6 pinnen die kunnen worden gebruikt voor analoge ingang. Deze ingangen nemen een spanning (van 0 tot 5 volt) en converteren naar een digitale getal tussen 0 (0 volt) en 1024 (5 volt) (10 bits van resolutie). Een handig apparaat die misbruik maakt van deze ingangen is een potentiometer (ook wel een variabele weerstand). Wanneer deze is aangesloten met 5 volt over de buitenste pinnen de middelste pin verschijnt een waarde tussen 0 en 5 volt afhankelijk van de hoek waarmee deze is ingeschakeld (dwz. 2,5 volt in het midden). We kunnen dan de geretourneerde waarden als een variabele gebruiken in ons programma.
(u kunt ook de fiche breadboard lay-out van de onderkant van deze stap)
De delen:
- CIRC-08 Breadboard blad
- 2 pin Header (x4)
- Potentiometer (10 k ohm) (x 1)
- 5mm groene LED (x1)
- 560 ohm weerstand (groen-blauw-bruin) (x1)
- Draad
Het Circuit en alles inpluggen In:
Een kleine Video van alles wordt aangesloten
De Code: - bestand > Sketchbook > voorbeelden > Analoog > AnalogInput
/* * AnalogInput * by DojoDave <http://www.0j0.org> * * Turns on and off a light emitting diode(LED) connected to digital * pin 13. The amount of time the LED will be on and off depends on * the value obtained by analogRead(). In the easiest case we connect * a potentiometer to analog pin 2. * * http://www.arduino.cc/en/Tutorial/AnalogInput */int potPin = 2; // select the input pin for the potentiometerint ledPin = 13; // select the pin for the LEDint val = 0; // variable to store the value coming from the sensorvoid setup() { pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT}void loop() { val = analogRead(potPin); // read the value from the sensor digitalWrite(ledPin, HIGH); // turn the ledPin on delay(val); // stop the program for some time digitalWrite(ledPin, LOW); // turn the ledPin off delay(val); // stop the program for some time}
Niet werkt?
- Sporadisch werken -dit is waarschijnlijk te wijten aan een beetje dodgy verbinding met de potentiometer (potmeter) pinnen. Dit kan meestal worden veroverd door taping van de potmeter naar beneden.
- The Control is achterwaarts - er zijn twee manieren om dit te bevestigen, schakelt over de rode en zwarte draden aangesloten op de potmeter, of draai de potentiometer rond. (sorry soms de fabrieksschepen ons een achteruit potentiometer)
- Nog achteruit - u kunt proberen het circuit ondersteboven opereren. Dit helpt soms.
Waardoor het beter:
Drempel schakelen:
Soms wil je om over te schakelen van een uitgang wanneer een waarde een bepaalde drempel overschrijdt. Om dit te doen met een potentiometer (potmeter) verandering de loop code.
void loop() { int threshold = 512; if(analogRead(potPin) > threshold){ digitalWrite(ledPin, HIGH);} else{ digitalWrite(ledPin, LOW);}}
Hierdoor zal de LED inschakelen wanneer de waarde groter dan 512 (ongeveer halverwege is), kunt u de gevoeligheid aanpassen door het wijzigen van de drempelwaarde.
Fading:
Laat de controle van de helderheid van een LED rechtstreeks vanuit de potmeter. Om dit te doen moeten we eerst de pincode veranderen de LED is aangesloten op. De draad van pin 13 naar pin 9 en één regel in de code wijzigen.
int ledPin = 13; ----> int ledPin = 9;
Wijzig de code van de lus aan.
void loop() { int value = analogRead(potPin) / 4; analogWrite(ledPin, value); }
Uploaden van de code en het horloge als uw LED ten opzichte van de potmeter spinnen verdwijnt. (Nota: de reden dat we de waarde delen door 4 is de analogRead() functie geeft als resultaat een waarde van 0 tot 1024 (10 bits), en analogWrite() neemt een waarde tussen 0 en 255 (8 bits))
Het controleren van een Servo:
Dit is een echt gaaf voorbeeld en brengt een paar circuits samen. Kabellengte tot de servo zoals je deed in CIRC-04, dan opent het voorbeeldprogramma knop (bestand > Sketchbook > voorbeelden > Bibliotheek-Servo > knop ), Wijzig één coderegel.
int potpin = 0; ----> int potpin = 2;
Uploaden naar je Arduino en dan kijken als de servo-as draait als je de potentiometer draaien.