Ardumotive Arduino Greek Playground
  • Home
    • About us
    • License
  • Arduino
    • Tutorials
    • Workshop
  • Raspberry Pi
  • DIY 3D Printer
  • News
    • Events >
      • Unboxing & Review
    • Blog
The 1st Arduino Playground in Greece - Open Source Hardware

Έλεγχος φωτεινότητας ενός LED

Available Languages
Picture
Picture

Εισαγωγή

Picture
Στον οδηγό αυτό θα μάθετε πως μπορείτε να ελέγξετε την φωτινότητα ενός led με με την χρήση της συνάρτησης/εντολής analogWrite(). H analogWrite στέλνει ένα σήμα-παλμό (PWM) στο pin 3 πετυχαίνοντας την γρήγορη εναλλαγή μεταξύ HIGH/LOW. Το led αναβοσβήνει πολύ γρήγορα δίνοντας μας έτσι την αίσθηση οτι "ξεθωριάζει" χάνοντας την φωτεινότητα του. 

Παλμοί PWM

Picture
Με τους  παλμούς PWM (Pulse Width Modulation) μπορούμε να στείλουμε ένα αναλογικό σήμα με την ψηφιακή του έννοια όμως.  Υπό την γενική έννοια, η μέση τιμή της τάσης (και του ρεύματος) που τροφοδοτείτε στο φορτίο ελέγχεται με το γύρισμα του διακόπτη on/off πολύ γρήγορα. Όσο πιο πολύ μένει ο διακόπτης στην λειτουργία on, τόσο μεγαλύτερη είναι και η τροφοδοσία στο φορτίο. Αντίθετα, όσο πιο πολύ μένει ο διακόπτης στην off λειτουργία, τόσο λιγότερο είναι η τροφοδοσία στο φορτίο. Για να καταλάβετε την λογική, απλά φανταστείτε έναν διακόπτη να ανοιγοκλείνει πολύ γρήγορα.

Picture
Ο ψηφιακός έλεγχος χρησιμοποιείτε για να δημιουργηθεί ένας τατραγωνικός παλμός, ένας διακόπτης δηλαδή μεταξύ on και off (HIGH/LOW). Στην 'on' λειτουργία του παλμού έχουμε σήμα 5V (δηλαδή HIGH) ενώ στην 'off' λειτουργία έχουμε σήμε 0V(δηλαδή LOW). Το χρονικό διάστημα που απαιτείται για να γίνει αυτή η εναλλαγή ονομάζεται πλάτος παλμού (pulse width). Οι τιμές που μπορούν να δοθούν είναι απο  0 έως 255. Έτσι, η χρήση της analogWrite(255) θα κρατήσει το led στο 100% της φωτεινότητας του (όπως θα έκανε και η digitalWrite(HIGH), ενώ η χρήση της analogWrite(0) θα κρατήσει το led σβηστό (όπως θα έκανε και η digitalWrite(LOW). Όμως η analogWrite(127) θα κράταγε το led αναμμένο στο μισό της φωτεινότητας του!

Το Arduino uno μπορεί να στείλει παλμούς PWM μόνο στους ακροδέκτες 3, 5, 6, 9, 10, και 11, όπως φαίνονται και στην παραπάνω εικόνα.

Τα υλικά που θα χρειαστούμε

Για το tutorial αυτό θα χρειαστούμε 
  • Arduino uno
  • Breadboard
  • LED
  • 220 Ohm resistor
Αν θέλετε για μεγαλύτερη ευκολία μπορείτε να χρησιμοποιήσετε το Breadboard Shield

Picture

Το κύκλωμα

Picture
Οι συνδέσεις είναι αρκετά εύκολες, δείτε την παραπάνω εικόνα με το σχηματικό του κυκλώματος σε breadboard.
Picture
Τα απλά led διαθέτουν δυο ακροδέκτες. Το θετικό άκρο, δηλαδή ο μεγαλύτερος ακροδέκτης ονομάζεται "άνοδος" (anode) ενώ το αρνητικό άκρο "κάθοδος" (cathode).
Το Arduino uno διαθέτει ένα ενσωματωμένο led, συνδεδεμένο με το pin 13, όμως σε αυτό το tutorial θα πρέπει να συνδέσετε ένα δικό σας στο pin 3.

Ο κώδικας

Ο κώδικας για το "Fade Led"  βρίσκεται παρακάτω.
Θυμηθείτε πως η ρουτίνα setup() τρέχει μόνο μια φορά κατά την τροφοδοσία/προγραμματισμό του Arduino uno ή όταν πατηθεί το κουμπί reset. Στο πρόγραμμα παρακάτω, το πρώτο πράγμα που κάνουμε μέσα στην setup() είναι να δηλώσουμε με την pinMode() οτι το pin3 είναι έξοδος.
Στην ρουτίνα loop(), ο κώδικας τρέχει ξανά και ξανά, για πάντα. H συνάρτηση analogWrite() χρειάζεται δύο ορίσματα για να λειτουργήσει. Το ένα λέει στην συνάρτηση σε ποιον ακροδέκτη να στείλει το σήμα-παλμό και το άλλο την τιμή PWM που θέλει να στείλει σε αυτόν.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
 Fade
 
 This example shows how to fade an LED on pin 3
 using the analogWrite() function.
 
 This example code is in the public domain.
 
 More info: http://www.ardumotive.com/how-to-fade-an-led-en.html
 */

int led = 3;           // the pin that the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup()  { 
  // declare pin 3 to be an output:
  pinMode(led, OUTPUT);
} 

// the loop routine runs over and over again forever:
void loop()  { 
  // set the brightness of pin 3:
  analogWrite(led, brightness);    

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade: 
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
  }     
  // wait for 30 milliseconds to see the dimming effect    
  delay(30);                            
}
Μπορείτε να κάνετε τις δικές σας παρεμβάσεις στον κώδικα, δοκιμάστε για παράδειγμα να αλλάξετε τον χρόνο στην delay().
Κατεβάστε τον κώδικα απ' εδώ και ανοίξτε το αρχείο με το Arduino IDE.
fade_an_led.zip
File Size: 0 kb
File Type: zip
Download File

Συγχαρητήρια!

Μόλις ολοκληρώσατε το δεύτερο "How to" tutorial και μάθατε πως να :
  • αλλάξετε την φωτεινότητα ενός led
  • χρησιμοποιείτε τους παλμούς PWM με την συνάρτηση analogWrite()
  • βάζετε μεταβλητές στον κώδικας σας
  • χρησιμοποιείτε την δομή ελέγχου if
Ελπίζω να σας άρεσε, αν θέλετε μπορείτε να αφήσετε το σχόλιο σας παρακάτω.
Picture

Search Engine

Picture

Licence 

Picture

Help us to grow up!

Picture


Donate us
About us
License
Cookies policy

Visit the biggest Arduino Shop in Greece!

Picture
find us on dwrean.net
find us on Codebender
find us on Instructables
Developed and designed by Vasilakis Michalis Copyright © 2013 Ardumotive All Rights Reserved
All trademarks referenced herein are properties of their
Powered by Create your own unique website with customizable templates.
Design by DivTag Templates