Sketch
Sketch
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <LiquidCrystal_I2C.h>
int previousValue = 0;
int threshold = 1;
int lastKnown = 0;
// WiFi settings
const char* ssid = "Pergunta";
const char* password = "Eurespondo";
// API server
const char* host = "api.coindesk.com";
void setup() {
// Serial
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
void loop() {
// Connect to API
Serial.print("connecting to ");
Serial.println(host);
client.stop();
Serial.println();
Serial.println("closing connection");
// Process answer
Serial.println();
Serial.println("Answer: ");
Serial.println(answer);
// Convert to JSON
String jsonAnswer;
int jsonIndex;
// Print price
Serial.println();
Serial.println("Bitcoin price: ");
Serial.println(price);
lcd.setCursor(0, 0);
lcd.print("Bitcoin!!");
lcd.setCursor(11, 0);
lcd.print("$ USD");
lcd.setCursor(1, 1);
lcd.print("$");
if (price > 5000) {lastKnown = price;} // Is price greater than 5000,
save last price.
if (price == 0) {lcd.print(lastKnown);} // Print BTC price
else lcd.print(lastKnown);
lcd.setCursor(11, 1);
lcd.print(voltage);
lcd.print("V");
// Wait 1 seconds
delay(1000);
}
-----------------------------------------------------------------------------------
--------------------------------------------------
Biticoin_LED_SSD1306
#include <Adafruit_SSD1306.h>
//Include the required libraries
#include <WiFi.h>
#include <Wire.h>
#include <HTTPClient.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <ArduinoJson.h>
WiFiClient client;
//Create a new WiFi client
HTTPClient http;
String formattedDate;
//Create variables to store the date and time
String dayStamp;
String timeStamp;
void setup()
{
Serial.begin(115200);
//Start the serial monitor
pinMode(upLED, OUTPUT);
//Define the LED pin outputs
pinMode(downLED, OUTPUT);
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
//Connect to the display
{
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}
display.clearDisplay();
//Clear the display
display.setTextColor(SSD1306_WHITE); //Set
the text colour to white
display.drawBitmap(0, 0, bitcoinLogo, 128, 64, WHITE);
//Display bitmap from array
display.display();
delay(2000);
display.clearDisplay();
//Clear the display
display.setTextSize(1); //Set
display parameters
display.setTextColor(WHITE);
display.println("Connecting to WiFi...");
display.display();
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi...");
while (WiFi.status() != WL_CONNECTED)
//Connect to the WiFi network
{
delay(500);
Serial.print(".");
}
Serial.println();
void loop()
{
Serial.print("Connecting to ");
//Display url on Serial monitor for debugging
Serial.println(url);
http.begin(url);
int httpCode = http.GET();
//Get crypto price from API
StaticJsonDocument<2000> doc;
DeserializationError error = deserializeJson(doc, http.getString());
if (error)
//Display error message if unsuccessful
{
Serial.print(F("deserializeJson Failed"));
Serial.println(error.f_str());
delay(2500);
return;
}
Serial.print("Getting history...");
StaticJsonDocument<2000> historyDoc;
http.begin(historyURL);
//Get historical crypto price from API
int historyHttpCode = http.GET();
DeserializationError historyError = deserializeJson(historyDoc,
http.getString());
if (historyError) {
//Display error message if unsuccessful
Serial.print(F("deserializeJson(History) failed"));
Serial.println(historyError.f_str());
delay(2500);
return;
}
display.clearDisplay();
//Clear the OLED display
display.setTextSize(1);
printCenter("BTC/USD", 0, 0);
//Display the comparison header
display.setTextSize(2);
printCenter("$" + BTCUSDPrice, 0, 20);
//Display the current price
display.setTextSize(1);
//Display the change percentage
dayChangeString = dayChangeString + percentChange + "%";
printCenter(dayChangeString, 0, 55);
display.display();
//Execute the new display
http.end();
//End the WiFi connection
esp_sleep_enable_timer_wakeup(900000000);
//Sleep for 15 minutes
}