Arduino Tutorial Bundle.: Arduino experimenterande Kit:. (ARDX) (11 / 13 steg)
Steg 11:.: ljus:. (Foto motstånd) - CIRC09
Vad vi gör:
Samtidigt att få input från en potentiometer kan vara användbara för mänskliga kontrollerade experiment, vad använder vi när vi vill ha ett miljömässigt kontrollerade experiment? Vi använder exakt samma principer men istället för en potentiometer (twist baserat motstånd) använder vi ett foto motstånd (ljus baserat motstånd). Arduinoen kan inte direkt känna motstånd (den känner spänning) så vi satt upp en spänningsavdelare ( http://tinyurl.com/2sunta ). Exakta spänningen på fjärranalys PIN-koden är calculable, men för våra ändamål (bara sensing relativa ljus) kan vi experimentera med värden och se vad som fungerar för oss. Ett lågt värde uppstår när sensorn är väl upplyst medan ett högt värde kommer att inträffa när det är i mörkret.
(du kan också hämta bladet bakbord layout från botten av detta steg)
Delarna:
- CIRC-09 bakbord blad
- 2 stift huvud (x4)
- Foto-Resistor (x1)
- 5mm grön LED (x1)
- 10 k ohm Resistor (brun-svart-orange) (x1)
- 560 ohm Resistor (grön-blå-brun) (x1)
- Wire
Kretsen och ansluta allt:
En liten Video av allt att vara inkopplad
The Code: - http://tinyurl.com/crdum6''
/ * * Ett enkelt program som kommer att förändra den * intensiteten i en LED baserat på mängden * ljus händelsen på foto motståndet. * * ///PhotoResistor Pinint lightPin = 0; analoga PIN-koden //photoresistor är //connected till //the fotomotstånd inte är //calibrated till alla enheter så //this är helt enkelt ett raw sensor värde (relativa ljus) //LED Pinint ledPin = 9; //the pin LED är ansluten till //we styr ljusstyrkan så att //we använda en av PWM (pulse //width modulering stift) void setup() {pinMode (ledPin, produktionen); //sets led pin till / / utgång} / * * loop() - denna funktion kommer att starta efter installationen * finish och sedan upprepa * / void loop() {int lightLevel = analogRead(lightPin); / / Läs den / / lightlevel lightLevel = karta (lightLevel, 900-0, 0, 255); Justera värdet 0 till 900 till lightLevel = begränsa (lightLevel, 0, 255); Kontrollera att värdet är betwween 0 och 255 analogWrite (ledPin, lightLevel); Skriv värdet}
Inte fungerar?
- LED är resterande mörk - detta är ett misstag som vi fortsätter att göra tid och tid igen, om bara de kunde göra en LED som fungerade båda hållen. Dra upp och ge den en twist.
- Det är inte reagera på förändringar i ljuset. -Med tanke på att avståndet mellan trådarna på foto-motståndet inte är standad, är det lätt att tappar bort den. Dubbelkolla dess på rätt plats
- Fortfarande inte helt arbetar? -Du kan vara i ett rum som är för ljusa eller mörka. Prova att stänga ljuset eller av för att se om detta hjälper. Eller om du har en ficklampa nära genom att ge det ett försök.
Att göra det bättre:
Omvänd svaret:
Kanske vill du ha det motsatta Svaren. Inte oroa dig vi kan enkelt ångra detta svar bara.
analogWrite (ledPin, lightLevel); ---> analogWrite (ledPin, 255 - lightLevel);
Ladda upp och titta på svaret ändra.
Nattlampa:
Snarare än att styra ljusstyrkan LED svar på ljus, kan i stället slå på eller av baserat på ett tröskelvärde. Ändra loop() koden med.
void loop() {int tröskel = 300; if(analogRead(lightPin) > tröskel) {digitalWrite (ledPin, hög);} annat {digitalWrite (ledPin, låg);}}
Light kontrollerade servo:
Kan använda vårt nyfunna ljus sensing färdigheter att styra en servo (och samtidigt delta i en liten bit av Arduino koden hacka). Binder upp en servo ansluten till pin 9 (som i CIRC-04). Öppna sedan programmet knopp exempel (samma som vi använde i CIRC-08) Fil > Sketchbook > exempel > bibliotek-Servo > knopp. Ladda upp koden till din styrelse och titta på när det fungerar oförändrad.
Med hela skalan av din servo:
Du kommer att märka att servo endast kommer att fungera över en begränsad del av sitt sortiment. Detta beror på att med spänning dividera krets vi använder spänningen på analoga pin 0 inte kommer varierar från 0 till 5 volt utan istället mellan två mindre värden (dessa värden kommer att ändras baserat på din setup). Att fixa denna lek med val = karta (val, 0, 1023, 0, 179); linje. För tips på vad man ska Besök http://arduino.cc/en/Reference/Map .