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:

int var; //zmienną var – będzie nam okreslac ilosc wykonywanej pętli

char wyrazenie; // char – znaki ASCII i tablice w jakiej beda przechowywane - „wyrazenie”

String ciagZnakow=""; // string – łańcuch znaków brany z tablicy wyrażenia

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ć.

 

void setup() //Inicjalizacja przy włączeniu Arduino

{

Serial.begin(9600); // Ustawienie przesyłu danych

pinMode(11, OUTPUT); // Ustawienie pinu oraz opcji – Wysyłania sygnału ( output)

pinMode(10, OUTPUT);

}

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):

 

{

if(Serial.available()){ // Sprawdzenie czy istnieje komunikacja z modułem

while(Serial.available()) //Nasłuch komunikatów z BT

{

char inChar = (char)Serial.read(); //wczytaj podany znak do tablicy

ciagZnakow += inChar; // przypisanie znaków z talibcy

}

Serial.println(ciagZnakow); // wyświetl wpisany ciąg znaków – opcja do sprawdzenia komunikacji czy przesyła i odbiera.

while (Serial.available() > 0) // Sprawdza stan tablicy znaków

{ wyrazenie = ((byte)Serial.read()) ; } // Przypisanie ciagu do wyrazenia
b) Funkcje warunkowe if – sprawdzają podany znak i jaką pętle należy wykonać – Zaplanie i gaszenie diody:
if(ciagZnakow == "a"){ //jezeli "a" zapal diode 1

digitalWrite(10, HIGH);

}else if(ciagZnakow == "b"){ //jezeli "b" zagas diode 1

digitalWrite(10, LOW);

 

c)Funkcja do migotania ( radiowóz):

 

if(ciagZnakow =="x"){ //jezeli "x" zrob migotanie

for (var = 0;var <= 100;var++){

digitalWrite(10, HIGH);

digitalWrite(11, LOW);

delay(50);

digitalWrite(10, LOW);

digitalWrite(11, HIGH);

delay(50);

if (var==100)

{digitalWrite(10, LOW);

digitalWrite(11, LOW);

} }
d) Funkcja do zapalania i wygaszania:

 

if(ciagZnakow == "f"){ //Jeżeli literka "f" zrób przenikanie

// zapalanie diod LED

for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {

// ustawienia zapalania diód LED od 0 do 255 co 5 pkt

analogWrite(11, fadeValue);

analogWrite(10, fadeValue);

// delay oznacza czas swiecenia diody zanim zacznie ja wygaszać

delay(30);

}

// wygaszanie diod LED

for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {

// ustawienia wygaszania diód LED od 255 do 0 co 5 pkt

analogWrite(10, fadeValue);

analogWrite(11, fadeValue);

delay (30);
}

}
e)Na końcu musimy dodać jeszcze co ma zrobić po wykonaniu jakiejkolwiek pętli:
ciagZnakow = ""; //Po wykonaniu danej czynnosci czeka na podanie kolejnego polecenia

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

/*
Sterowanie diodami LED przez Androida z wykorzystaniem Arduino i modułu BT HC-05
Oprogramowanie dla Arduino

Dominik Kulesza
*/
int var;
char wyrazenie;
String ciagZnakow="";

void setup()                    //Inicjalizacja przy włączeniu Arduino
{
 Serial.begin(9600);            // Ustawienie przesyłu danych 
 pinMode(11, OUTPUT);
 pinMode(10, OUTPUT);
}

void loop()
{
  if(Serial.available()){     // Sprawdzenie czy istnieje komunikacja z modułem
  while(Serial.available())   //Nasłuch komunikatów z BT
    {
      char inChar = (char)Serial.read(); //wczytaj podany znak 
      ciagZnakow += inChar;        // tworzenie ciągu znaków dla portu
    }
    Serial.println(ciagZnakow);
    while (Serial.available() > 0)  
    { wyrazenie = ((byte)Serial.read()) ; }      // czysci tablice znakow
    if(ciagZnakow == "a"){         //jezeli "a" zapal diode 1
      digitalWrite(10, HIGH);  
    }else if(ciagZnakow == "b"){   //jezeli "b" zagas diode 1
      digitalWrite(10, LOW);
    }else if(ciagZnakow == "c"){   //jezeli "c" zapal diode 2
      digitalWrite(11, HIGH);
    }else if(ciagZnakow == "d"){   //jezeli "b" zagas diode 1
      digitalWrite(11, LOW);
    } 
    else if(ciagZnakow =="x"){   //jezeli "x"  zrob migotanie
      
      for (var = 0;var <= 100;var++){
      digitalWrite(11, HIGH);
      digitalWrite(10, LOW);
      delay(50);
      digitalWrite(11, LOW);
      digitalWrite(10, HIGH);
      delay(50);
      if (var==100)
      {digitalWrite(11, LOW);
      digitalWrite(10, LOW);
      } }
     
    }else if(ciagZnakow == "f"){   //Jeżeli literka "f" zrób przenikanie
      
    // zapalanie diod LED
    for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    // ustawienia zapalania diód LED od 0 do 255 co 5 pkt
    analogWrite(11, fadeValue);
    analogWrite(10, fadeValue);
    // delay oznacza czas swiecenia diody zanim zacznie ja wygaszać
    delay(100);
  }
   // wygaszanie diod LED
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    // ustawienia wygaszania diód LED od 255 do 0 co 5 pkt
    analogWrite(11, fadeValue);
    analogWrite(10, fadeValue);
    // tu rowniez mozna zastosowac opoznienie ( delay (30 ) jednakże bez dodatkowej pentli jest to zbedne
    delay(100);
      }
    }
      
    ciagZnakow = ""; //Po wykonaniu danej czynnosci czeka na podanie kolejnego polecenia
  }
}

P.S. Pełen listing:

 

Dominik Kulesza

Create Account



Log In Your Account