Beginner Arduino (7 / 15 stap)

Stap 7: Vervagen LEDs met AnalogWrite

Soms willen we controle van de helderheid van een LED, in dat geval kunnen we het gebruiken van een commando genaamd analogWrite(). analogWrite werkt door het draaien van een LED aan en uit zeer snel, zo snel dat onze ogen niet de flikkering doen waarnemen. Als een LED besteedt de helft van de tijd af en de helft van de tijd op, wordt dan deze half zo helder weergegeven. Deze techniek heet puls breedte modulatie (PWM), het over en in de elektronica wordt gebruikt omdat het ons toelaat te bepalen van een component in een "analoge" manier met behulp van een digital pin. Niet alle digitale pinnen op de Arduino PWM, kunnen doen als je goed op je Arduino kijkt, ziet u dat sommige van de pennen hebben een "~" ernaast (pin 3, 5, 6, 9, 10, 11), dit zijn de pinnen van de PWM ingeschakeld.

Draad één van uw LED's een PWM ingeschakeld pin, gebruikte ik pin 9. Probeer de blink-schets van tevoren, maar analogWrite in plaats van de digitalWrite gebruiken om te schakelen de LED (Zie schets hieronder). analogWrite() heeft twee argumenten: het pin-nummer en het niveau van helderheid (tussen 0 en 255).

 //LED Blink (half brightness) int ledPin = 9;//the Arduino pin that is connected to the LED void setup() { pinMode(ledPin, OUTPUT);// initialize the pin as an output } void loop() { analogWrite(ledPin, 255);//turn LED on at full brightness (255/255 = 1) delay(1000);// wait for 1000 milliseconds (one second) digitalWrite(ledPin, LOW);//turn LED off delay(1000);//wait one second analogWrite(ledPin, 191);//turn LED on at 3/4 brightness (191/255 ~= 0.75) delay(1000);// wait for 1000 milliseconds (one second) digitalWrite(ledPin, LOW);//turn LED off delay(1000);//wait one second analogWrite(ledPin, 127);//turn LED on at half brightness (127/255 ~= 0.5) delay(1000);// wait for 1000 milliseconds (one second) digitalWrite(ledPin, LOW);//turn LED off delay(1000);//wait one second analogWrite(ledPin, 63);//turn LED on at one quarter brightness (63/255 ~= 0.25) delay(1000);// wait for 1000 milliseconds (one second) digitalWrite(ledPin, LOW);//turn LED off delay(1000);//wait one second } 

Probeer te veranderen de helderheid in de opdrachten van de analogWrite zien hoe beïnvloedt het de helderheid van uw LED.

We vervolgens schrijven de code zodat de helderheid soepel uit helemaal af op volledige helderheid opritten. We kunnen het zelfde stuk van code kopiëren:

analogWrite (ledPin, helderheid);
vertraging (5); //short vertraging

helderheid = helderheid + 1;

Over en voorbij (255 keer), helderheid verhogen door een telkens. Hier is wat dat zou eruit:

 //LED Blink (half brightness) int ledPin = 9;//the Arduino pin that is connected to the LED void setup() { pinMode(ledPin, OUTPUT);// initialize the pin as an output } void loop() { int brightness = 0; analogWrite(ledPin, brightness);//brightness = 0 delay(5);// short delay brightness += 1; analogWrite(ledPin, brightness);//brightness = 1 delay(5);// short delay brightness += 1; analogWrite(ledPin, brightness);//brightness = 2 delay(5);// short delay brightness += 1; analogWrite(ledPin, brightness);//brightness = 3 delay(5);// short delay brightness += 1; analogWrite(ledPin, brightness);//brightness = 4 delay(5);// short delay brightness += 1; analogWrite(ledPin, brightness);//brightness = 5 delay(5);// short delay brightness += 1; analogWrite(ledPin, brightness);//brightness = 6 delay(5);// short delay brightness += 1; //keep repeating until brightness = 255 (full brightness) } 

Of we kunnen gebruiken een for-lus om de code veel beknopter. In het volgende schema heb ik twee lussen, de eerste hellingen de LED op off (0) op volledige brightness(255):

voor (int helderheid = 0; helderheid < 256; helderheid ++) {}

analogWrite(ledPin,brightness);
Delay(5);

}

De tweede lus hellingen naar beneden uit volledige helderheid uitgeschakeld:

voor (int helderheid = 255; helderheid > = 0; helderheid--) {}

analogWrite(ledPin,brightness);
Delay(5);

}

(de delay(5) wordt gebruikt voor het vertragen van de fade, dus duurt het 5 * 256 = 1280ms = 1.28seconds)

In de eerste regel, gebruiken we "helderheid--" te geven de for-lus verkleint u de waarde voor helderheid met 1 telkens wanneer de lus herhaalt. Merk ook op hoe de lus wordt uitgevoerd totdat helderheid > = 0, met behulp van > = in plaats van > we het cijfer 0 in het bereik opnemen.

 //LED fade int ledPin = 9;//the Arduino pin that is connected to the LED void setup() { pinMode(ledPin, OUTPUT);// initialize the pin as an output } void loop() { //ramp LED up to full brightness (0 to 255) for (int brightness=0;brightness<256;brightness++){ analogWrite(ledPin,brightness); delay(5); } delay(1000);// wait one second //ramp LED down to no brightness (255 to 0) for (int brightness=255;brightness>=0;brightness--){ analogWrite(ledPin,brightness); delay(5); } delay(1000);//wait one second } 

En hier is wat het zou moeten uitzien (deze simulatie is niet zo goed, maar je krijgt het idee). Probeer het bewerken van de vertragingen om te zien hoe het beïnvloedt de snelheid van de hellingshoek.

Gerelateerde Artikelen

Verkeerslichten [Beginner Arduino Project]

Verkeerslichten [Beginner Arduino Project]

dit is een beginners-project voor de Arduino. Ik ben met behulp van de Arduino Uno, maar zou moeten werken met weinig of geen wijzigingen op andere modellen van de arduino.Instellen van de hardware is zeer eenvoudig. Dit project is meer een trainings
Beginner Arduino - met behulp van een 1.8-Inch-TFT-Display

Beginner Arduino - met behulp van een 1.8-Inch-TFT-Display

Dit is uw inleidende gids voor het gebruik van een 1.8 in Duimtft vertoning met een Arduino. Ik houd van de 1.8 op display voor zijn kleine grootte en lage kosten. Ik heb de mijne voor ongeveer $10 op ebay, hier. Het komt niet met instructies maar me
Blinky Blockhead (beginner Arduino project)

Blinky Blockhead (beginner Arduino project)

Dit is enkel een pret weinig toevoeging aan uw bureau.Dank aan mijn zus voor het maken van de papieren kubus en de haren!Stap 1: Verzamel uw leveringen.Stap 2: Teken een rechthoek die is 2 1/2 X 10 "Stap 3: Tekent u lijnen die 2 1/2 uit elkaar.Stap 4
Lcd met gids van de Beginner Arduino interface

Lcd met gids van de Beginner Arduino interface

Deel te worden opgestart1. JHD162A LCD2. Arduino board3. potentiometer4. jumper dradenWat is LCD?LCD (vloeibare kristalvertoning) is de technologie die wordt gebruikt voor displays in notitieboekje en andere kleinere computers. Net als light - emitti
Een Beginner Arduino Project: Tri-Colour door een Bi-Colour LED

Een Beginner Arduino Project: Tri-Colour door een Bi-Colour LED

Hi en welkom op mijn 7e instructable. Ditmaal ben ik spelen met mijn nieuwe TRduino duemilanove. Eigenlijk het is een kloon van Arduino gemaakt door Thinnkware en hebben de 328 ATMega.Arduino is een zeer goede programmeur en het is ook open bron (het
Arduino Beginner en elementaire elektronica Kit Primer

Arduino Beginner en elementaire elektronica Kit Primer

ik leerde dat een van mijn nichtjes had een belang in de programmering.  Ze werkte met robotica op middelbare school en heeft een zomer stage waar ze Arduinos hadden.  Ik denk dat ze was in staat om te lenen van een Arduino om te experimenteren met t
Hoe maak je een LED 7-segment display met Arduino

Hoe maak je een LED 7-segment display met Arduino

Ik ga u tonen hoe te maken van een 7 segment display met LED's. Combineren met Arduino aftelproceduretijdopnemers, eenvoudige tekst, en meer te maken. Ik willen maken van de oorspronkelijke projecten. Ik zocht de hele instructables en als dit niet vi
Android praat met Arduino

Android praat met Arduino

dit project iets wijzigt de Google Android monster app genaamd "Bluetooth Chat" zodat u kunt een bericht typen in de Android app en die dezelfde boodschap op een LCD-scherm die is gekoppeld aan een Arduino Uno verschijnt.Functionaliteit: Android
Arduino - Theremin met 7 Segment LED-Display

Arduino - Theremin met 7 Segment LED-Display

In dit instructable, ik zal u tonen hoe maak je een eenvoudige speelgoed die combinatie van de LED flitser en de Theremin. We gonna met behulp van enkele elementaire elektronica gebouwd op de top van een Arduino. Het basisidee van de 7 Segment LED-Di
Gemakkelijk bouwen self balancing elektrische skateboard

Gemakkelijk bouwen self balancing elektrische skateboard

Wat is het?Dubbele wielen skateboard dat als een Segway werkt. Elektrische skateboards bestaan al met aangedreven achterwielen. Plan hier was om iets te bouwen als een Segway, maar in de vorm van een skateboard. Het weet welke kant is "up" via e
Arduibag: een aangesloten rugzak voor fiets renners

Arduibag: een aangesloten rugzak voor fiets renners

Arduibag is een aangesloten rugzak voor fiets renners. Het is ook een open source project gemaakt door twee gepassioneerde Franse jongens: Michaël D'AURIA en Stéphane DE GRAEVE.Als u weten meer over Arduibag ga dan wilt naar: http://www.arduibag.comH
Plot klok voor dummies.

Plot klok voor dummies.

Herzieningen:1. de DS1307 real-time klok module instructies toegevoegd.Dit is niet mijn idee, maar ik zal proberen aan te tonen hoe ik dit eindelijk werkt.De briljante jongens die maken deze spul, vergeet vaak dat er zijn idioten (zoals ik) rond, die
Low-Power pomp voor Gravity watertank

Low-Power pomp voor Gravity watertank

het ideeDit project startte als een test om te zien de minste energie nodig om water van de pomp in een gravity tank hoog van de grond. We wilden vinden de meest efficiënte pomp mogelijke, misschien slechts een paar watt. Het interessante deel leek d
Gekwetter Laser Tripwire met Webcam Capture

Gekwetter Laser Tripwire met Webcam Capture

Dit instructable zal u tonen hoe te bouwen van een laser tripwire dat kan twitter en pak een afbeelding van een webcam, evenals elk commando kun je in een bash-script.Dit instructable is eigenlijk vrij eenvoudig en is ook geschikt als een beginner ar