Woops, didn't see these replies.
KermMartian wrote:
One of the first things you could try is using ArTICL with your calculator, starting with some of the example programs and seeing what else you can make them do. That might give you some ideas about what you might want to interface to your calculator as an internal module. Keep in mind that some of the most popular mods from the Ultimate Calculators and other projects, like speakers, a PS/2 port, a touchpad, and so on do not require an Arduino, so you might have to be creative.
Regarding the LCD, can you find out the model number, and thence find a datasheet? That will be key for developing a driver to interface with the LCD.
I do want to work on getting my CSE connected using ArTICL, and with the addition of those videos, I shouldn't have much of a problem.
Regarding the Casio LCD, I'll take a look at that.
And among other things, I created CircleIt on the Arduino using my Adafruit LCD.
Video:
https://www.youtube.com/watch?v=QYDW2biWEUs
Code:
#include <Adafruit_GFX.h> // Core graphics library
#include <SPI.h> // this is needed for display
#include <Adafruit_ILI9341.h>
#include <Wire.h> // this is needed for FT6206
#include <Adafruit_FT6206.h>
// The FT6206 uses hardware I2C (SCL/SDA)
Adafruit_FT6206 ctp = Adafruit_FT6206();
// The display also uses hardware SPI, plus #9 & #10
#define TFT_CS 10
#define TFT_DC 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
int oldcolor, currentcolor;
int radius = 65;
int score;
int highscore;
void setup(void) {
while (!Serial); // used for leonardo debugging
Serial.begin(115200);
Serial.println(F("Cap Touch Paint!"));
tft.begin();
if (! ctp.begin(40)) { // pass in 'sensitivity' coefficient
Serial.println("Couldn't start FT6206 touchscreen controller");
while (1);
}
Serial.println("Capacitive touchscreen started");
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(27,130);
tft.setTextSize(4);
tft.setTextColor(ILI9341_PINK);
tft.print("CircleIt");
tft.setCursor(27,165);
tft.setTextSize(2);
tft.setTextColor(ILI9341_GREEN);
tft.print("Highscore: ");
tft.print(highscore);
while (1) {
if (ctp.touched()){
tft.fillScreen(ILI9341_BLACK);
tft.fillCircle(120,166,50,ILI9341_PINK);
tft.drawCircle(120,166,51,ILI9341_BLUE);
tft.drawCircle(120,166,52,ILI9341_BLUE);
tft.drawCircle(120,166,53,ILI9341_BLUE);
tft.drawCircle(120,166,54,ILI9341_BLUE);
tft.drawCircle(120,166,55,ILI9341_BLUE);
tft.setTextSize(2);
tft.setTextColor(ILI9341_GREEN);
tft.setCursor(1,1);
tft.fillRect(1,1,100,15,ILI9341_BLACK);
tft.print("Score: ");
tft.print(score);
return;
}
}
}
void loop() {
// Retrieve a point
TS_Point p = ctp.getPoint();
// flip it around to match the screen.
p.x = map(p.x, 0, 240, 240, 0);
p.y = map(p.y, 0, 320, 320, 0);
Serial.print("(");
Serial.print(p.x);
Serial.print(", ");
Serial.print(p.y);
Serial.println(")");
tft.drawCircle(120,166,radius,ILI9341_YELLOW);
if (radius <= 50){
tft.drawCircle(120,166,radius,ILI9341_PINK);
}
if (radius > 50 && radius <= 55){
tft.drawCircle(120,166,radius,ILI9341_BLUE);
}
if (radius > 55){
tft.drawCircle(120,166,radius,ILI9341_BLACK);
}
if (ctp.touched() && radius <= 50 || ctp.touched() && radius > 55) {
if (score > highscore)
highscore = score;
tft.fillScreen(ILI9341_BLACK);
tft.setTextSize(2);
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(1,1);
tft.println("GAME OVER");
tft.setTextColor(ILI9341_ORANGE);
tft.println("tap to play again.");
tft.setCursor(1,37);
tft.setTextColor(ILI9341_GREEN);
tft.print("Highscore: ");
tft.print(highscore);
tft.setTextColor(ILI9341_PURPLE);
tft.setCursor(1,53);
tft.print("Score: ");
tft.println(score);
score = 0;
while (1) {
if (ctp.touched()){
radius = 65;
tft.fillScreen(ILI9341_BLACK);
tft.fillCircle(120,166,50,ILI9341_PINK);
tft.drawCircle(120,166,51,ILI9341_BLUE);
tft.drawCircle(120,166,52,ILI9341_BLUE);
tft.drawCircle(120,166,53,ILI9341_BLUE);
tft.drawCircle(120,166,54,ILI9341_BLUE);
tft.drawCircle(120,166,55,ILI9341_BLUE);
tft.setTextSize(2);
tft.setTextColor(ILI9341_GREEN);
tft.setCursor(1,1);
tft.fillRect(1,1,100,15,ILI9341_BLACK);
tft.print("Score: ");
tft.print(score);
return;
}
}
}
if (ctp.touched() && radius <= 55 || ctp.touched() && radius > 50) {
score++;
tft.setTextSize(2);
tft.setTextColor(ILI9341_GREEN);
tft.setCursor(1,1);
tft.fillRect(1,1,100,15,ILI9341_BLACK);
tft.print("Score: ");
tft.print(score);
}
radius--;
radius--;
radius--;
if (radius <= 1){
radius = 65;
}
}
Its great fun, and I'm thinking about what to do next with these things.
Oh yeah, I got a hc-05 Bluetooth module from my robotics teacher and got that working with an arduino using the arduino IDE's built in serial port.
I decided to make it a little more fancy and create a ruby program to interface with it. But, I got a permissions error of some sort when trying to interface with the Bluetooth. But, when trying to interface with an arduino everything worked fine. I asked about it here: http://stackoverflow.com/questions/35190016/bluetooth-serial-port-permission-error-errnoeacces-ruby-serialport-gem