Szybki sposób na zrobienie sobie paneli dotykowych przy wykorzystaniu nadajnika i odbiornika IR.
I) Materiały
- Arduino – u mnie UNO ale może być dowolna płytka z tej rodziny
- Nadajnik IR – u mnie IR LiteOn (LTE-302)
- Odbiornik IR – u mnie IR LiteOn (LTR-301)
- Rezystory 10 kOhm, 270 Ohm i 300 Ohm
- Dioda czerwona (to tylko dla pokazania że czujnik działa więc jaka ona będzie nie ma znaczenia)
II) Schemat połączenia
- Niebieska dioda reprezentuje odbiornik. Rezystor przy niej to 10 kOhm.
- Żółta dioda reprezentuje nadajnik. Rezystor przy niej to 270 Ohm.
- Czerwona dioda jest dla przykładu, będzie włączana i wyłączana przy użyciu czujnika rezystor 300Ohm.
III) Kod
Tutaj kod wraz z opisem każdej linii:
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 |
#define in A2 // Ustawiam pin analogowy do czytania danych z odbiornika #define led A1 // Pin do zapalania diody, nie musi być analogowy int temp = 0; // Tymczasowa zmienna potrzebna do kalibracji int val = 0; // Wartość początkowa jaką czyta odbiornik - ustawiana podczas kalibracji boolean isOff = false; // zmienna przechowująca informacje czy dioda ma zostać włączona czy wyłączona void setup() { pinMode(in, INPUT); // Pin wejściowy ustawiamy jako INPUT pinMode(led, OUTPUT); // Pin led ustawiamy jako OUTPUT digitalWrite(led, LOW); // Już w setupie ustawiamy wartość logiczną pinu led na 0 aby dioda przy starcie była wyłączona Serial.begin(9600); // Uruchamiamy serial port (do działania programu nie jest on niezbędny ale jak będziemy chcieli sobie coś wypisać to będzie ;) ) for (int i = 0; i < 20; i++) { // Tutaj będziemy "kalibrować" czujnik. Na samym początku będzie on czytał już jakieś wartości. temp = temp + analogRead(in); // Dla tego też chcemy je poznać i uzyskać ich średnią. W tym wypadku robimy 20 pomiarów. delay(300); // Co 300 milisekund 1 pomiar. } val = temp / 20; // Do zmiennej odpowiedzialnej za przechowanie wartości początkowej przypisujemy średnią z 20 pomiarów. } void loop() { if (analogRead(in) < val - 10) { // Znając wartość początkową sprawdzamy czy odbierana obecnie jest od niej mniejsza o 10 jeśli tak to przechodzimy dalej if (isOff) { // Jeśli dioda jest wyłączona isOff = false; // to zmieniamy tę informację na to że jest włączona, digitalWrite(led, HIGH); // a następnie przestawiamy wartość logiczną pinu led na 1 i tym samym dioda zapala się } else { // Natomiast jeśli dioda nie byłą wyłączona isOff = true; // to zmieniamy tę informację na to że jest wyłączona, digitalWrite(led, LOW); // a następnie zmieniając wartość logiczną pinu led na 0 faktycznie ją wyłączamy } } delay(500); // Na koniec dodałem 0,5 sekundy przerwy aby czujnik nie czytał zbyt szybko. // Gdybym tego nie zrobił zanim zabrałbym palec dioda by się włączała i wyłączałą wielokrotnie. } |
IV) Jak to działa?
Na YouTube znajdziecie dokładny film z prezentacją działania tego czujnika:
https://www.youtube.com/watch?v=v1Ur-9XgaS8
W moim wypadku dla prezentacji umieściłem nadajnik i odbiornik w przeźroczystym plastikowym kubku. Są one skierowane ku górze. Kiedy dotykam powierzchni kubka światło IR odbija się od mojego palca i trafia do odbiornika. Arduino czyta tą wartość i dzięki odpowiedniemu programowi włącza lub wyłącza diodę.
V) No ok ale po co? skoro są inne sposoby na wykrycie dotyku.
Tak są. Ale ja potrzebowałem wykrywać dotyk na powierzchni która będzie czymś w rodzaju wyświetlacza. Dla tego nie mogę mieć na niej innych czujników dotyku, musi pozostać pusta. Dzięki temu, że przepuszcza światło mogę użyć takiego właśnie sposobu jak zaprezentowany wyżej.
Majsterkowo spada na psy. Kiedyś były projekty publikowane, które zajmowały tygodnie ciężkiej pracy, a teraz wystarczy w 5 minut wyjąć z szafki diodę IR i odbiornik i opisać 7 zdań. Nie ma opublikowanego kodu, nie ma opisu działania. Pytanie: Co jest? Są wymienione materiały, jest schemat.
Oczywiście jest błąd, bo w materiałach jest wymieniony dwa razy nadajnik IR, a nie ma odbiornika IR.
Dlatego zanim dany projekt trafi na Główną, musi zdobyć odpowiednią ilość dobrych ocen od innych użytkowników :) Póki co ten projekt wisi w Poczekalni, więc autor jeszcze ma szansę go poprawić i uzupełnić.
Najgorzej że na Główną trafiają coraz częściej bardzo słabe(z wieloma błędami) lub/i słabo opisane projekty, najczęściej aby zdobyć tylko rabat do sklepu. Pozdrawiam
Cały czas staram się poprawiać algorytmy sterujące Poczekalnią, ale ciężko jest znaleźć złoty środek. Na pewno im więcej będzie użytkowników oceniających projekty, tym łatwiej będzie ustawiać jakieś średnie wartości dla progów ocen.
Na razie jedynie dział Szybkie projekty ma nieco obniżony próg wyjścia w porównaniu do reszty działów. Tam z założenia trafiają proste i mniej ambitne projekty, więc można od nich mniej wymagać ;)
Może wystarczy przywrócić możliwość oceniania projektów przez niezalogowanych użytkowników ?
Tak było na “starym” majsterkowie i to działało.
A tak wielu osobom pewnie nie chce się oceniać projektu bo musieliby się zalogować lub wręcz założyć konto.
To było olbrzymie pole do nadużyć, które ludzie nagminnie wykorzystywali (szczególnie, gdy zaczęły się toczyć jakieś konkursy). Wystarczyło mieć zmienne IP i przeglądarkę w trybie Incognito, i każdy mógł sobie nabijać ocen do upadłego. I za bardzo nie było jak się przed tym zabezpieczyć :/
Odsetek zalogowanych userów cały czas wzrasta, więc coraz jest coraz więcej userów, którzy mogą głosować.
Prace nad skryptem sprawdzającym wartość merytoryczną trwają.
Jesteśmy dobrej myśli.
W Polsce rządzi cena :)) i gratis :))).
Nic nie poradzisz, tak się ukształtował rynek w demoludach.
Dziękuję za zwrócenie uwagi na błąd. Zaraz go poprawię. Jeśli chodzi o stopień skomplikowania projektu to jakie to ma znaczenie? Jeśli ktoś szuka akurat takiego rozwiązania w języku polskim to jest on tutaj przedstawione. Kodu jeszcze nie ma ale będzie. Opis działania jest. Jest też link do filmu przedstawiającego jak to działa. Nie każdy musi się znać na elektronice w takim stopniu by ta banalna rzecz była dla niego prosta. Często spotykam się z komentarzami znajomych, którzy proszą mnie abym zaczął wrzucać wyjaśnienia pewnych nawet drobnych rzeczy. I wydawało mi się, że ten portal będzie do tego idealny. Pytanie do admina czy mi się wydawało?
Teraz jest super! Piąteczka ode mnie!
Dzięki ;) przeniosłem też z Elektroniki do Szybkich projektów ;)
Strzał w dziesiątke ; proste a skuteczne.Oby takich więcej.Dziękuję.
Czy jest to odporne na pilota TV i słońce? ;)
Słońce raczej tak o ile nie wystawisz tego na zewnątrz latem. Na pilota może nie być jeśli będzie blisko i pod odpowiednimi kontami. Wszystko zależy gdzie by to postawić ;)
Konty, to masz w domu… najczęściej 4 ;-) A te mierzone w stopniach to są kąty ;-)
… ale projekt spoko :-)
Wg mnie na majsterkowo.pl powinny być wystawiane projekty autorskie typu: sam zaprojektowałem schemat, sam oprogramowałem mikrokontroler, sam wszystko zbudowałem, i nie używałem gotowych zestawów takich jak np.: Arduino czy Malina. Niech to jest zestaw zrobiony od podstaw, czyli projekt schematu, projekt PCB, montaż i programowanie. Wtedy dopiero można powiedzieć , że coś wykonałem samodzielnie. Z gotowych elementów , czy modułów “prawie każdy” nawet początkujący elektronik coś zbuduje, szczególnie w dobie internetu.
Przykład mojej wytrawiarki PCB: https://www.facebook.com/MasterAvr/videos/1926826214267068/
Moim zdaniem jest to też miejsce dla projektów z gotowych elementów. Nie elektronik nie znający angielskiego za wiele w polskiej części internetu nie znajdzie ;)
Arduino to nic innego, jak mikrokontroler ze stabiizatorem i kilkoma innymi drobnymi elementami, które po prostu ułatwiają rozpoczęcie przygody z mikrokontrolerami. Gdyby w sieci nie pojawiały się proste poradniki bazujące na Arduino, Malinie i innych, to elektronika cyfrowa nadal byłaby dziedziną dla małego grona pasjonatów. I to własnie Arduino sprowadziło mikrokontrolery pod strzechy, bo dzięki niskiemu progowi wejścia nawet 10-latek może się prosto zarazić pasją do elektroniki, programowania, itp.
Oczywiście! Powiem więcej – prawdziwy elektronik nie powinien posługiwać się gotowcami typu atmega czy arm, ale zrobić procesor z układów NAND. A taki bardziej prawdziwy to układy NAND powinien zrobić z tranzystorów.
Pokaż ten swój projekt na gołych tranzystorach…
Tak przy okazji: taki super najprawdziwszy elektronik to powinien sam umieć zrobić tranzystor. Wierzę, że umiesz…
No ale nie należy również przeginać w drugą stronę. Mikrokontrolery dają bardzo duże możliwości, trzeba je tylko dobrze wykorzystać.
Oczywiście nie znaczy to jednak, że należy używać je wszędzie i do wszystkiego bo nie ma to sensu.
A autor niestety tak właśnie zrobił.
Akurat kontroler nie ma w tym projekcie znaczenia. Ja zawsze używam arduino bo mam ich na stanie kilka i zamiast lutować coś od zera zwyczajnie szybciej jest podłączyć arduino. Po za tym jak mam kupić podzespoły, wytrawiać płytkę, lutować to wszystko to wolę kupić klona arduino pro mini za 10 zł i oszczędzić czas. Natomiast tak jak wspomniałem, kontroler nie ma tutaj znaczenia, można podpiąć cokolwiek co się ma pod ręką.
Ja powiedział bym tak:
Z gotowych elementów nawet nie-elektronik coś zbuduje, szczególnie w dobie internetu.
I tu z tobą się zgadzam.
Proszę sobie zajrzeć na moją stronę na fb: https://www.facebook.com/MasterAvr/ , każdy z projektów jest mój, począwszy od myśli w głowie do gotowego projektu.
Dla mnie, projekt bez sensu…
Jako sensorów dotyku możesz użyć nawet izolowanych przewodów.
Ustawiasz port jako wyjście i stan wysoki -> Ustawiasz ten sam port na wejście i gdy jego stan jest niski, oznacza że przyłożyłeś palec do kabelka. Prosty czujnik pojemnościowy, i to bez kosztów.
Pozatym Arduino…. ehhh :)
PS: Myślę że takie rzeczy jak Arduino, Maliny itp powinny mieć zupełnie osobny dział – Nie elektronika.
Tak. Tylko radzę najpierw doczytać post, a potem oceniać i komentować ;) Opisuję na końcu czemu tak, a nie inaczej… Docelowo czujnik będzie pod plexi. Potrzebuję przejrzystą powierzchnię bez kabli…
A jeśli chodzi o stosowanie arduino to naprawdę nie wiem co w tym złego… Tanie i działa… Jak chce Pan gdzieś jechać samochodem to sobie Pan go najpierw buduje? Z takim myśleniem to byśmy dalej w jaskiniach mieszkali…. Ale to moje zdanie.
Faktycznie nie do końca doczytałem – przepraszam.
Jeśli chodzi o podejście do Arduino… Jeżeli ktoś się kompletnie nie zna na elektronice to od biedy może być. Po co jednak wstawiać całe Arduino, i wykorzystywać go w 2%, skoro można użyć dużo mniejszego mikrokontrolera. Dodatkowo projekt będzie na pewno mniejszy, poręczniejszy i tańszy, a przede wszystkim przy takim projektowaniu można posiąść jakąś, choćby podstawową wiedzę, na temat elektroniki i programowania.
Widziałem już migającą diodę na Arduino Nano, a wszystko zalane termoglutem w pięknej obudowie ;) Część obecnego pokolenia „elektroników” bez Arduino nie zrobi już kompletnie nic, a to właśnie jest krok w tył. ;)
Moje zdanie jest takie.
PS: Co w przypadku gdy szybka Ci się zabrudzi?
Będzie trzeba ją co chwilę czyścić, aż do zmatowienia.