Compression code

Can you compress or arrange my code to small characters my code is working i just want to arrange it thank you
This is my code

#include <Servo.h>
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
static const uint8_t PIN_MP3_TX = 0; // D0
static const uint8_t PIN_MP3_RX = 1; // D6
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);

DFRobotDFPlayerMini player;

Servo microservo1;
Servo microservo2;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16,2);
#define coinslot 8
#define buzzer 2
#define button 3
#define button2 4

int coinslotstatus;
int pulse;
boolean userbalance = false;
boolean nocoin = false;
int requiredcoins = 5;
int requiredcoins2 = 5;
int buttonstate;
int buttonstate2;
int led1 = 6;
int led2 = 7;
int relaypin = 5;

void setup() {

microservo1.attach(9);
microservo2.attach(10);
softwareSerial.begin(9600);
if (player.begin(softwareSerial))
{

player.volume(28); 

}

lcd.init();
lcd.backlight();
lcd.clear();
pinMode(buzzer, OUTPUT);
pinMode(relaypin,OUTPUT);
pinMode(coinslot, INPUT_PULLUP);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(button, OUTPUT);
pinMode(button2, OUTPUT);
delay(1000);

}

void loop() {

if(!nocoin){
nocoin = true;
lcd.setCursor(0,0);
lcd.print(" INSERT COIN");
player.play(4);
delay(1000);
digitalWrite (relaypin,LOW);
digitalWrite (led1,LOW);
digitalWrite (led2,LOW);

}
buttonstate = digitalRead(button);
buttonstate2 = digitalRead(button2);

if(pulse >= requiredcoins){
digitalWrite (led1,HIGH);
digitalWrite (led2,HIGH);
}

if(buttonstate == 1 && pulse < requiredcoins){

player.play(1);
delay(1000);

}
if(buttonstate2 == 1 && pulse < requiredcoins2){

player.play(1);
delay(1000);

}

if(buttonstate == 1 && pulse > 0 && userbalance && pulse >= requiredcoins)
{
lcd.clear();
digitalWrite (relaypin,HIGH);
tone(buzzer, 3000);
delay(50);
noTone(buzzer);
delay(50);
tone(buzzer, 3000);
delay(50);
noTone(buzzer);
delay(50);

lcd.setCursor(0,0);
lcd.print("PLEASE WAIT.");
delay(200);
lcd.setCursor(0,0);
lcd.print("PLEASE WAIT..");
delay(200);
lcd.setCursor(0,0);
lcd.print("PLEASE WAIT...");
delay(200);

microservo1.write(90);
delay(50);
microservo1.write(75);
delay(50);
microservo1.write(90);
delay(50);
microservo1.write(75);
delay(50);
microservo1.write(90);
delay(50);
microservo1.write(75);
delay(50);
microservo1.write(90);
delay(50);
microservo1.write(75);
delay(50);
microservo1.write(90);
delay(50);
microservo1.write(75);
delay(50);
microservo1.write(5);
delay(50);
microservo1.write(20);
delay(50);
microservo1.write(5);
delay(50);
microservo1.write(20);
delay(50);
microservo1.write(5);
delay(50);
microservo1.write(20);
delay(50);
microservo1.write(5);
delay(50);
microservo1.write(20);
delay(50);
microservo1.write(5);
delay(50);
microservo1.write(20);
delay(50);
microservo1.write(5);
delay(50);
microservo1.write(20);
delay(50);
microservo1.write(5);
delay(50);
microservo1.write(20);
delay(100);
microservo1.write(5);
delay(100);
microservo1.write(20);
delay(100);
microservo1.write(5);
delay(100);
microservo1.write(20);
delay(100);
microservo1.write(5);
delay(100);
microservo1.write(20);
delay(100);
microservo1.write(5);
delay(100);
microservo1.write(20);
delay(100);
microservo1.write(5);
delay(100);
microservo1.write(20);
delay(100);
microservo1.write(90);
delay(1000);
player.play(2);
delay(1000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("  THANK YOU!!");
delay(500);
tone(buzzer, 3000);
delay(200);
noTone(buzzer);
delay(50);
tone(buzzer, 3000);
delay(50);
noTone(buzzer);
delay(1000);

pulse = 0;
nocoin = false;

}

if(buttonstate2 == 1 && pulse > 0 && userbalance && pulse >= requiredcoins2)
{
lcd.clear();
digitalWrite (relaypin,HIGH);
tone(buzzer, 3000);
delay(50);
noTone(buzzer);
delay(50);
tone(buzzer, 3000);
delay(50);
noTone(buzzer);
delay(50);

lcd.setCursor(0,0);
lcd.print("PLEASE WAIT.");
delay(200);
lcd.setCursor(0,0);
lcd.print("PLEASE WAIT..");
delay(200);
lcd.setCursor(0,0);
lcd.print("PLEASE WAIT...");
delay(200);

microservo2.write(90);
delay(50);
microservo2.write(75);
delay(50);
microservo2.write(90);
delay(50);
microservo2.write(75);
delay(50);
microservo2.write(90);
delay(50);
microservo2.write(75);
delay(50);
microservo2.write(90);
delay(50);
microservo2.write(75);
delay(50);
microservo2.write(90);
delay(50);
microservo2.write(75);
delay(50);
microservo2.write(90);
delay(50);
microservo2.write(75);
delay(50);
microservo2.write(10);
delay(50);
microservo2.write(30);
delay(50);
microservo2.write(10);
delay(50);
microservo2.write(30);
delay(50);
microservo2.write(10);
delay(50);
microservo2.write(30);
delay(50);
microservo2.write(10);
delay(50);
microservo2.write(30);
delay(50);
microservo2.write(10);
delay(50);
microservo2.write(30);
delay(50);
microservo2.write(10);
delay(50);
microservo2.write(30);
delay(50);
microservo2.write(10);
delay(50);
microservo2.write(30);
delay(50);
microservo2.write(10);
delay(100);
microservo2.write(30);
delay(100);
microservo2.write(10);
delay(100);
microservo2.write(30);
delay(100);
microservo2.write(10);
delay(100);
microservo2.write(30);
delay(100);
microservo2.write(10);
delay(100);
microservo2.write(30);
delay(100);
microservo2.write(10);
delay(100);
microservo2.write(30);
delay(100);
microservo2.write(10);
delay(100);
microservo2.write(30);
delay(100);
microservo2.write(90);
delay(1000);
player.play(2);
delay(1000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("  THANK YOU!!");
delay(500);
tone(buzzer, 3000);
delay(200);
noTone(buzzer);
delay(50);
tone(buzzer, 3000);
delay(50);
noTone(buzzer);
delay(1000);
pulse = 0;
nocoin = false;

}
coinslotstatus = digitalRead(coinslot);
delay(30);
if (coinslotstatus == 0)
{
tone(buzzer, 2000);
userbalance = true;
lcd.setCursor(0,0);
lcd.print(" PRESS A BUTTON");
pulse += 1;
lcd.setCursor(0,1);
lcd.print("Php ");
lcd.print(pulse);
lcd.print(".00");
delay(30);
}
noTone(buzzer);

}

Please edit your post to add code tags. See the "How to get the best out of this forum" post for hints and instructions.

@shinkiromove - when you repeat lines of code over and over without differences, you should think about using a for loop.

So one of those long lists of statements servoing and delaying could just be

  for (int ii = 0; ii < 5; ii++) {
    microservo2.write(90);
    delay(50);
    microservo2.write(75);
    delay(50);
  }
  
  for (int ii = 0; ii < 7; ii++) {
    microservo2.write(10);
    delay(50);
    microservo2.write(30);
    delay(50);
  }
  
  for (int ii = 0; ii < 6; ii++) {
    microservo2.write(10);
    delay(100);
    microservo2.write(30);
    delay(100);
  }

  microservo2.write(90);
  delay(1000);

with a bit of work it could be shorter, but see if you can figure this much out.

a7

Yes, exactly.

And when you repeat lines of code with only a difference in a value, then you should use a for loop and have arrays to hold the different values.

But please help us keep the forum tidy and fix your first post by adding code tags

Do your part…

Use "Copy for Forum" in the IDE and paste your code here.

@shinkiromove Why did you flag your topic as "Off Topic" ?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.