🔒 Closed Arduino mega 2560 piso wifi code on demand

Status
Not open for further replies.

mas18ram

Forum Master
DELETE nalang po kung bawal Admin,

SANA DI MAKATAY un code,

generates 4 digit user name with blank password according to the amount put in and adds the user to mikrotik default hotspot,

di po ako programmer dahil lang po ito sa ECQ kaya nakagawa,


UPDATED v1


#include <SPI.h>
#include <Wire.h>
#include <Entropy.h>
#include <Ethernet.h>
#include <TelnetClient.h>
#include <LiquidCrystal_I2C.h>

#define randomSeed(s) srandom(s)

unsigned int mins = 0;
unsigned int hours = 0;
unsigned int days = 0;
unsigned int newmins = 0;
unsigned int newhours = 0;
int buttonPress = 0;
int ledState = LOW;
int gate = 0;
int interval = 0;
int start = 0;

const int ledpin = 5;
const int coinpin = 2;
const int buttonpin = 3;
const int disablepin = 4;

volatile int coins = 0;

unsigned long startMillis = 0;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;

String script;

uint32_t seed_value;

char letters[36] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};

LiquidCrystal_I2C lcd(0x27, 20, 4);

EthernetClient client;
telnetClient tc(client);

byte clientMAC[] = { 0xAB, 0xBC, 0xCD, 0xDE, 0xEF, 0xFA };
IPAddress clientIp (192, 168, 88, 2);

//put here your router's ip address
IPAddress mikrotikRouterIp (192, 168, 88, 1);


void setup() {

pinMode(buttonpin, INPUT);
pinMode(ledpin, OUTPUT);
pinMode(disablepin, OUTPUT);

lcd.begin();
lcd.backlight();

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("initializing....");
lcd.setCursor(0, 2);
lcd.print(" by asantos1");

delay(3000);

digitalWrite(disablepin, HIGH);

Serial.begin(9600);

while (!Serial) {
;
}

Entropy.initialize();

pinMode(buttonpin, INPUT);
pinMode(ledpin, OUTPUT);
pinMode(disablepin, OUTPUT);

lcd.clear();

attachInterrupt(digitalPinToInterrupt(coinpin), coinInterrupt, RISING);

}
void coinInterrupt() {

coins ++;
startMillis = millis();

}
void blinker() {

unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= interval) {

previousMillis = currentMillis;

if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}

digitalWrite(ledpin, ledState);
}
}

void loop() {

if (gate == 0) {

digitalWrite(disablepin, LOW);

lcd.setCursor(0, 1);
lcd.print(" Press Button ");
lcd.setCursor(0, 2);
lcd.print(" to Start ");

while (digitalRead(buttonpin) == LOW) {

interval = 1000;
blinker();
}

gate = 1;
coins = 0;

}

if ((gate == 1) && (start == 0)) {

digitalWrite(disablepin, HIGH);
digitalWrite(ledpin, LOW);

lcd.setCursor(0, 1);
lcd.print(" Insert Coin ");
lcd.setCursor(0, 2);
lcd.print(" ");

start = 1;
startMillis = millis();
}

currentMillis = millis();

if ((start == 1) && (coins < 1) && (currentMillis - startMillis >= 15000)) {

gate = 0;
start = 0;

}

if ((start == 1) && (coins > 0) && (currentMillis - startMillis >= 100)) {

// ADJUST RATES HERE
if (coins < 5) {
mins = coins * 10; // 15min/peso
}
if (coins >= 5 && coins < 10) {
mins = coins * 20; // 20min/peso
}
if (coins >= 10 && coins < 15) {
mins = coins * 30; // 30min/peso
}
if (coins >= 15) {
mins = coins * 45; // 45min/peso
}
hours = floor(mins / 60);
days = floor(hours / 24);
newhours = hours - (days * 24);
newmins = mins - (hours * 60);

Serial.println(coins);
Serial.println(days);
Serial.println(newhours);
Serial.println(newmins);

lcd.setCursor(0, 0);
lcd.print(" Credit: ");
lcd.print(coins, 0);
lcd.print(".00 ");

lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(days);
lcd.print(" day ");
lcd.print(newhours);
lcd.print(" hr ");
lcd.print(newmins);
lcd.print(" min");



}

currentMillis = millis();

if ((coins > 0) && (currentMillis - startMillis >= 10000)) {

lcd.setCursor(0, 2);
lcd.print(" Press Button to");
lcd.setCursor(0, 3);
lcd.print(" Generate Code");

}

currentMillis = millis();

if ((coins > 0) && (currentMillis - startMillis >= 11000)) {

digitalWrite(disablepin, LOW);

while (digitalRead(buttonpin) == LOW) {
interval = 150;
blinker();

}
digitalWrite(ledpin, LOW);

seed_value = Entropy.random();

randomSeed(seed_value);

char c[2] = {letters[random(36)]};
char o[2] = {letters[random(36)]};
char d[2] = {letters[random(36)]};
char e[2] = {letters[random(36)]};

lcd.setCursor(0, 0);
lcd.print(" CODE GENERATED ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.print(c);
lcd.print(" ");
lcd.print(o);
lcd.print(" ");
lcd.print(d);
lcd.print(" ");
lcd.print(e);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" ");

script = "/ip hotspot user add name=";
script += c;
script += o;
script += d;
script += e;
script += " limit-uptime=";
script += mins;
script += "m profile=hotspot";
int script_len = script.length() + 1;
char mscript[script_len];
script.toCharArray(mscript, script_len);

Ethernet.begin (clientMAC);

//want to use dhcp?
if (!Ethernet.begin (clientMAC)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("DCHP error ");
lcd.setCursor(0, 1);
lcd.print(coins);

while (1);

}

tc.setPromptChar('>');

//CHANGE HERE YOUR USERNAME/PASSWORD
if (tc.login(mikrotikRouterIp, "admin", "asantos1")) {

delay(1000);

tc.sendCommand(mscript);

delay(5000);

tc.disconnect();

lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(c);
lcd.print(" ");
lcd.print(o);
lcd.print(" ");
lcd.print(d);
lcd.print(" ");
lcd.print(e);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" THANK YOU ");

delay(10000);

lcd.clear();
coins = 0;
gate = 0;
start = 0;
}
}
}

sana makatulong sa inyo,

FEEDBACK narin kng umandar sa inyo

salamat
 
Status
Not open for further replies.

About this Thread

  • 67
    Replies
  • 9K
    Views
  • 32
    Participants
Last reply from:
fraiyah

Trending Topics

Online now

Members online
608
Guests online
4,510
Total visitors
5,118

Forum statistics

Threads
2,327,209
Posts
29,233,413
Members
1,164,815
Latest member
absamie
Back
Top