INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Witam! Jest to mój pierwszy artykuł, proszę o wyrozumiałość jeśli coś będzie niejasne (śmiało piszcie w komentarzach!).
Słowem wstępu…
Zawsze chciałem wiedzieć czy w pokoju, w którym jestem, jest odpowiednie natężenie światła do czytania. Wiadomo – jak jest za ciemno, wzrok się męczy… Kiedy po raz pierwszy wpadło mi w ręce Arduino – od razu przypomniałem sobie o tym pomyśle. I tak, po przeniesieniu projektu do rzeczywistości, możecie teraz czytać ten artykuł…
Czego potrzebujemy ?
- płytka Arduino (jak używam Mega 2560)
- fotorezystor (ang. photocell)
- dwie diody LED (ja użyłem czerwonej i zielonej)
- przycisk (mikroswitch)
- buzzer (niekoniecznie – powiadomienia dźwiękowe)
- 3x rezystor 220 Ohm (bez buzzera wystarczą dwa)
- 2x rezystor 10 kOhm
- duża płytka stykowa
- kabelki podłączniowe
- dobre chęci :-)
Koszt tego wszystkiego (bez płytki Arduino) nie przekroczy (a przynajmniej nie powinien) 15 zł.
Montujemy !
1. Najpierw zajmiemy się przyciskiem, po kliknięciu na który, Arduino wykona test. A więc :
Od jednej nóżki guzika, przez rezystor 10 kOhm prowadzimy kabel do, jak ja to nazywam, “listwy minusów”, od drugiego wyprowadzenia do “listwy plusów”, a od trzeciej do jednego z załączy DIGITAL (ja wybrałem 52). Zamontowane :-)
2. Teraz buzzer :-) Część nieobowiązkowa :-) Zdjęcie :
Od minusa prowadzimy kabelek do “liswy minusów”, a od plusa przez rezystor 220 Ohmów do jednego z załączy cyfrowych (DIGITAL – u mnie pin 53).
3. Najważniejsza cześć – fotorezystor. Montujemy go jak na zdjęciu :
Od jednej nóżki do “listwy plusów”, od drugiej przez rezystor 10 kOhm do “listwy minusów” oraz do jednego z załączy analogowych (ANALOG IN – ja mam A0).
4. Myślę, że z diodami każdy sobie poradzi bez fotografii. Od anody (plusa – dłuża “noga” diody) przez rezystor 220 Ohm do jednego z załączy DIGITAL, od katody (minusa) do “listwy minusów”. Ja diodę czerwoną podłączyłem do pinu 41, a zieloną do 40.
5. Na koniec podłączamy “listwę minusów” do załącza GND, a “listwę plusów” do pinu “5 V”.
6. Powinniśmy mieć coś takiego :
Piszemy program
Bez zbędnych wstępów, w Arduino IDE piszemy następujący kod :
int pinFotorezystora = 0; int pinCzerwonaLED = 41; int pinZielonaLED = 40; int pinGlosniczek = 53; // nie będę implementował głośniczka, jak ktoś chce może zrobić to na własną rękę int pinGuziczek = 52; void setup() { pinMode(pinCzerwonaLED, OUTPUT); pinMode(pinZielonaLED, OUTPUT); } void loop() { if(digitalRead(pinGuziczek) == HIGH) // jeśli guziczek kliknięty { if(analogRead(pinFotorezystora) > 200 && analogRead(pinFotorezystora)) { digitalWrite(pinZielonaLED, HIGH); delay(1000) digitalWrite(pinZielonaLED, LOW); } else { digitalWrite(pinCzerwonaLED, HIGH); delay(1000) digitalWrite(pinCzerwonaLED, LOW); } delay(500); } }
Myślę, że nie trzeba go tłumaczyć, jakby ktoś miał jakieś uwagi i wątpliwości proszę pisać w komentarzach.
Słowo końcowe…
Miłego używania maszyny! Czytajcie tylko w dobrze oświetlonych pomieszczeniach!!!
INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Przydałby się jakiś schemat… Poza tym myślę, że dużo zależy od wartości fotorezystora. Jeśli zastosowałeś przykładowo 10k, a ktoś inny zastosuje np 100k to warunek
if(analogRead(pinFotorezystora) > 200…
raczej nie zapali zielonej diody. Druga sprawa to skąd taka wartość oświetlenia? Jeśli urządzenie jest skalowane “na oko” to można to robić zawsze na bieżąco i urządzenie jest zbędne.
Trzecia sprawa to co robi zapis
if(analogRead(pinFotorezystora) > 200 && analogRead(pinFotorezystora)) ?
Nie jestem mocny w programowaniu i nie rozumiem po co jest część po operatorze sumy (&&)? Skoro pierwszy warunek jest spełniony to drugi chyba nie jest potrzebny?
Arduino niepotrzebne.