Arduino powered toy cash register

 

My hand made plywood cash register toy powered with arduino

1. Select price with a potentiometer
2. Scan product with an IR sensor
3. Cash or credit card payment
4. Measure weight
5. Step motor powered bill roller etc.

I designed and made this toy for my daughter to teach currency and shopping with these eq:

Plywood
Arduino Nano
IR Sensor
LED’s
10k potentiometer
16×2 LCD with I2C
28BYJ-48 Step Motor with Uln2003 driver
2xmetal gear mini servos
Push buttons
8xAA battery and battery housings
2x 5V regulator
cables, circuit eq. etc.

Source Code

#include <Servo.h>
#include <StepperMotor.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Servo cekmeceservo,kartservo;
boolean cekmeceacik=false; // Para çekmecesinin açık-kapalı olduğunu tutan değişken
int i;//Döngü vs. için kullanılacak değişken
int fiyat=0; // Okunan ürün fiyatı
int toplam=0; // Toplam fiyat
int eskideger=0; // Potansiyometreden okunan eski değer
StepperMotor motor(9,10,11,12);// 9,10, 11, 12 numaralı pinler Fiş kesme step motor pinleri
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD ekran tanımlandı

 

void setup()
{
pinMode(4,INPUT); // 4 numaralı pin kredi kartı push button
pinMode(5,INPUT); // 5 Numaralı pin çekmece buttonu
pinMode(13,OUTPUT); // DENEME PİNİ
pinMode(6,INPUT); // 6 numaralı pin barkod IR sensörü
pinMode (7, OUTPUT); // 7 numaralı pin barkod led
pinMode(8,OUTPUT); // 8 numaralı pin On-off buttonunun yanındaki led
cekmeceservo.attach(2); // 2 numaralı pin çekmece servosu
cekmeceservo.write(49); // Çekmece servosu 51 derecede kapalı konumda
kartservo.attach(3); // 3 Numaralı pin kredi kartı servosu
kartservo.write(145); // Kredi kartı servosu başlangıç değeri 145
motor.setStepDuration(1); // Step motor ayarları
digitalWrite(8,HIGH); // On-off ışığı yansın.
lcd.init();
lcd.backlight();
lcd.print(“ElifShop”);
lcd.setCursor(11,1);
lcd.print(“0 TL”);
}

void loop() {

 

// ******************* POTANSİYOMETRE OKU FİYAT HESAPLA *******************
int deger = map(analogRead(A3),0,1023,0,100);
if (deger!=eskideger)
{
//fiyat = 0-deger+100; Potansiyometre ters bağlanırsa
fiyat=deger;
if (fiyat>80) fiyat=80;
delay(75);

lcd.setCursor(10,0);
lcd.print(” “);
lcd.setCursor(10,0);
lcd.print(fiyat);
lcd.setCursor(14,0);
lcd.print(“TL”);
eskideger=deger;
}

// *******************ÇEKMECE KIRMIZI BUTONUNA BASILDI*******************
if (digitalRead(4)== HIGH)
{

if (cekmeceacik==false)
{

cekmeceacik=true;
// Ödeme sesi çıkarma
tone(13,400);
delay(100);
tone(13,450);
delay(100);
tone(13,550);
delay(200);
noTone(13);

// LCD Ekran işlemleri

lcd.setCursor(0,1);
lcd.print(“NAKIT “);
delay(30);
kartservo.write(135);
// Toplamı sıfırlar LCD ye yazdır
toplam = 0;
lcd.setCursor(0,1);
lcd.print(” “);
lcd.print(“Toplam:”);
lcd.setCursor(10,1);
lcd.print(“0 “);
lcd.setCursor(14,1);
lcd.print(“TL”);

// Para çekmecesini aç
cekmeceservo.write(152);
delay(200);

motor.step(750);
}
else
{
cekmeceacik=false;
cekmeceservo.write(49);
delay(250);
}
}

 

// *******************KREDİ KARTI SARI BUTONUNA BASILDI*******************
if (digitalRead(5)== HIGH)
{
kartservo.write(67);

// Ödeme sesi çıkarma
tone(13,400);
delay(100);
tone(13,450);
delay(100);
tone(13,550);
delay(200);
noTone(13);

// LCD Ekran işlemleri

lcd.setCursor(0,1);
lcd.print(“K “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KR “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KRE “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KRED “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KREDI “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KREDI “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KREDI K “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KREDI KA “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KREDI KAR “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KREDI KART “);
delay(40);
lcd.setCursor(0,1);
lcd.print(“KREDI KARTI “);

//lcd.setCursor(0,1);
//lcd.print(“KREDI KARTI “);
delay(2500);
kartservo.write(135);
// Toplamı sıfırlar LCD ye yazdır
toplam = 0;
lcd.setCursor(0,1);
lcd.print(” “);
lcd.print(“Toplam:”);
lcd.setCursor(10,1);
lcd.print(“0 “);
lcd.setCursor(14,1);
lcd.print(“TL”);

tone(13,550);
delay(100);
tone(13,450);
delay(100);
tone(13,400);
delay(200);
noTone(13);

motor.step(750);

// Diğer işlemler buraya eklenebilir.
}

 

// *******************BARKOD OKUYUCUDA ÜRÜN ALGILANDI*******************
if (digitalRead(6)==LOW)
{
for(i=0;i<=15;i++)
{
digitalWrite(7,HIGH);
delay(25);
digitalWrite(7,LOW);
delay(25);
}
tone(13,630);
delay(180);
noTone(13);

toplam = toplam + fiyat;
lcd.setCursor(0,1);
lcd.print(“Toplam: “);
lcd.setCursor(10,1);
lcd.print(toplam);
lcd.setCursor(14,1);
lcd.print(“TL”);

motor.step(450);

}

}