Merhaba arkadaşlar. Bugün sizlerle beraber Arduino ve 74HC595 entegresini kullanarak seri iletişim ile bilgisayar kontrollü LED uygulaması yapacağız.
Gerekli malzemelerimiz:
Seri Haberleşme
Hatırlarsak Arduino’muz bilgisayarımıza tanıtıldığında COM portu olarak tanınmıştı. Bu COM portu, seri haberleşme (UART) dediğimiz bir bağlantı türü için kullanılmaktadır. Bilgisayarımızla Arduino’muzu haberleştirmek için Arduino yazılımında bulunan “Seri Port Ekranı”nı kullanacağız.
int latchPin = 5;
int clockPin = 6;
int dataPin = 4;
byte leds = 0;
void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
registeraYaz();
Serial.begin(9600);
while (! Serial);
Serial.print("1 ile 8 arasinda bir LED numarasi girin veya ");
Serial.println("x ile hepsini sondurun");
}
void loop()
{
if (Serial.available())
{
char ch = Serial.read();
if (ch >= '1' && ch <= '8')
{
int led = ch - '1';
bitSet(leds, led);
registeraYaz();
Serial.print(led +1);
Serial.println(" numarali LED yandi");
}
if (ch == 'x')
{
leds = 0;
registeraYaz();
Serial.println("Tum LED'ler sondu");
}
}
}
void registeraYaz()
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, leds);
digitalWrite(latchPin, HIGH);
}
Kodumuzun setup kısmında yer alan Serial.begin(9600) komutu, Arduino’muzun seri portunu 9600 baud’da (seri iletişim hızı) çalışacak şekilde ayarlıyor. Serial.print komutu ise Arduino’nun seri porttan bilgisayarla iletişime geçerek tırnak içinde yazan yazının seri port ekranında görünmesini sağlıyor.
Gerekli malzemelerimiz:
- Arduino UNO
- Breadboard
- 74HC595 shift register entegresi
- 8 adet LED
- 8 adet 220 Ω
- İki ucu erkek jumper kablo
Seri Haberleşme
Hatırlarsak Arduino’muz bilgisayarımıza tanıtıldığında COM portu olarak tanınmıştı. Bu COM portu, seri haberleşme (UART) dediğimiz bir bağlantı türü için kullanılmaktadır. Bilgisayarımızla Arduino’muzu haberleştirmek için Arduino yazılımında bulunan “Seri Port Ekranı”nı kullanacağız.
Devremizin bağlantı şeması bir önceki dersimizdekiyle aynı:
Kodumuz ise şu şekilde:
int latchPin = 5;
int clockPin = 6;
int dataPin = 4;
byte leds = 0;
void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
registeraYaz();
Serial.begin(9600);
while (! Serial);
Serial.print("1 ile 8 arasinda bir LED numarasi girin veya ");
Serial.println("x ile hepsini sondurun");
}
void loop()
{
if (Serial.available())
{
char ch = Serial.read();
if (ch >= '1' && ch <= '8')
{
int led = ch - '1';
bitSet(leds, led);
registeraYaz();
Serial.print(led +1);
Serial.println(" numarali LED yandi");
}
if (ch == 'x')
{
leds = 0;
registeraYaz();
Serial.println("Tum LED'ler sondu");
}
}
}
void registeraYaz()
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, leds);
digitalWrite(latchPin, HIGH);
}
Kodumuzun setup kısmında yer alan Serial.begin(9600) komutu, Arduino’muzun seri portunu 9600 baud’da (seri iletişim hızı) çalışacak şekilde ayarlıyor. Serial.print komutu ise Arduino’nun seri porttan bilgisayarla iletişime geçerek tırnak içinde yazan yazının seri port ekranında görünmesini sağlıyor.