Arkadaşlar merhaba,
Bu zamana kadar yaptığımız LED ve Servo Motor kontrol örneklerinin birazcık dışına çıkacağız ve farklı bir LED türü olan RGB LED'i yine Arduino'muz üzerinden hazırlayacağımız App Inventor uygulamamız ile kontrolünü gerçekleştireceğiz.
Nelere ihtiyacımız var?
Bir önceki derslerde öğrendiklerimiz App Inventor - Bluetooth ve Arduino - Bluetooth bağlantılarına ihtiyaç duyacağız. Yani öğrendiğimiz bilgiler bizim için yeterli olacaktır.
Fiziksel olarak ise,
- Arduino Uno/Mega/Mini
- 1 adet RGB LED
- Jumper kablolarımız
- 1 adet akıllı telefon
Görev 1: App Inventor Uygulaması
Uygulamamı video olarak hazırlamaktansa arayüzünü ve kodlarını (bloks) resimler halinde veriyorum. Siz de bu resimleri inceleyerek bu görevi tamamlayabilirsiniz.
Arayüz tasarımım
Arayüzümde dikkat etmem gereken hususlar RGB Led in Red – Green – Blue ismiyle şekillendiği ve bu 3 temel renge göre düğmelerimi (button) yerleştirdiğim olacak. Ek olarak da Bluetooth bağlantısı için ListPicker'ı kullanmayı sakın unutmayın.
Bloks
Bloklarımı yerleştirirken de her zamanki gibi ListPicker'ın BeforePicking ve AfterPicking durumunu ayarlıyorum. Daha sonrasında da düğmelerin (button) tıklanma durumuna göre Arduino'ya Bluetooth üzerinden göndereceğim veriyi (text) ekliyorum.
Görev 2: Arduino bağlantısı
Bağlantı şemamda Bluetooth modülüm için,
- VCC - 3.3 V
- GND - GND
- TXD - 7
- RXD - 8
RGB bağlantım ise soldan sağa doğru,
3 - GND – 5 – 6 şeklinde olacaktır.
Görev 3: Arduino Kodu
#include<SoftwareSerial.h>
SoftwareSerial BT(10,11);
String color;
void setup()
{
BT.begin(9600);
Serial.begin(9600);
pinMode(2,OUTPUT); //mavi
pinMode(3,OUTPUT); // yeşil
pinMode(4,OUTPUT); // kırmızı
}
void loop()
{
while (BT.available())
{
delay(10);
char c = BT.read();
color +=c;
}if(color.length()>0) {
Serial.println(color);
if(color=="blue")
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
delay(20);
}
else if(color=="green")
{
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
delay(20);
}
else if(color=="red")
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
delay(20);
}
else if(color=="stop")
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
delay(20);
}
color="";
}}