I got some new hardware...esp8266 12 e. My sketch is meant to parse data from a web site that tracks the International space station and print it in my small OLED. I have it working but only doing one reading in the serial monitor, then disconnecting. Getting updates automatically is ideal, but first I am trying to print the coordinates to my OLED. I have made some code for this purpose...theres a header file too...listed after the main code excerpt.
Im getting 'display' does not name a type for an error. Ive fiddled a lot with semi colons and brackets, so I don't think that's the issue. Also I am confident I have all my libraries downloaded, because the sketch worked when I was just printing to serial monitor...and it also the same corresponding libraries worked when I was printing other stuff on my OLED in other sketches that had nothing to do with this project.
Here's my code: (the error is on the last line which is "display.display ();"
Im getting 'display' does not name a type for an error. Ive fiddled a lot with semi colons and brackets, so I don't think that's the issue. Also I am confident I have all my libraries downloaded, because the sketch worked when I was just printing to serial monitor...and it also the same corresponding libraries worked when I was printing other stuff on my OLED in other sketches that had nothing to do with this project.
Here's my code: (the error is on the last line which is "display.display ();"
MAIN code:
#include "USE_ESP8266.h"
#include <TimeLib.h>
char server [] = "api.open-notify.org";
void digitalClockDisplay();
#include <Adafruit_SSD1306.h>
#include <splash.h>
#include <Adafruit_GrayOLED.h>
#include <gfxfont.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <SPI.h>
#include <Wire.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
const int OLEDPin = D2;
void setup ()
{
display.begin(SSD1306_SWITCHCAPVCC, 0X3C);
display.clearDisplay ();
Serial.begin(115200);
if (!configureNetwork()) //start the network
{
Serial.println("Failed to configure the network");
while(1)
{
delay(0); //halt; ESP8266 does not like infinity loop without a delay
}
}
int ret = client.connect(server, 80);
if (ret == 1)
{
Serial.println("Connected");
client.println("GET /iss-now.json HTTP/1.0"); //the http request
client.print("Host: "); client.println(server);
client.println("Connection: close");
client.println();
}
else
{
Serial.println("Connection failed, error was: ");
Serial.print(ret, DEC);
while(1)
{
delay(0); //halt; esp8266 does not like infinite loop without a delay
}
}
}
char timestampMarker[] = "\"timestamp\":";
char posMarker[] = "\"iss_position\":";
void loop ()
{
if (client.available())
{
String id = client.readStringUntil('"');
if (id.equals("timestamp")) //start of timestamp
{
if (client.find(':')) //a ":" follows each identifier
{
unsigned long timestamp = client.parseInt();
setTime(timestamp);
digitalClockDisplay();
}
else
{
Serial.println("failed to parse timestamp.");
}
}
if (id.equals("iss_position")) //start of position data
{
if (client.find(':'))
{
while(client.peek () != '}' && client.find('"'))
{
String id = client.readStringUntil ('"');
float val = client.parseFloat ();
client.find ('"');
Serial.print(id + ":"); Serial.println(val, 4);
}
}
else
{
Serial.print("Failed to parse position data.");
}
}
}
if (!client.connected())
{
Serial.println();
Serial.println("disconnecting.");
client.stop();
while(1)
{
delay (0); //halt, esp8266 does not like loop w/o delay
}
}
}
String padDigits(int digit)
{
String str = String("0") + digit; //put a zero in front of digit
return str.substring(str.length() - 2);
}
void digitalClockDisplay ()
{
String datestr = String(year()) + "-" + padDigits(month()) +
"-" + padDigits(day());
String timestr = String(hour()) + ":" + padDigits(minute()) +
":" + padDigits(second());
Serial.println(datestr + " " + timestr);
}
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(datestr + " " + timestr);
display.display();
}
}
}
HEADER file:
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <Adafruit_SSD1306.h>
#include <splash.h>
#include <Adafruit_GrayOLED.h>
#include <gfxfont.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <SPI.h>
#include <Wire.h>
const char ssid[] = "Home25";
const char password[] = "6033216098";
WiFiClient client;
bool configureNetwork()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay (1000);
Serial.print("Waiting for connection to "); Serial.println(ssid);
}
return true;
}
Last edited by a moderator: