#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <EspSimpleWifiHandler.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
// ILI9341 TFT Pins
#define TFT_CS 10
#define TFT_DC 53
#define TFT_RST -1 // Reset not used
// Wi-Fi credentials
const char *ssid = "YOUR_SSID";
const char *password = "YOUR_PASSWORD";
// Crypto API URL
const char *cryptoApiUrl = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,litecoin&vs_currencies=usd";
// TFT Setup
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
// Function declarations
void displayCryptoPrices(float btcPrice, float ethPrice, float ltcPrice);
void fetchCryptoPrices();
void setupWiFi();
void setup() {
Serial.begin(115200);
// Initialize TFT
tft.begin();
tft.setRotation(3);
tft.fillScreen(ILI9341_BLACK);
// Setup Wi-Fi
setupWiFi();
// Fetch and display cryptocurrency prices
fetchCryptoPrices();
}
void loop() {
// Update prices every 30 seconds
delay(30000);
fetchCryptoPrices();
}
// Function to setup Wi-Fi
void setupWiFi() {
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20) {
delay(1000);
Serial.print(".");
attempts++;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("\nConnected to WiFi");
} else {
Serial.println("\nFailed to connect to WiFi");
}
}
// Function to fetch cryptocurrency prices from CoinGecko API
void fetchCryptoPrices() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(cryptoApiUrl);
int httpCode = http.GET();
if (httpCode > 0) {
String response = http.getString();
Serial.println("API Response: " + response); // Debug output
DynamicJsonDocument doc(1024);
DeserializationError error = deserializeJson(doc, response);
if (!error) {
float btcPrice = doc["bitcoin"]["usd"];
float ethPrice = doc["ethereum"]["usd"];
float ltcPrice = doc["litecoin"]["usd"];
displayCryptoPrices(btcPrice, ethPrice, ltcPrice);
} else {
Serial.println("JSON Parsing Error");
}
} else {
Serial.println("Failed to connect to API");
}
http.end();
} else {
Serial.println("WiFi not connected");
}
}
// Function to display cryptocurrency prices on the TFT display
void displayCryptoPrices(float btcPrice, float ethPrice, float ltcPrice) {
tft.fillScreen(ILI9341_BLACK);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.setCursor(10, 10);
tft.println("Crypto Prices");
tft.setTextSize(1);
tft.setCursor(10, 60);
tft.print("Bitcoin (BTC): $");
tft.println(btcPrice);
tft.setCursor(10, 100);
tft.print("Ethereum (ETH): $");
tft.println(ethPrice);
tft.setCursor(10, 140);
tft.print("Litecoin (LTC): $");
tft.println(ltcPrice);
}