Barkod okuyucu genellikle büyük mağazalarda bulunan bir ürün takip sistemidir.Ürünlerin üzerlerine kodlar eklenir ve bu kodlar lazer okuma sistemi ile alınabilir. Okunan barkod değerlerini lcd ekrana yazdıran bu sistem ile farklı çalışmalar deneyebilirsiniz.Örneğin , yasaklı barkodlarda sistemin alarm vermesi sağlanabilir. Diyelim ki Fransadan gelen ürünler için alarm verilmesini istiyorsunuz ( 300 – 379 Fransa ) sisteme eklenecek bir if satırı ile bu barkod numaraları arasında ise ürün alarm verebilir.
Projede Kullanılan Mazlemeler
- Arduino Uno
- Arduino USB Host Shield
- Barkod Okuyucu
- 16×2 LCD Ekran
- Jumper Kablo
- Breadboard
- 10k Potansiyemetre


#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();
}
İncelemeler
Henüz inceleme yapılmadı.