Arduino İle Barkod Okuyucu Uygulaması

4 9.527

Barkod okuyucular, ürünlerin üzerindeki barkoddan fiyat ve ürünle ilgili diğer bilgileri çeken araçlardır.Bu projemizde arduino ile lcd ekranda ürünlerin barkod numaralarını görebileceğimiz güzel bir uygulama yapacağız.

Malzemeler:

  1. Arduino
  2. Arduino USB Host Shield
  3. Barkod Okuyucu
  4. Lcd (16×2)

 

Elektronik Devre Şeması:

LCD Bağlantı Pinleri:

  • LCD RS pin- dijital pin 7
  • LCD Enable pin -dijital pin 6
  • LCD D4 pin – dijital pin 5
  • LCD D5 pin – dijital pin 4
  • LCD D6 pin – dijital pin 3
  • LCD D7 pin – dijital pin 2
  • LCD R/W pin – ground

Bu cihazımızın parametrelerini doğrulamak için aşağıdaki iletişim protokolünü dikkate alalım.

Intf. Class:     03
Intf. Subclass:  01
Intf. Protocol:  01

Kod okuyucumuzda doğrulama sırasında yukarıdaki bilgiler uyuşmuyorsa USB Host Shield 2.0 kütüphanesi örnek dosyalarındaki USB_desc kodunu yükleyiniz.

Usb Shield Kütüphanesini buradan indirelim.

USBHID Boot Kbd örnek kodunu açın.Bu kod lcd ekranından barkod numaralarını görmemizi sağlayacaktır.

 

Arduino Yazılımı:

#include <hid.h>
#include <hiduniversal.h>
#include <usbhub.h>
 
#include <LiquidCrystal.h>
#include <avr/pgmspace.h>
 
//#include <avrpins.h>
//#include <max3421e.h>
//#include <usbhost.h>
//#include <usb_ch9.h>
#include <Usb.h>
#include <usbhub.h>
#include <avr/pgmspace.h>
//#include <address.h>
#include <hidboot.h>
 
//#include <printhex.h>
//#include <message.h>
//#include <hexdump.h>
//#include <parsetools.h>
#define DISPLAY_WIDTH 16
 
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
 
USB Usb;
USBHub Hub(&Usb);
HIDUniversal Hid(&Usb);
HIDBoot Keyboard(&Usb);
 
class KbdRptParser : public KeyboardReportParser
{
void PrintKey(uint8_t mod, uint8_t key);
protected:
virtual void OnKeyDown (uint8_t mod, uint8_t key);
virtual void OnKeyPressed(uint8_t key);
};
 
void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
{
uint8_t c = OemToAscii(mod, key);
 
if (c)
OnKeyPressed(c);
}
 
void KbdRptParser::OnKeyPressed(uint8_t key)
{
static uint32_t next_time = 0;
static uint8_t current_cursor = 0;
 
if( millis() > next_time ) {
lcd.clear();
current_cursor = 0;
delay( 5 );
lcd.setCursor( 0,0 );
}
 
next_time = millis() + 200;
 
if( current_cursor++ == ( DISPLAY_WIDTH + 1 )) {
lcd.setCursor( 0,1 );
}
 
Serial.print( (char)key );
lcd.print( (char)key );
};
 
KbdRptParser Prs;
 
void setup()
{
Serial.begin( 115200 );
Serial.println("Start");
 
if (Usb.Init() == -1) {
Serial.println("OSC Başlatılamadı.");
}
 
delay( 200 );
 
Hid.SetReportParser(0, (HIDReportParser*)&Prs);
lcd.begin(DISPLAY_WIDTH, 2);
lcd.clear();
lcd.noAutoscroll();
lcd.print("Hazır");
delay( 200 );
}
 
void loop()
{
Usb.Task();
}

 

Bunlar da İlgini Çekebilir
Cevap bırakın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

4 Yorum
  1. Berkay

    Ben bu projeyi yapiyorum ogrenciyim host shield kütüphanesini atiyoruz usb desc dosyasini da aciyoruz hic bir sikinyi yok ama ondan sonra napicagimizi daha aciklayici bir sekilde anlatabilirseniz sevinirim mail olarak gonderirsenizde sevinirim

  2. Destan

    merhaba Arduino İle Barkod okuyucu karşılığında isim yazdırabilirmiyiz acaba ?? konu hakında yardımcı olabilirmisiniz

  3. Sinan TAŞKIN

    Merhaba,
    aşağıda belirtmiş olduğunuz değerlerin kontrolünü nasıl sağlıyoruz. ? Bu bilgileri nereden görebiliriz ? Eğer belirttiğiniz değerler uyuşmuyorsa nasıl/nereden değiştirebiliriz.

    Intf. Class: 03
    Intf. Subclass: 01
    Intf. Protocol: 01
    Teşekürler

  4. Ender Duman

    Merhaba,

    Barkod okuyucu projeniz için öncelikle öncelikle tebrik ederim. Size küçük bir sorum olacak. Okuduğumuz barkod rakamını bölümlere ayırmak mümkünmüdür? Yani ilk 3 rakam şu işi yapsın sonraki 4 rakam bu işi yapsın gibi? Bilgi verebilirseniz çom sevinirim.
    Teşekkür Ederim.
    Ender