Witam! :)
Jest to mój pierwszy projekt na tej stronie. Na początku chciałbym zaznaczyć, że moja umiejętność pisana artykułów nie jest wspaniała. Postanowiłem stworzyć “kostkę do gry”. Diody zapalają się poprzez wykorzystanie pseudolosowania. Układ opiera się na Arduino UNO. Każdorazowy “rzut kostką” zastąpiony został przez czujnik odległości, który wyzwala losowanie(zbliżamy rękę na odległość mniejszą niż 15 centymetrów, bo tyle ustawiłem a następnie zabieramy, następuje losowane i zapala się losowa ilość diod).Poprzez zmianę w kodzie możemy regulować zasięg działania czujnika(czujnik działa od 2 centymetrów do 2 metrów).
Potrzebne elementy:
-arduino(wybór wersji pozostawiam majsterkowiczowi, ja korzystałem z arduino UNO)
-6 oporników(wartości oporników dobieramy pod własne diody)
-6 diod(kolor i rozmiar dowolny)
-przewody połączeniowe
-płytka stykowa
-czujnik odległości hc-sr04
Przedmioty te można zakupić na botland.com.pl:
http://botland.com.pl/plytki-stykowe/55-plytka-stykowa-a-830-otworow.html
http://botland.com.pl/led-5mm-dyfuzyjne/218-dioda-led-5mm-zielona.html
http://botland.com.pl/ultradzwiekowe-czujniki-odleglosci/1420-ultradzwiekowy-czujnik-odleglosci-hc-sr04-2-200cm.html
http://botland.com.pl/przewody-polaczeniowe/1022-przewody-polaczeniowe-mesko-meskie-65szt.html
Co do rezystorów i arduino pozostawiam wybór osobie, która będzie chciała stworzyć ten projekt, ponieważ można kupić 10 oporników albo 1000 zależy to od użytkowania i wykorzystywania oporników w innych projektach. Co do arduino to można sobie wybrać sobie takie jakie pasuje danemu majsterkowiczowi.
http://botland.com.pl/50-rezystory
http://botland.com.pl/439-arduino-team-oryginalne-plytki
Kod do Arduino:
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
#define L1 8 #define L2 2 #define L3 3 #define L4 4 #define L5 5 #define L6 6 #define L7 7 #define trig 11 #define echo 12 void jeden() { digitalWrite(L1,HIGH); } void dwa() { digitalWrite(L6,HIGH); digitalWrite(L4,HIGH); } void trzy() { digitalWrite(L1,HIGH); digitalWrite(L6,HIGH); digitalWrite(L4,HIGH); } void cztery() { digitalWrite(L2,HIGH); digitalWrite(L6,HIGH); digitalWrite(L4,HIGH); digitalWrite(L7,HIGH); } void piec() { digitalWrite(L1,HIGH); digitalWrite(L2,HIGH); digitalWrite(L4,HIGH); digitalWrite(L7,HIGH); digitalWrite(L6,HIGH); } void szesc() { digitalWrite(L2,HIGH); digitalWrite(L3,HIGH); digitalWrite(L4,HIGH); digitalWrite(L5,HIGH); digitalWrite(L6,HIGH); digitalWrite(L7,HIGH); } void setup() { pinMode(L2,OUTPUT); pinMode(L3,OUTPUT); pinMode(L4,OUTPUT); pinMode(L5,OUTPUT); pinMode(L6,OUTPUT); pinMode(L7,OUTPUT); pinMode(L1,OUTPUT); Serial.begin(9600); pinMode(trig, OUTPUT); pinMode(echo, INPUT); } void loop() { int wynik,g; long czas,odle; digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig,HIGH); delayMicroseconds(10); digitalWrite(trig,LOW); czas = pulseIn(echo,HIGH); odle = czas / 58; delay(500); if (odle <= 15) { digitalWrite(L1,LOW); digitalWrite(L2,LOW); digitalWrite(L4,LOW); digitalWrite(L5,LOW); digitalWrite(L6,LOW); digitalWrite(L7,LOW); digitalWrite(L3,LOW); delay(500); Serial.print(odle); Serial.println(" cm"); wynik=random(6)+1; if (wynik==1) { jeden(); } if (wynik==2) { dwa(); } if (wynik==3) { trzy(); } if (wynik==4) { cztery(); } if (wynik==5) { piec(); } if (wynik==6) { szesc(); } } } |
Wiem, że kod mógłby być uproszczony i dlatego będę nad nim jak i następnymi pracował, aby były krótsze.
Działanie:
I cześć wielkiej POLSCE!
świetna sprawa ! . Na pewno przydałoby się do wielu planszówek :)
Piękne początki. Łezka się kręci na oku jak sobie przypominam swoje początki. Wierzę w to że zobaczę zmodyfikowaną wersje tego projektu w przyszłym czasie !
Rozwiązanie nieoptymalne :) jak przeanalizujeasz jak działa kostka to wyjdzie ci że potrzebne są tylko 4 grupy ledów, a nie 6 pojedynczych:
Nawet ok, ale losowanie jest powtarzalne, tzn. przy każdym uruchomieniu będzie taka sama kolejność wyników. Spróbuj wykorzystać pomiar napięcia na nóżce wiszącej w powietrzu, to daje prawdziwą losowość(zbiera zakłócenia i zamienia na napięcie, które jest mierzone).
Brakuje tylko jeszcze obudowy i projektu na atmedze 328
Witam. Zaczynam dopiero zabawe z arduino, zrobilem sobie juz projekt swiateł i włączanie lampki na rpzycisk i za drugim naicsnieciem zgaszane jej i takie cos ze MUSZE nacisnac 2 przyciski jednoczesnie i zalacza mi sie dioda ktora po 3s. gasnie. Bede za niedlugo zamawiał chyba z Chin reszte bajerow do Arduino i mam takie pytanie, skad sie nauczyc takich fajnych ‘prostych’ ale wedlug mnie podstawowych i potrzebnych rzeczy jak rozne kombinacje w rpogramie np. po wcisnieciu przycisku s1 i s2 zalacza sie dioda na 3s, wcisniecie znowu dwoch rpzyciskow ‘resetuje’ czas i dioda znowu ‘chce” sie palic 3 sekudny a na razie mam tak ze klikne raz dioda pai mi sie 3s. gdy po 2 sekudnahc klikne szybko znowu to didoa gasnie mi pos ekundize, jestme Robie 4 rok szkoly mechatronicznej technicznej dlatego kombinacje teog typu itp tid sa dla mnie bardzo wazne i chcailbym sie nauczyc ich programowania w arduino, mam nadzieje ze ktos mnie rozumie i mi pomoze :)
Polecam Ci dużo praktyki i prób samodzielnego rozwiązania swojego problemu. Nie nauczysz się dobrze programować ściągając gotowce itp. Najlepiej robić sobie jakieś proste projekty i uczyć się jak działają poszczególne funkcje, pętle itp.
No więc wlasnie chciałbym porobic ale mam związane ręce bo kompletnie nie wiem jakich funkcji uzywac i w jaki sposob chociazby te najprostsze troche zobaczyc rozne kombinacje jakw ciszniesz s1 o tamto jakdwa to tamto a jak obydwa i cos po tym to tez cos inneog i z tego pozniej sam juz bym dal rade sie nauczyc a tak ciezko wystartowac.
Poszukaj w googlach “Kurs arduino”. W sieci jest wiele fajnych kursów, wystarczy troszeczkę poszperać i wybrać taki, który najbardziej ci odpowiada ;)
Z jednej strony fajny projekt aby nauczyć się programowania, ale z drugiej strony to jest bezsens aby zaprzęgać procesor aby sterował kilkoma ledami i to z góry wpisaną kombinacją wyświetlania liczb.
Taki projekt robi się na dwóch scalakach i kilku elementach biernych: http://obrazki.elektroda.pl/9742537900_1318870201.jpg
Pozdrawiam
Bardzo fajnie wyszło. Co do użycia elementów biernych o których wspomniał olo: fakt, jednak ćwiczenie z użyciem arduino pozwala na zdobywanie umiejętności programistycznych. A sam pomysł bardzo dobry – zwłaszcza, że można go rozszerzać o nowe możliwości.
“umiejętności programistycznych”? W arduino? Na gotowcach?
No proszę Cię. Jeśli chcesz się nauczyć “umiejętności programistycznych” to przerób sobie “symfonię C++” Grębosza (c++, ale dla PC) albo bluebooka Mirka Kardasia (c dla avr). Arduino nie uczy programowania
Mi brakuje tylko obudowy ;P Pomysł świetny!