Symbianize Forum

Most of our features and services are available only to members, so we encourage you to login or register a new account. Registration is free, fast and simple. You only need to provide a valid email. Being a member you'll gain access to all member forums and features, post a message to ask question or provide answer, and share or find resources related to mobile phones, tablets, computers, game consoles, and multimedia.

All that and more, so what are you waiting for, click the register button and join us now! Ito ang website na ginawa ng pinoy para sa pinoy!

arduino mega 2560 piso wifi code on demand

Mga sir/s eto ang code para sa NodeMCU pero kulang pa to irevise nyo na lang

#include <ESP8266TelnetClient.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

//Enter your Wifi details here (multiple SSIDs possible)


//put here your raspi ip address, and login details
IPAddress mikrotikRouterIp (10, 0, 0, 1);
const char* user = "admin";
const char* pwd = "password";

const char* ssid = "PisoWiFi";
const char* password = "";
String script;
String M_command;
ESP8266WiFiMulti WiFiMulti;
WiFiClient client;

ESP8266telnetClient tc(client);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int CoinCount=0;
int y=0;
int Hour=0;
int Min=0;
int Sec=0;
int Day=0;
int temp=0;
int StartTime=0;
int userCode=0;
int CantWaitTheCode=0;
int checktime=0;
// char const *c;

void ICACHE_RAM_ATTR CoinAccept()
{
y=0;
CoinCount++;
digitalWrite(LED_BUILTIN, LOW);


}
void ICACHE_RAM_ATTR ButtonPush()
{
if(CoinCount>=0)
{
CantWaitTheCode=1;
}
StartTime=millis();
digitalWrite(LED_BUILTIN, LOW);

}

void setup () {
Serial.begin (9600);
// We start by connecting to a WiFi network
WiFi.mode(WIFI_STA);
WiFiMulti.addAP(ssid, password);
attachInterrupt(D5, CoinAccept, RISING);
attachInterrupt(D6, ButtonPush, RISING);
pinMode(LED_BUILTIN, OUTPUT);

lcd.begin();
// lcd.init();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("Welcome to");
lcd.setCursor(1,1);
lcd.print("Piso Go WiFi");
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);

Serial.println();
Serial.println();
Serial.print("Wait for WiFi... ");

while (WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}

Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Connecting.... ");

//WHICH CHARACTER SHOULD BE INTERPRETED AS "PROMPT"?
tc.setPromptChar('>');

//this is to trigger manually the login
//since it could be a problem to attach the serial monitor while negotiating with the server (it cause the board reset)
//remove it or replace it with a delay/wait of a digital input in case you're not using the serial monitors
char key = 0;
Serial.println("\r\npress Enter to begin:");
do{
key = Serial.read();
}while(key<=0);

//PUT HERE YOUR USERNAME/PASSWORD
if(tc.login(mikrotikRouterIp, user, pwd)){ //tc.login(mikrotikRouterIp, "admin", "", 1234) if you want to specify a port different than 23


}


}

void loop () { // run your loop routine
digitalWrite(LED_BUILTIN, HIGH);
if (StartTime > 0)

{
lcd.setCursor(0,0);
lcd.print("COINS : ");
lcd.print(CoinCount);
lcd.print(" ");
temp=CoinCount*45;
Hour = floor(temp/3600);
temp %= 3600;
Min = floor(temp/60);
Sec = temp % 60;
Day = floor(Hour/24);
lcd.setCursor(0,1);
lcd.print(Day);
lcd.print("D:");
lcd.print(Hour);
lcd.print("H:");
lcd.print(Min);
lcd.print("M:");
lcd.print(Sec);
lcd.print("S:");
lcd.print("S ");

checktime = millis()-StartTime;
if(((CoinCount>0) && (checktime>=15000)) || ((CantWaitTheCode==1) && (CoinCount>0)) )

{
Serial.println("the value is:");
Serial.println(CoinCount);
userCode=random(1000,10000);
M_command = "ip hotspot user add name=";
M_command += userCode;
M_command += " limit-uptime=";
M_command += temp;
int command_len = M_command.length() + 1;
char M_F_command[command_len];
M_command.toCharArray(M_F_command, command_len);
tc.sendCommand(M_F_command);
lcd.setCursor(0,0);
lcd.print(" Piso Go Wifi");
lcd.setCursor(0,1);
lcd.print(" CODE: ");
lcd.print(userCode);
lcd.print(" ");
delay(15000);
CoinCount=0;
StartTime=0;
}
else
//if (checkTime>=15000)
{
CoinCount=0;
StartTime=0;
lcd.setCursor(0,0);
lcd.print("No Coin Inserted");
lcd.setCursor(0,1);
lcd.print("Please Try Again");
delay(1500);
}
CantWaitTheCode=0;
}
}
 
Last edited:
Mga Sir saan kaya ang problema pag hndi narereceved ni mikrotik ang tc.sendcommand(script)

Pero nkaka Log in nmn ako.

Salamat mga Sir
 
Mga Sir saan kaya ang problema pag hndi narereceved ni mikrotik ang tc.sendcommand(script)

Pero nkaka Log in nmn ako.

Salamat mga Sir

tama ba un user at password? ano gamit mo sa pag login, post pic.
 
Last edited:
Boss pwd kaya i convert code mo from mega to ESP8266.

- - - Updated - - -

Salamat po dito susubukan ko ito, same lng po b sila ng diagram?
 
Bro, baka pwede attached mo na din ang mga required libraries? :)

btw, salamat ng marami sa code!!!
 
boss,, how put this code,,

sa peso wifi,, ??
thank you po
 
post mo un code na ginamit mo baka di yan un updated

Good day TS, sorry medyo natagalan mag update. Ito pala yung code na ginamit ko revised from ver. 1 & 2. Ok naman ang result. Problema ko nalang kung paano i edit yung rates. Tapos automatic pause pala yung time ng client kapag hindi na sya naka connect. Pwede kayang magawan ng script yun sa scheduler? Para continues running time ang pag consume. Thank you!


#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 float 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[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress clientIp (192, 168, 3, 31);

//put here your router's ip address
IPAddress mikrotikRouterIp (192, 168, 3, 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 hotspot");

delay(5000);

digitalWrite(disablepin, HIGH);

Serial.begin(9600);

while (!Serial) {
;

// wait for serial port to connect. Needed for Leonardo and Due
}

Entropy.initialize();

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

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

lcd.clear ();

}
void coinInterrupt() {

coins ++;
startMillis = millis(); //initial start time
}
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(5, 0);
lcd.print(" HotSpot");
lcd.setCursor(3, 2);
lcd.print(" Press Button ");
lcd.setCursor(5, 3);
lcd.print(" to Start ");

while (digitalRead(buttonpin) == LOW) {

interval = 1000;
blinker();
}
lcd.clear ();

gate = 1;
coins = 0;

}

if ((gate == 1) && (start == 0)) {
digitalWrite(disablepin, HIGH);
digitalWrite(ledpin, LOW);
}
if (coins < 1) {
//Serial.println("Please Insert Coin");
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(3, 1);
lcd.print(" Insert Coins ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
currentMillis = millis(); //get the current time

if ((coins > 0) && (currentMillis - startMillis >= 100)) { Dito na po ako nalilito, hehe

if (coins < 5) {
mins = coins * 10; // 10min/peso
}
if (coins >= 5 && coins < 10) {
mins = coins * 12; // 12min/peso
}
if (coins >= 10 && coins < 15) {
mins = coins * 13; // 13min/peso
}
if (coins >= 15) {
mins = coins * 25; // 30min/peso
}
if (coins >= 20) {
mins = coins * 30; // 35min/peso
}
if (coins >= 30) {
mins = coins * 35; // 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(); //get the current time
if ((coins > 0) && (currentMillis - startMillis >= 12000)) {
lcd.setCursor(0, 2);
lcd.print(" Press Button to");
lcd.setCursor(0, 3);
lcd.print(" Generate Code");
}
currentMillis = millis(); //get the current time
if ((coins > 0) && (currentMillis - startMillis >= 12000)) {
digitalWrite(disablepin, LOW);
digitalWrite(ledpin, HIGH);
while (digitalRead(buttonpin) == LOW) {
interval = 150;
blinker();
lcd.clear();
//do nothing
}
digitalWrite(ledpin, LOW);
seed_value = Entropy.random();
//Serial.println(seed_value);
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)) {
Serial.println("\r\nDHCP error");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("DCHP error");
lcd.setCursor(0, 1);
lcd.print(coins);

while (1);

}

tc.setPromptChar('>');

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

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;
digitalWrite(disablepin, HIGH);
}
}
}
 
Last edited:
every peso counts, may price range lng, kng ang cust naghulog from 1-4 peso imultiply nya yun at 10min per peso, kaya kng ang gusto palitan un rate need mo palitan un x10

same sa mga sumunod na rates, sa nakita kong mga rates meron 12min/peso, 13min/peso etc
 
ganito din pinagkakaabalahan ko.. merun palang thread na ganito dito.. halos buo na sakin ang prob kolang ambagal maggenerate ng code.. baka my secret jan mga sir paturo naman po..
 
ganito din pinagkakaabalahan ko.. merun palang thread na ganito dito.. halos buo na sakin ang prob kolang ambagal maggenerate ng code.. baka my secret jan mga sir paturo naman po..

im not sure how you generate your codes, pero ang nakakabagal ay kng delay ang gamit mo, use millis instead
 
baka may existing na kayu jan tulungan ko kayu mga sir.. up natin.. busy na kasi sa work
 
Back
Top Bottom