MOVE Program

MOVE is a very basic program. Almost everyone has made a similar program at least once before. It is intended for educational purposes, and for people who don’t have enough time to make it themselves, but need it for a larger program (or I guess by itself). It is a good program to have backed up somewhere, but it’s not really worth keeping on your calculator all the time (only when you’re using it).

Check it Out!

-ZachGreen

Phyiscal Wi-Fi Messenger… IoT

I have plans to make a simple WiFi messenger. There will be two ‘computers.’ A keyboard (with the enlightenment of a 1602 LCD) will input some simple text to a Wemos D1 board. Which in turn will send the text to a server (through server.send). Then the other computer’s LCD will receive the text on the server… The LCDs will always display the last Message sent.

So far I have uploaded a sketch that takes some text input from the Serial Monitor (baud rate 115200) and sends it to a server. I have also just ordered a USB port shield for the Wemos D1 Found Here that should accept the keyboard input in the future.

In other words, I don’t plan to use the serial monitor once I get my USB Host shield.

Update: Just got my USB Host so stuff is about to get lit!

 

This is the code I uploaded to the Wemos Board:

#include
#include
#include
#include

const char* ssid = “WiFi Name with Quotes”;
const char* password = “Password with Quotes”;
const byte numChars = 255;
char receivedChars[numChars];

boolean newData = false;

ESP8266WebServer server(80);

const int led = 13;

void handleNotFound() {
digitalWrite(led, 1);
String message = “File Not Found\n\n”;
message += “URI: “;
message += server.uri();
message += “\nMethod: “;
message += (server.method() == HTTP_GET) ? “GET” : “POST”;
message += “\nArguments: “;
message += server.args();
message += “\n”;
for (uint8_t i = 0; i < server.args(); i++) { message += ” ” + server.argName(i) + “: ” + server.arg(i) + “\n”; } server.send(404, “text/plain”, message); digitalWrite(led, 0); } void setup(void) { pinMode(led, OUTPUT); digitalWrite(led, 0); Serial.begin(115200); Serial.println(“What do you want to send?”); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(“”); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(“.”); } Serial.println(“”); Serial.print(“Connected to “); Serial.println(ssid); Serial.print(“IP address: “); Serial.println(WiFi.localIP()); if (MDNS.begin(“esp8266”)) { Serial.println(“MDNS responder started”); } server.on(“/”, handleRoot); server.on(“/inline”, []() { server.send(200, “text/plain”, “this works as well”); }); server.onNotFound(handleNotFound); server.begin(); Serial.println(“HTTP server started”); } void loop(void) { server.handleClient(); recvWithEndMarker(); showNewData(); } void recvWithEndMarker() { static byte ndx = 0; char endMarker = ‘\n’; char rc; while (Serial.available() > 0 && newData == false) {
rc = Serial.read();

if (rc != endMarker) {
receivedChars[ndx] = rc;
ndx++;
if (ndx >= numChars) {
ndx = numChars – 1;
}
}
else {
receivedChars[ndx] = ‘\0’; // terminate the string
ndx = 0;
newData = true;
}
}
}

void showNewData() {
if (newData == true) {
Serial.print(“Sent… “);
Serial.println(receivedChars);
newData = false;
}
}

void handleRoot() {
digitalWrite(led, 1);
server.send(200, “text/plain”, receivedChars);
digitalWrite(led, 0);
}

If you use this board be sure to install the ESP library (google it), and put your own WiFi name and password.

Then open up serial monitor and set baud rate to 115200 press reset on the Wemos Board to see results!

Comment if you have any suggestions or ideas…

This post will be updated regularly. It is not finished!

BBC BASIC (Z80) For TI-83 Plus

For those of you who haven’t tried BBC BASIC on your TI calculator you really need to:

BBC BASIC (Z80)

There are only a few programs for it, but I think it has a lot of potential.

BBC BASIC Programs

I have made a few programs using BBC BASIC, but I mostly want to pursue SIRC, if you read this you will understand that your calculator can be used as a remote control.

Sony Serial Infrared Remote Control System (SIRCS.DEV)

By attaching a suitable adapter to the calculator’s data port you can send and receive commands to and from SIRCS-compatible devices.

Most of the hard work is done in software so the adapter is very easy to build. No responsibility is accepted for any damage to your calculator as a result of using an adapter built from the above diagram.

Receiving command codes from a remote control is straightforwards. Each command code is 7 bits and can be read using BGET#:

sircs%=OPENIN"SIRCS.DEV"
command%=BGET#sircs%

Program execution will pause at BGET# until a command has been received.

A SIRCS remote control will transmit a device code along with the command code to tie the remote control to the device it is meant to be controlling. You can get or set the device code via PTR#.

The SIRCS protocol exists in 12-, 15- and 20-bit variations. Most common devices use the 12-bit variant. The PlayStation 2 console, however, uses the 20-bit variation. You can get or set the number of bits using EXT#.

The following program will wait for a command to be received from a remote control then display information on the screen about the data received.

sircs%=OPENIN"SIRCS.DEV"
REPEAT
  C%=BGET#sircs%
  CLS
  PRINT "Command",~C%
  PRINT "Device ",~PTR#sircs%
  PRINT "Size   ",EXT#sircs%
UNTIL FALSE

To send a “cross” command (&5E) to a PlayStation 2 console (a 20-bit device with the code &1B5A) you could do the following:

sircs%=OPENOUT"SIRCS.DEV"
EXT#sircs%=20    : REM Sending 20-bit commands.
PTR#sircs%=&1B5A : REM PS/2 console has a device code of &1BFA
BPUT#sircs%,&5E  : REM &5E is the command code for "X".

Each command is transmitted six times in rapid succession for reliability.

See the SIRCS Command and Device Codes appendix for more information.

Now, I know most of you won’t understand all this code, I don’t understand some of it either. I am going to write a seperate post about SIRC, and try to decipher some of it!

I hope some of you try BBC BASIC it’s pretty cool.

If you want help with BBC BASIC you can email me at: zachgreen2018@outlook.com

 

MATRIX

Just posted MATRIX on ticalc.org!

Try It Out!