Pokazywanie postów oznaczonych etykietą zaciemnianie. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą zaciemnianie. Pokaż wszystkie posty

czwartek, 18 sierpnia 2011

Czujnik światła z diodą LED - kalibracja czujnika


Na stronach ARDUINO.CC znalazłem prosty kod, w którym można przeprowadzić kalibrację czujnika światła. jest to całkiem fajna opcja gdyż przy testowaniu czujnika nie zawsze mamy dostateczną ilość światła... i wtedy nie widać dobrze zmian w oświetleniu LED. A jak się czujnik przystosuje do ilości światła w pomieszczeniu to i efekt jest bardziej widoczny... Kod przerobiłem... odwróciłem jego funkcję... kod ma za zadanie rozpalanie diody LED wtedy gdy robi się ciemno. Może to być ciekawa funkcja dla przyszłego robota... Kiedy ten zapędzi się w ciemne kąty to automatycznie włączy sobie oświetlenie, będzie łatwiej go znaleźć. Ciekawostką jest kalibracja czujnika światła, która została zamieszczona w void setup()

int wartoscczujnika = 0;
int czujnikmax = 1023;
int czujnikmin = 0;

void setup() {
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);
    while (millis() < 5000) {
    wartoscczujnika = analogRead(A0);
   if (wartoscczujnika > czujnikmin) {
      czujnikmin = wartoscczujnika;}
   if (wartoscczujnika < czujnikmax) {
      czujnikmax = wartoscczujnika;}
  }

  digitalWrite(13, LOW);}

void loop() {
  wartoscczujnika = analogRead(A0);
  wartoscczujnika = map(wartoscczujnika, czujnikmin, czujnikmax, 0, 255);
  wartoscczujnika = constrain(wartoscczujnika, 0, 255);
  analogWrite(9, wartoscczujnika);}


Więcej ciekawych przykładów zastosowanie czujnika światła można znaleźć pd tym LINKIEM.

Poniższy kod nie kalibruje czujnika światła... testy należy przeprowadzać przy słonecznym dniu ;) ale za to dane z czujnika są wyświetlane w serial monitor


int czujnik = 0;
int odczytczujnika;
int jasnoscLED;
void setup(void) {
   Serial.begin(9600);}

void loop(void) {
  odczytczujnika = analogRead(czujnik); 

  Serial.print("Odczyt analogowy = ");
  Serial.println(odczytczujnika);
   odczytczujnika = 1023 - odczytczujnika;
   jasnoscLED = map(odczytczujnika, 0, 1023, 0, 255);
   analogWrite(9, jasnoscLED);
   delay(100);}

Poniżej kolejny kod do odczytu samego czujnika :) Podobnie jak z czujnikiem odległości wyświetlamy tym razem różne komentarze w serial monitor.

int czujnik = 0;
int odczytczujnika;

void setup(void) {
  Serial.begin(9600);}

void loop(void) {
  odczytczujnika = analogRead(czujnik); 

  Serial.print("Analog reading = ");
  Serial.print(odczytczujnika);

  if (odczytczujnika < 10) {
    Serial.println(" - Ciemno");
  } else if (odczytczujnika < 200) {
    Serial.println(" - Raczej ciemno");
  } else if (odczytczujnika < 500) {
    Serial.println(" - Prawie jasno");
  } else if (odczytczujnika < 800) {
    Serial.println(" - Dosc jasno");
  } else {
    Serial.println(" - Bardzo jasno");
  }
  delay(1000);}

piątek, 8 lipca 2011

LED - ZACIEMNIANIE

Kontynuujemy zabazę z LEDem podpiętym do PINu 11. Jest to wyjście cyfrowe, które umożliwi sterowanie zarówno włączeniem LEDu jak i jego jasnością.

int jasnosc = 0;
 int zaciemnienie = 1;

void setup()  {
   pinMode(11, OUTPUT);
 }

void loop()  {
   analogWrite(11, jasnosc);   
   jasnosc = jasnosc + zaciemnienie;
  if (jasnosc == 0 || jasnosc == 255) {
     zaciemnienie = -zaciemnienie ;
  }
   delay(30);                           
 }

int - definiujemy zmienne: jasność początkowa LEDu = 0 oraz miana z jaką chcemy zmieniać jasność w tym przypadku 5, możemy ją zmieniać dowolnie... Ściemnienie i rozjaśnianie będzie szybsze lub wolniejsze. Wartość maksymalna 255.
if - funkcja jeżeli... (jasność =0 lub 255) to zmień wartość zmiany na (+) lub (-) czyli będziemy raz obserwować wzrost wartości od 0 do 255 a jak osiągniemy tą wartość to zmieni się znak przy formule i zacznie odejmować.

Proste, nie?