Sterowanie diodami LED. Połączenie ArduinoUno, Androida i modułu HC-05. Część 1


 

Lekcja 1. Składanie elementów

1.Na początek zacznijmy od opisania elementów, które będą nam potrzebne:

1. ArduinoUno
2. Breadboard
3. Diody LED 2szt
4. Oporniki R=1kOhm 3szt
5. Oporniki R=220 Ohm 2 szt.
6. Przewody ( najlepiej zakończone goldpinami).

 

2. Łączymy, jak na schemacie powyżej.

Arduino:
a) PIN 5V ›Breadboard+
b) PIN GND ›Breadboard –
c) PIN 0(RXD) ›1kOhm › TXD ( i dodatkowo +2x1kOhm › na GND )

Delikatne wyjaśnienia co do stosowania rezystorów przy podpinaniu HC-05.
MODUŁ HC-05 można zakupić zamontowany już na płycie matce i możemy pod VCC podłaczyć 5V. Natomiast TXD działa wyłącznie na 3V3 ~ 3,3V i musimy stworzyć dzielnik napięcia. W tym przypadku najłatwiej jest zastosować 3 oporniki 1kOhm lub 2 oporniki (1kOhm + 2kOhm). Gdzie 1K będzie naszym dzielnikiem, a dokłądniej będzie 1/3 z 5V co daje nam 1,66V czyli 5V-1,66V ~ 3,33V- a takiego napięcia potrzebujemy do wysyłania odpowiedzi z naszego modułu. W innym wypadku moglibyśmy go usmażyć.

d) PIN 10 › 220Ohm ›DIODA LED › GND
e) PIN 11 › 220Ohm ›DIODA LED › GND

3. Piszemy program w Arduino  Sketch

1. Na początek dodajemy:

[pastacode lang=”markup” manual=”int%20var%3B%20%2F%2Fzmienn%C4%85%20var%20%E2%80%93%20b%C4%99dzie%20nam%20okreslac%20ilosc%20wykonywanej%20p%C4%99tli%0A%0Achar%20wyrazenie%3B%20%2F%2F%20char%20%E2%80%93%20znaki%20ASCII%20i%20tablice%20w%20jakiej%20beda%20przechowywane%20-%20%E2%80%9Ewyrazenie%E2%80%9D%0A%0AString%20ciagZnakow%3D%22%22%3B%20%2F%2F%20string%20%E2%80%93%20%C5%82a%C5%84cuch%20znak%C3%B3w%20brany%20z%20tablicy%20wyra%C5%BCenia” message=”” highlight=”” provider=”manual”/]

2. Void setup – główna część w któej deklarujemy z czego będziemy korzystać. Wpisujemy prędkość przesyłu danych przez BT oraz piny z których będziemy korzystać.

 

[pastacode lang=”markup” manual=”void%20setup()%20%2F%2FInicjalizacja%20przy%20w%C5%82%C4%85czeniu%20Arduino%0A%0A%7B%0A%0ASerial.begin(9600)%3B%20%2F%2F%20Ustawienie%20przesy%C5%82u%20danych%0A%0ApinMode(11%2C%20OUTPUT)%3B%20%2F%2F%20Ustawienie%20pinu%20oraz%20opcji%20%E2%80%93%20Wysy%C5%82ania%20sygna%C5%82u%20(%20output)%0A%0ApinMode(10%2C%20OUTPUT)%3B%0A%0A%7D” message=”” highlight=”” provider=”manual”/]

3. Void loop – główna pętla działania programu. Tutaj wpisujemy instrukcje jakie ma wykonywać nasz program.

a) Sprawdzenie modułu BT i komunikacji ( przesyłanie i odbieranie danych):

 

[pastacode lang=”markup” manual=”%7B%0A%0Aif(Serial.available())%7B%20%2F%2F%20Sprawdzenie%20czy%20istnieje%20komunikacja%20z%20modu%C5%82em%0A%0Awhile(Serial.available())%20%2F%2FNas%C5%82uch%20komunikat%C3%B3w%20z%20BT%0A%0A%7B%0A%0Achar%20inChar%20%3D%20(char)Serial.read()%3B%20%2F%2Fwczytaj%20podany%20znak%20do%20tablicy%0A%0AciagZnakow%20%2B%3D%20inChar%3B%20%2F%2F%20przypisanie%20znak%C3%B3w%20z%20talibcy%0A%0A%7D%0A%0ASerial.println(ciagZnakow)%3B%20%2F%2F%20wy%C5%9Bwietl%20wpisany%20ci%C4%85g%20znak%C3%B3w%20%E2%80%93%20opcja%20do%20sprawdzenia%20komunikacji%20czy%20przesy%C5%82a%20i%20odbiera.%0A%0Awhile%20(Serial.available()%20%3E%200)%20%2F%2F%20Sprawdza%20stan%20tablicy%20znak%C3%B3w%0A%0A%7B%20wyrazenie%20%3D%20((byte)Serial.read())%20%3B%20%7D%20%2F%2F%20Przypisanie%20ciagu%20do%20wyrazenia” message=”” highlight=”” provider=”manual”/]

b) Funkcje warunkowe if – sprawdzają podany znak i jaką pętle należy wykonać – Zaplanie i gaszenie diody:

[pastacode lang=”markup” manual=”if(ciagZnakow%20%3D%3D%20%22a%22)%7B%20%2F%2Fjezeli%20%22a%22%20zapal%20diode%201%0A%0AdigitalWrite(10%2C%20HIGH)%3B%0A%0A%7Delse%20if(ciagZnakow%20%3D%3D%20%22b%22)%7B%20%2F%2Fjezeli%20%22b%22%20zagas%20diode%201%0A%0AdigitalWrite(10%2C%20LOW)%3B” message=”” highlight=”” provider=”manual”/]

 

c)Funkcja do migotania ( radiowóz):

 

[pastacode lang=”markup” manual=”if(ciagZnakow%20%3D%3D%22x%22)%7B%20%2F%2Fjezeli%20%22x%22%20zrob%20migotanie%0A%0Afor%20(var%20%3D%200%3Bvar%20%3C%3D%20100%3Bvar%2B%2B)%7B%0A%0AdigitalWrite(10%2C%20HIGH)%3B%0A%0AdigitalWrite(11%2C%20LOW)%3B%0A%0Adelay(50)%3B%0A%0AdigitalWrite(10%2C%20LOW)%3B%0A%0AdigitalWrite(11%2C%20HIGH)%3B%0A%0Adelay(50)%3B%0A%0Aif%20(var%3D%3D100)%0A%0A%7BdigitalWrite(10%2C%20LOW)%3B%0A%0AdigitalWrite(11%2C%20LOW)%3B%0A%0A%7D%20%7D” message=”” highlight=”” provider=”manual”/]

d) Funkcja do zapalania i wygaszania:

 

[pastacode lang=”markup” manual=”if(ciagZnakow%20%3D%3D%20%22f%22)%7B%20%2F%2FJe%C5%BCeli%20literka%20%22f%22%20zr%C3%B3b%20przenikanie%0A%0A%2F%2F%20zapalanie%20diod%20LED%0A%0Afor%20(int%20fadeValue%20%3D%200%20%3B%20fadeValue%20%3C%3D%20255%3B%20fadeValue%20%2B%3D%205)%20%7B%0A%0A%2F%2F%20ustawienia%20zapalania%20di%C3%B3d%20LED%20od%200%20do%20255%20co%205%20pkt%0A%0AanalogWrite(11%2C%20fadeValue)%3B%0A%0AanalogWrite(10%2C%20fadeValue)%3B%0A%0A%2F%2F%20delay%20oznacza%20czas%20swiecenia%20diody%20zanim%20zacznie%20ja%20wygasza%C4%87%0A%0Adelay(30)%3B%0A%0A%7D%0A%0A%2F%2F%20wygaszanie%20diod%20LED%0A%0Afor%20(int%20fadeValue%20%3D%20255%20%3B%20fadeValue%20%3E%3D%200%3B%20fadeValue%20-%3D%205)%20%7B%0A%0A%2F%2F%20ustawienia%20wygaszania%20di%C3%B3d%20LED%20od%20255%20do%200%20co%205%20pkt%0A%0AanalogWrite(10%2C%20fadeValue)%3B%0A%0AanalogWrite(11%2C%20fadeValue)%3B%0A%0Adelay%20(30)%3B%0A%7D%0A%0A%7D” message=”” highlight=”” provider=”manual”/]

e)Na końcu musimy dodać jeszcze co ma zrobić po wykonaniu jakiejkolwiek pętli:

[pastacode lang=”markup” manual=”ciagZnakow%20%3D%20%22%22%3B%20%2F%2FPo%20wykonaniu%20danej%20czynnosci%20czeka%20na%20podanie%20kolejnego%20polecenia” message=”” highlight=”” provider=”manual”/]

Uwagi:

Jeżeli wgramy program na nasze Arduino i czegoś nie sknocimy możemy na naszym telefonie lub tablecie zainstalować Bluetooth Terminal ( łatwo można znaleźć w google play). Następnie łączymy się z naszym urządzeniem i parujemy. Po połączeniu z programem naciskamy literkę „a” SEND i obserwujemy jak zapala się nasza pierwsza dioda.

W kolejnej części przedstawie własny program dla Androida ( w Android Studio, bo jakoś nie kręci mnie układanie puzelków), aby można było sterować naszymi ledami…

Stay Tuned…

Dla Learnduino Dominik Kulesza

[pastacode lang=”markup” manual=”%2F*%0ASterowanie%20diodami%20LED%20przez%20Androida%20z%20wykorzystaniem%20Arduino%20i%20modu%C5%82u%20BT%20HC-05%0AOprogramowanie%20dla%20Arduino%0A%0ADominik%20Kulesza%0A*%2F%0Aint%20var%3B%0Achar%20wyrazenie%3B%0AString%20ciagZnakow%3D%22%22%3B%0A%0Avoid%20setup()%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2FInicjalizacja%20przy%20w%C5%82%C4%85czeniu%20Arduino%0A%7B%0A%20Serial.begin(9600)%3B%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Ustawienie%20przesy%C5%82u%20danych%20%0A%20pinMode(11%2C%20OUTPUT)%3B%0A%20pinMode(10%2C%20OUTPUT)%3B%0A%7D%0A%0Avoid%20loop()%0A%7B%0A%20%20if(Serial.available())%7B%20%20%20%20%20%2F%2F%20Sprawdzenie%20czy%20istnieje%20komunikacja%20z%20modu%C5%82em%0A%20%20while(Serial.available())%20%20%20%2F%2FNas%C5%82uch%20komunikat%C3%B3w%20z%20BT%0A%20%20%20%20%7B%0A%20%20%20%20%20%20char%20inChar%20%3D%20(char)Serial.read()%3B%20%2F%2Fwczytaj%20podany%20znak%20%0A%20%20%20%20%20%20ciagZnakow%20%2B%3D%20inChar%3B%20%20%20%20%20%20%20%20%2F%2F%20tworzenie%20ci%C4%85gu%20znak%C3%B3w%20dla%20portu%0A%20%20%20%20%7D%0A%20%20%20%20Serial.println(ciagZnakow)%3B%0A%20%20%20%20while%20(Serial.available()%20%3E%200)%20%20%0A%20%20%20%20%7B%20wyrazenie%20%3D%20((byte)Serial.read())%20%3B%20%7D%20%20%20%20%20%20%2F%2F%20czysci%20tablice%20znakow%0A%20%20%20%20if(ciagZnakow%20%3D%3D%20%22a%22)%7B%20%20%20%20%20%20%20%20%20%2F%2Fjezeli%20%22a%22%20zapal%20diode%201%0A%20%20%20%20%20%20digitalWrite(10%2C%20HIGH)%3B%20%20%0A%20%20%20%20%7Delse%20if(ciagZnakow%20%3D%3D%20%22b%22)%7B%20%20%20%2F%2Fjezeli%20%22b%22%20zagas%20diode%201%0A%20%20%20%20%20%20digitalWrite(10%2C%20LOW)%3B%0A%20%20%20%20%7Delse%20if(ciagZnakow%20%3D%3D%20%22c%22)%7B%20%20%20%2F%2Fjezeli%20%22c%22%20zapal%20diode%202%0A%20%20%20%20%20%20digitalWrite(11%2C%20HIGH)%3B%0A%20%20%20%20%7Delse%20if(ciagZnakow%20%3D%3D%20%22d%22)%7B%20%20%20%2F%2Fjezeli%20%22b%22%20zagas%20diode%201%0A%20%20%20%20%20%20digitalWrite(11%2C%20LOW)%3B%0A%20%20%20%20%7D%20%0A%20%20%20%20else%20if(ciagZnakow%20%3D%3D%22x%22)%7B%20%20%20%2F%2Fjezeli%20%22x%22%20%20zrob%20migotanie%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20for%20(var%20%3D%200%3Bvar%20%3C%3D%20100%3Bvar%2B%2B)%7B%0A%20%20%20%20%20%20digitalWrite(11%2C%20HIGH)%3B%0A%20%20%20%20%20%20digitalWrite(10%2C%20LOW)%3B%0A%20%20%20%20%20%20delay(50)%3B%0A%20%20%20%20%20%20digitalWrite(11%2C%20LOW)%3B%0A%20%20%20%20%20%20digitalWrite(10%2C%20HIGH)%3B%0A%20%20%20%20%20%20delay(50)%3B%0A%20%20%20%20%20%20if%20(var%3D%3D100)%0A%20%20%20%20%20%20%7BdigitalWrite(11%2C%20LOW)%3B%0A%20%20%20%20%20%20digitalWrite(10%2C%20LOW)%3B%0A%20%20%20%20%20%20%7D%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%7Delse%20if(ciagZnakow%20%3D%3D%20%22f%22)%7B%20%20%20%2F%2FJe%C5%BCeli%20literka%20%22f%22%20zr%C3%B3b%20przenikanie%0A%20%20%20%20%20%20%0A%20%20%20%20%2F%2F%20zapalanie%20diod%20LED%0A%20%20%20%20for%20(int%20fadeValue%20%3D%200%20%3B%20fadeValue%20%3C%3D%20255%3B%20fadeValue%20%2B%3D%205)%20%7B%0A%20%20%20%20%2F%2F%20ustawienia%20zapalania%20di%C3%B3d%20LED%20od%200%20do%20255%20co%205%20pkt%0A%20%20%20%20analogWrite(11%2C%20fadeValue)%3B%0A%20%20%20%20analogWrite(10%2C%20fadeValue)%3B%0A%20%20%20%20%2F%2F%20delay%20oznacza%20czas%20swiecenia%20diody%20zanim%20zacznie%20ja%20wygasza%C4%87%0A%20%20%20%20delay(100)%3B%0A%20%20%7D%0A%20%20%20%2F%2F%20wygaszanie%20diod%20LED%0A%20%20for%20(int%20fadeValue%20%3D%20255%20%3B%20fadeValue%20%3E%3D%200%3B%20fadeValue%20-%3D%205)%20%7B%0A%20%20%20%20%2F%2F%20ustawienia%20wygaszania%20di%C3%B3d%20LED%20od%20255%20do%200%20co%205%20pkt%0A%20%20%20%20analogWrite(11%2C%20fadeValue)%3B%0A%20%20%20%20analogWrite(10%2C%20fadeValue)%3B%0A%20%20%20%20%2F%2F%20tu%20rowniez%20mozna%20zastosowac%20opoznienie%20(%20delay%20(30%20)%20jednak%C5%BCe%20bez%20dodatkowej%20pentli%20jest%20to%20zbedne%0A%20%20%20%20delay(100)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20ciagZnakow%20%3D%20%22%22%3B%20%2F%2FPo%20wykonaniu%20danej%20czynnosci%20czeka%20na%20podanie%20kolejnego%20polecenia%0A%20%20%7D%0A%7D%0A” message=”” highlight=”” provider=”manual”/]

P.S. Pełen listing:

Poprzednia informacja Wyświetlacze alfanumeryczne do Arduino
Kolejna informacja Programowanie - kurs dla początkujących

Brak komentarzy

Zostaw odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *