Barkod Okuyucudan Alınan Ürünün Fiyatlarını Butona Basınca Toplayıp Yazdırma
  • Barkod okuyucuyla okutunca ürünün fiyatını yazıyor ancak ürünlerin fiyatlarını toplamak için butona bastığımızda LCD ekrana hiçbir etkisi olmuyor ve okuyup ürünün fiyatını yazdırmaya devam ediyor.
    Kodlar bunlar;
    #define DISPLAY_WIDTH 16

    LiquidCrystal lcd(8,7, 6, 5, 4, 3);
    float toplam;
    int buton;
    USB Usb;
    USBHub Hub(&Usb);
    HIDUniversal Hid(&Usb);
    HIDBoot HidKeyboard(&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 );

    if((char)key== '2') {
    toplam=toplam+1.50;
    lcd.print("Cikolata");
    lcd.print(" 1.50");
    lcd.print(" TL");
    delay(1000);
    }
    if((char)key== '9') {
    toplam=toplam+2.50;
    lcd.print("Cips");
    lcd.print(" 2,50");
    lcd.print(" TL");
    delay(1000);
    }
    if((char)key== '8') {
    toplam=toplam+4;
    lcd.print("Yogurt");
    lcd.print(" 4");
    lcd.print(" TL");
    delay(1000);
    }
    if((char)key== '6') {
    toplam=toplam+3.50;
    lcd.print("Sut");
    lcd.print(" 3,50");
    lcd.print(" TL");
    delay(1000);
    }
    if(buton==HIGH){
    lcd.print(toplam);
    lcd.clear();
    }

    };

    KbdRptParser Prs;

    void setup()
    {

    pinMode(9,INPUT);
    buton=digitalRead(9);

    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();
    }

  • Merhaba,
    Sorunu çözebildiniz mi?

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.