I am trying to write to the adafruit display using Arduino MKR1500 when it is connected to the internet. The issue I am facing is when I add the code to connect to the cloud, the display stops working. If I removed that piece of code, the display outputs correctly. As of now I am just printing "hello world" on the screen. Below is the code without the cloud connection:
/**************************************************************************
This is a library for several Adafruit displays based on ST77* drivers.
Works with the Adafruit 1.8" TFT Breakout w/SD card
----> http://www.adafruit.com/products/358
The 1.8" TFT shield
----> https://www.adafruit.com/product/802
The 1.44" TFT breakout
----> https://www.adafruit.com/product/2088
The 1.14" TFT breakout
----> https://www.adafruit.com/product/4383
The 1.3" TFT breakout
----> https://www.adafruit.com/product/4313
The 1.54" TFT breakout
----> https://www.adafruit.com/product/3787
The 2.0" TFT breakout
----> https://www.adafruit.com/product/4311
as well as Adafruit raw 1.8" TFT display
----> http://www.adafruit.com/products/618
Check out the links above for our tutorials and wiring diagrams.
These displays use SPI to communicate, 4 or 5 pins are required to
interface (RST is optional).
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
MIT license, all text above must be included in any redistribution
**************************************************************************/
#include <Adafruit_Fingerprint.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>
#include <Bounce2.h> // https://github.com/thomasfredericks/Bounce2
//#include <EEPROM.h>
#include <FlashStorage.h>
#if defined(ARDUINO_FEATHER_ESP32) // Feather Huzzah32
#define TFT_CS 14
#define TFT_RST 15
#define TFT_DC 32
#elif defined(ESP8266)
#define TFT_CS 4
#define TFT_RST 16
#define TFT_DC 5
#else
// For the breakout board, you can use any 2 or 3 pins.
// These pins will also work for the 1.8" TFT shield.
#define TFT_CS 1 // D v25 changes to use pin 1 for CS in MKR1500
#define TFT_RST -1 // Or set to -1 and connect to Arduino RESET pin // D v25 changes to use built in reset pinout in MKR1500
#define TFT_DC 2 // D v25 changes to use pin 2 for CS in MKR1500
#endif
//D v15 for audrino to connect to fingerprint sensor
//D v2
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 4);
#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
#define mySerial Serial1
#endif
// OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique
// to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and
// SCLK = pin 13. This is the fastest mode of operation and is required if
// using the breakout board's microSD card.
// For 1.44" and 1.8" TFT with ST7735 use:
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // D v21 uncomment this and comment the line below to use 1.44inch display.Need to change the display font in case I use 1.44"
// For 1.14", 1.3", 1.54", and 2.0" TFT with ST7789:
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // D v22 uncommment to use this display
#include <ArduinoHttpClient.h>
#include <ArduinoJson.h>
#include <MKRNB.h>
// Debug options
#define PRINT_AT true // Show or hide AT command output from the modem
// PIN Number
const char PINNUMBER[] = "";
char apn[] = "soracom.io";
char user[] = "sora";
char pass[] = "sora";
// Server details
const char server[] = "unified.soracom.io";
const int port = 80;
NBClient client;
GPRS gprs;
NB nbAccess(PRINT_AT);
HttpClient http(client, server, port);
// connection state
bool connected = false;
// Publish interval
long previousMillis = 0;
long interval = 1000; // milliseconds // D v2orginial value: long interval = 20000; chnages the time interval in which it will report
void setup(void) {
// tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab
// OR use this initializer (uncomment) if using a 1.3" or 1.54" 240x240 TFT:
tft.init(240, 240); // Init ST7789 240x240 // D v22 uncommment to use this display
// tft print function!
tftPrintTest();
pinMode(SARA_RESETN, OUTPUT);
digitalWrite(SARA_RESETN, LOW);
pinMode(SARA_PWR_ON, OUTPUT);
//Initialize serial and wait for port to open:
Serial.begin(115200);
//D v33
/*while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}*/
start_and_connect_modem();
}
void loop() {
tft.invertDisplay(true);
delay(500);
tft.setTextColor(ST77XX_GREEN);
tft.setCursor(0, 10);
tft.setCursor(0, 0);
tft.fillScreen(ST77XX_BLACK);
tft.println("hello world");
}
void tftPrintTest() {
tft.setRotation(3);
tft.setTextWrap(true);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextSize(2);
}
I am trying to write to the adafruit display using Arduino MKR1500 when it is connected to the internet. The issue I am facing is when I add the code to connect to the cloud, the display stops working. If I removed that piece of code, the display outputs correctly. As of now I am just printing "hello world" on the screen. Below is the code without the cloud connection:
/**************************************************************************
This is a library for several Adafruit displays based on ST77* drivers.
Works with the Adafruit 1.8" TFT Breakout w/SD card
----> http://www.adafruit.com/products/358
The 1.8" TFT shield
----> https://www.adafruit.com/product/802
The 1.44" TFT breakout
----> https://www.adafruit.com/product/2088
The 1.14" TFT breakout
----> https://www.adafruit.com/product/4383
The 1.3" TFT breakout
----> https://www.adafruit.com/product/4313
The 1.54" TFT breakout
----> https://www.adafruit.com/product/3787
The 2.0" TFT breakout
----> https://www.adafruit.com/product/4311
as well as Adafruit raw 1.8" TFT display
----> http://www.adafruit.com/products/618
Check out the links above for our tutorials and wiring diagrams.
These displays use SPI to communicate, 4 or 5 pins are required to
interface (RST is optional).
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
MIT license, all text above must be included in any redistribution
**************************************************************************/
#include <Adafruit_Fingerprint.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>
#include <Bounce2.h> // https://github.com/thomasfredericks/Bounce2
//#include <EEPROM.h>
#include <FlashStorage.h>
#if defined(ARDUINO_FEATHER_ESP32) // Feather Huzzah32
#define TFT_CS 14
#define TFT_RST 15
#define TFT_DC 32
#elif defined(ESP8266)
#define TFT_CS 4
#define TFT_RST 16
#define TFT_DC 5
#else
// For the breakout board, you can use any 2 or 3 pins.
// These pins will also work for the 1.8" TFT shield.
#define TFT_CS 1 // D v25 changes to use pin 1 for CS in MKR1500
#define TFT_RST -1 // Or set to -1 and connect to Arduino RESET pin // D v25 changes to use built in reset pinout in MKR1500
#define TFT_DC 2 // D v25 changes to use pin 2 for CS in MKR1500
#endif
//D v15 for audrino to connect to fingerprint sensor
//D v2
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 4);
#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
#define mySerial Serial1
#endif
// OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique
// to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and
// SCLK = pin 13. This is the fastest mode of operation and is required if
// using the breakout board's microSD card.
// For 1.44" and 1.8" TFT with ST7735 use:
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // D v21 uncomment this and comment the line below to use 1.44inch display.Need to change the display font in case I use 1.44"
// For 1.14", 1.3", 1.54", and 2.0" TFT with ST7789:
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // D v22 uncommment to use this display
#include <ArduinoHttpClient.h>
#include <ArduinoJson.h>
#include <MKRNB.h>
// Debug options
#define PRINT_AT true // Show or hide AT command output from the modem
// PIN Number
const char PINNUMBER[] = "";
char apn[] = "soracom.io";
char user[] = "sora";
char pass[] = "sora";
// Server details
const char server[] = "unified.soracom.io";
const int port = 80;
NBClient client;
GPRS gprs;
NB nbAccess(PRINT_AT);
HttpClient http(client, server, port);
// connection state
bool connected = false;
// Publish interval
long previousMillis = 0;
long interval = 1000; // milliseconds // D v2orginial value: long interval = 20000; chnages the time interval in which it will report
void setup(void) {
// tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab
// OR use this initializer (uncomment) if using a 1.3" or 1.54" 240x240 TFT:
tft.init(240, 240); // Init ST7789 240x240 // D v22 uncommment to use this display
// tft print function!
tftPrintTest();
pinMode(SARA_RESETN, OUTPUT);
digitalWrite(SARA_RESETN, LOW);
pinMode(SARA_PWR_ON, OUTPUT);
//Initialize serial and wait for port to open:
Serial.begin(115200);
//D v33
/*while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}*/
start_and_connect_modem();
}
void loop() {
tft.invertDisplay(true);
delay(500);
tft.setTextColor(ST77XX_GREEN);
tft.setCursor(0, 10);
tft.setCursor(0, 0);
tft.fillScreen(ST77XX_BLACK);
tft.println("hello world");
}
void tftPrintTest() {
tft.setRotation(3);
tft.setTextWrap(true);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextSize(2);
}
Below is the code with the cloud connection added
/**************************************************************************
This is a library for several Adafruit displays based on ST77* drivers.
Works with the Adafruit 1.8" TFT Breakout w/SD card
----> http://www.adafruit.com/products/358
The 1.8" TFT shield
----> https://www.adafruit.com/product/802
The 1.44" TFT breakout
----> https://www.adafruit.com/product/2088
The 1.14" TFT breakout
----> https://www.adafruit.com/product/4383
The 1.3" TFT breakout
----> https://www.adafruit.com/product/4313
The 1.54" TFT breakout
----> https://www.adafruit.com/product/3787
The 2.0" TFT breakout
----> https://www.adafruit.com/product/4311
as well as Adafruit raw 1.8" TFT display
----> http://www.adafruit.com/products/618
Check out the links above for our tutorials and wiring diagrams.
These displays use SPI to communicate, 4 or 5 pins are required to
interface (RST is optional).
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
MIT license, all text above must be included in any redistribution
**************************************************************************/
#include <Adafruit_Fingerprint.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>
#include <Bounce2.h> // https://github.com/thomasfredericks/Bounce2
//#include <EEPROM.h>
#include <FlashStorage.h>
#if defined(ARDUINO_FEATHER_ESP32) // Feather Huzzah32
#define TFT_CS 14
#define TFT_RST 15
#define TFT_DC 32
#elif defined(ESP8266)
#define TFT_CS 4
#define TFT_RST 16
#define TFT_DC 5
#else
// For the breakout board, you can use any 2 or 3 pins.
// These pins will also work for the 1.8" TFT shield.
#define TFT_CS 1 // D v25 changes to use pin 1 for CS in MKR1500
#define TFT_RST -1 // Or set to -1 and connect to Arduino RESET pin // D v25 changes to use built in reset pinout in MKR1500
#define TFT_DC 2 // D v25 changes to use pin 2 for CS in MKR1500
#endif
//D v15 for audrino to connect to fingerprint sensor
//D v2
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 4);
#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
#define mySerial Serial1
#endif
// OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique
// to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and
// SCLK = pin 13. This is the fastest mode of operation and is required if
// using the breakout board's microSD card.
// For 1.44" and 1.8" TFT with ST7735 use:
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // D v21 uncomment this and comment the line below to use 1.44inch display.Need to change the display font in case I use 1.44"
// For 1.14", 1.3", 1.54", and 2.0" TFT with ST7789:
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // D v22 uncommment to use this display
#include <ArduinoHttpClient.h>
#include <ArduinoJson.h>
#include <MKRNB.h>
// Debug options
#define PRINT_AT true // Show or hide AT command output from the modem
// PIN Number
const char PINNUMBER[] = "";
char apn[] = "soracom.io";
char user[] = "sora";
char pass[] = "sora";
// Server details
const char server[] = "unified.soracom.io";
const int port = 80;
NBClient client;
GPRS gprs;
NB nbAccess(PRINT_AT);
HttpClient http(client, server, port);
// connection state
bool connected = false;
// Publish interval
long previousMillis = 0;
long interval = 1000; // milliseconds // D v2orginial value: long interval = 20000; chnages the time interval in which it will report
void setup(void) {
// tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab
// OR use this initializer (uncomment) if using a 1.3" or 1.54" 240x240 TFT:
tft.init(240, 240); // Init ST7789 240x240 // D v22 uncommment to use this display
// tft print function!
tftPrintTest();
pinMode(SARA_RESETN, OUTPUT);
digitalWrite(SARA_RESETN, LOW);
pinMode(SARA_PWR_ON, OUTPUT);
//Initialize serial and wait for port to open:
Serial.begin(115200);
//D v33
/*while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}*/
start_and_connect_modem();
}
void loop() {
tft.invertDisplay(true);
delay(500);
tft.setTextColor(ST77XX_GREEN);
tft.setCursor(0, 10);
tft.setCursor(0, 0);
tft.fillScreen(ST77XX_BLACK);
tft.println("hello world");
}
void tftPrintTest() {
tft.setRotation(3);
tft.setTextWrap(true);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextSize(2);
}
void post_data(String postData) {
//Serial.println("making POST request");
String contentType = "application/json";
http.post("/", contentType, postData);
// read the status code and body of the response
int statusCode = http.responseStatusCode();
String response = http.responseBody();
/*Serial.print("Status code: ");
Serial.println(statusCode);
Serial.print("Response: ");
Serial.println(response);*/
}
void start_and_connect_modem(){
pinMode(SARA_RESETN, OUTPUT);
digitalWrite(SARA_RESETN, LOW);
pinMode(SARA_PWR_ON, OUTPUT);
// Send Poweron pulse
digitalWrite(SARA_PWR_ON, HIGH);
delay(150);
digitalWrite(SARA_PWR_ON, LOW);
delay(500);
// Turn on the modem
if (Serial) Serial.print(">>> Turning on modem...");
if (MODEM.begin()) {
if (Serial) Serial.println(" done!");
} else {
if (Serial) Serial.println(" error, could not turn on modem! Try power-cycling.");
return;
}
while (!MODEM.noop());
MODEM.sendf("ATI9");
MODEM.waitForResponse(2000);
// Run AT commands to reset the modem to global default settings
Serial.print(">>> Resetting modem to default settings...");
MODEM.sendf("AT+CFUN=0");
MODEM.waitForResponse(6000);
MODEM.sendf("AT+UMNOPROF=2");
MODEM.waitForResponse(2000);
MODEM.sendf("AT+CFUN=15");
MODEM.waitForResponse(6000);
MODEM.sendf("AT+CFUN=0");
MODEM.waitForResponse(2000);
MODEM.sendf("AT+UMNOPROF=0");
MODEM.waitForResponse(2000);
MODEM.sendf("AT+CFUN=15");
MODEM.waitForResponse(2000);
MODEM.sendf("AT+URAT=7");
MODEM.waitForResponse(2000);
//D v33
/*MODEM.sendf("AT+UBANDMASK?");
MODEM.waitForResponse(6000);*/
Serial.println(" done!");
delay(2000);
// attempt to connect to GSM and GPRS:
Serial.print("Attempting to connect to GSM and GPRS");
//Serial.println();
connect_modem();
}
void connect_modem(){
// After starting the modem with GSM.begin()
// attach the shield to the GPRS network with the APN, login and password
while (!connected) {
if ((nbAccess.begin(PINNUMBER, apn, user, pass) == NB_READY) &&
(gprs.attachGPRS() == GPRS_READY)) {
connected = true;
} else {
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("You're connected to the network");
}
Can someone please let me know what I am missing?